The OMR marks I have used have been lines, defined to the dimensions required for your OMR reader. No special font. The OMR mark is created in a subform, like other components of your form, with "Always position in same vertical location" selected. How do you get them onto your output?
When does your reader expect to see these characters? Does it want you to identify the last page of a set, or the first page, or both? Do you need to identify all the pages in a set?
Simple logic in the JFPreamble will be required to specify when to lay them down.
For example: You need to identify the last and first pages in a set.
When you start the first set you will add the "start set" subform to the first page. When a set of pages ends then you will add the "end set" subform to the current page before you start a new page, where you will add the "start" subform. Don't forget to add the "end set" subform to the current page at the end of file.
You may have to include some script to handle the first page.
Hi George, Thanks for the reply.
We currently use lines also simply place on the main (envelope face) page.
The reader requires all pages (first, middle & last) in the set to ensure all the pages for the envelope are present. If a page is missed or out of order then the inserter stops.
Does what you suggest handle both static & dynamic pages with multiple subforms?
Any sample information you have available would be greatly appreciated.
You can use this approach to handle static and dynamic forms.
If there is only 1 page in a set then it will contain the "first page" and "last page" marks.
The "last page" mark is driven by a change of set and by end of file.
1. Can the first page also contain the "middle page" mark?
2. Can the last page also contain the "middle page" mark?
The answers to the two questions above will determine how you place the "middle mark" on the page. As you leave a page you either place it on the current page (1) or place it on the next page (2). You can specify this on the 'At End-Of-Page' tab of any subform that will overflow a page.
To handle the first page, use the 'if' statement to test the value of a flag. If it is 0 (first page of output) then set flag to 1, add the "first page" mark to the page and add subform, otherwise (change of set), add "last page" mark to current page, get new page, add "first page" mark and add subform. See below:
^define First_sw 0
First_sw is a flag to indicate whether this is the first page;
First is the "First page" subform;
Line1 is the subform containing field JF01;
Last is the "Last page" subform.
To handle the end of file:
^define group:JfEndData!EndData @group:D_Last.
You would include the "first page" mark on the first page of your template, and the "middle page" mark on the continuation page (middle page).
You would have to handle the change of set and end of file conditions.
I hope this helps.
Thanks again for your reply.
For your question 1 & 2, if the middle omr mark is on any other page but a middle page then the inserter will stop.
Sorry but one thing I did not mention was that the dat file is not one document but many documents. That is one file will output documents for multiple customers.
From my understanding, handling the above requires two passes as on the first pass central does not know which page is the last therefore can not determine first, middle & last pages.
Any elaboration on what is required would be would be great.
The issue of the two passes is only relevant if you are including page "x of y" on your output, because it has to count the number of pages.
OMR marks can be added as the pages are produced and require only one pass. The conditions for first, middle and last pages are checked as the document is created - as pages overflow, new sets are processed, and the end of file is encountered.
If the "middle" mark can only be on middle pages then merge has to be able to determine when it is on a first page.
Before the "middle" mark is placed check to see if the current page is the first page of the set. If it is then do not place the "middle" mark, otherwise place it. This check is done on the D_Middle group event.
[My three mark subforms are First, Middle and Last.]
When a new set is started a flag is used to indicate the change in status.
The new_set flag is defined as 1. The first record will start a new set.
^define new_set 1
When a new set is started and it is not the first set then the new_set flag should be set on (1).
[JF01 is the field that is used to identify a new set.]
^define group:JF01!FldNotAvail @(if'@user:first_sw'=='0','\defineresolveuser:first_sw,1@group:D_First\groupG_line1\field JF01','@group:D_last\defineresolveuser:new_set,1\page1@group:D_first\groupG_line1\fieldJF0 1')).
When processing for the middle mark, if the new_set flag is on (1) then set it off (0), otherwise lay down the "middle" mark.
^define group:D_Middle @(if('@user:new_set'=='1','\defineresolveuser:new_set,0','\positionabsolute,"0.100","2.16 7",in\subformMiddle')).
This script, plus the first_sw and JfEndData definitions from previous message, is all I have in my JfPreamble script.
For this script to work properly the end-of-page condition defined on the 'At End-Of-Page' tab must be to place the subform on the current page. This is done for all subforms that may cause a page overflow.
If you set the condition for the next page then this script will not work, but could be used as a guideline.
There's not much more I can tell you about this.
The easiest way to apply OMR marks to any document is to use a handy Windows application I found called Mail Markup.
It operates in a similar way to a printer driver which means you can use it alongside almost any application.
Here is the Web page that promotes it...
I hope you find it as useful as I have.