The following codes must be sent from the application that is printing the check data (the amount, data, payee, etc.) This operation normally requires a change to the source code.
Use the MICR gauge to determine the X coordinate of the first character of the sample MICR line. The first character of the Routing field (character 43) starts at 5.6875 inches from the right edge of the paper, which on a letter width page is 2.8125 inches from the left edge of the paper. We must reduce the position by 1/4 inch to compinsate for the non-printable margin between the edge of the paper and the first place all laser printers are allowed to print so we are left with 2.5625 or 1845/720ths of an inch. Each character space to the right adds 1/8 inch or 90/720ths.
For example: Character 53 is at 945/720ths (starting from character 43 at 1845/720ths subtract 10 times 90/720ths) and the next space to the right would be 945+90=1035.
For the Y-coordinate, measure from the top of the form to the top of the MICR line and subtract .25" then multiply by 720. Example 3.15 inches less 0.25" times 720 is 2088. You may need to fine tune the X and Y coordinates for each printer so we very strongly recommend that these positions be stored in an "initialization" file or record that can be easily adjusted by the operator.
h for horizontal, V for vertical. In our example this would be:
For Example, send:
/(check number)/ &89317050&3458989
If the font being used to print the data is not known, this slightly more complex version can be used.
<esc>&f0S<esc>&a<xposition>h<yposition>V<esc>&f0S<SO><esc>)8M<esc>)s0p8h12v0s0b80T<the MICR line><esc>&f1S<esc>&a<xcheck#offset>H<the check number><SI><esc>&f1S
It is easier if the last line on the check is the MICR line. The MICR line contains a sequence of different printer codes. The 1st part of the line contains the printer codes that set the x,y coordinates of the MICR line. Before this, the current cursor position can be saved with the sequence <esc>&f0S. The printer codes for setting the coordinates are - <esc> & a <xposition>h<yposition>V (spaces added for clarity) Note that due to variations of the printers and check stock, the <xposition> and <yposition> may need to be adjusted by the end user.
If the font that the other data should print be printed in is not known or will not be set before each part of data is printed, the <SI> character/command can be used to select the alternate font selection available in PCL printers. Changes made in this alternate selection space should not affect the primary font selected and another character/command can be used after printing the MICR line to switch back to the primary font. This is not necessary if the font to be used for other data on the check is known; in that case the font selection string for that font can simply be sent after printing the MICR line so that the remaining data is printed in the correct font. The PCL codes that engage the MICR printing are:
<esc>(8M <esc>(s0p8h12v0s0b80T (if the <SI> is not used) or
<esc>)8M <esc>)s0p8h12v0s0b80T (if the <SI> is used. Reversing the ")" selects the font in the secondary space.)
After these codes are sent, the bank & account info are sent. Next the positioning of the check # needs to be sent. These codes are - <esc>&a<xposition>H .It is possible to avoid having to adjust the check number position separately from the rest of the MICR line by using a relative position specified with a plus or minus sign before the number. Refer to the MICR positioning gauge for more information on this. Next, the check# is sent. The check# may need to be padded with leading zeros and may need a "/" before or before and after (up to the bank). Next, the shutdown MICR printing codes are sent. These codes are -
<SO> (if the <SI> code was used) or
<esc>(8U <esc>(s0p10h0s0b4099T ( if the <SI> code was not used and data is printed in the standard Courier font at 10CPI) or
(use the font selection sequence from the printers typeface list for other fonts if the <SI> code is not used and the data is not in Courier)
Finally, attention should be paid to the position that the next piece of regular data will be printed. If the save cursor position code is used (see above) the position of the cursor prior to printing the MICR line can be restored with the command <esc>&f1S allowing printing to continue as if nothing had happened. If the MICR line is the last item printed on the page (not last by position but last by time sequence) then the print position will automatically be reset for the next page when the current page is finished.
The order in which the bank, account, and check number print may vary by bank. Making these codes user configurable will add to the flexibility of the program.
There cannot be any Carriage Return - LineFeed codes in any part of the above sequence.
We are working on a form that will collect the required data from an internet form and generate the best, most complex, appropriate code for your application while placeing the bulk of the code in the e-form itself so that you don't have to send anything more than a few simple commands from your system. The only required commands would be one to set the Cursor Position for the MICR line (see above) and another to call the code from the e-form <esc>&f#y2X
Alternativly, the developer can save time by not positioning the variable data. Just print each piece of data with esc&f#yX in front of it and esc&f1X after it. Replace # with a unique ID number for each data item, starting with 1000. The first piece of data (perhaps the date) is 1001, the next piece (perhaps the customer name) is 1002, and so on. Select the check e-form via the Macro ID command and use the Macro Execute command. The macro can now position each bit of data, and select its font, size, color, etc.. including the MICR line and the copy of the check number on the MICR line. There is no need to send a data item more than once as the Macro can print each data item any number of times in any position, font, size, etc... This allows your customers to have the data printed in a more attractive format and to move the data or emphasise an item at any time via a new or updated e-form. For example, a customer may decide that they wish to print a new accounting telephone number on each check to aid in processing. The cost of changing the print positions of the data in the program would make this cost prohibitive but with this method, one e-mailed e-form is all that is required. Standard ID number mappings have been setup for e-Forms data formatted checks.
|escE||Reset the printer and prepare for a new page|
|esc&f1021yX1234esc&f1X||check number 1234|
|esc&f1001yXJames Newtonesc&f1X||to James Newton|
|esc&f1029yX$1,000,000.00esc&f1X||for one million dollars|
|esc&f1030yXOne million dollars and no centsesc&f1X||Yes! Really one million dollars!|
|esc&a428h870V||Position the MICR line (the 428 and 870 will need to be adjustable)|
|esc&f11Yesc&f2X||Overlay the check face, MICR line and print all the data to produce the
Since no data has actually been printed, we can also setup the page size, tray, etc...
One important point: It may be necessary to fine tune the X and Y coordinate position of the MICR line for each printer. Accurate position of the MICR line will affect the ability of the bank to automatically process the checks more than any other common factor. These custom settings can be coded in the e-form but it would be better to store them in an "initialization" file or record that can be easily adjusted and send them to the printer just like the other data.
I am creating checks with an aspx form, but need to embed pcl code to access a source technologies micr printer that has a resident micr font. How do I embed escape characters that turn on the micr font, print and then turnoff the micr font to print the remainder of the document? currently I am using a computer resident micr font for testing purposes and it works great running through our hp laserjet, but must use the micr printer.James Newton of James Newton's Massmind replies: The documentation for selecting the font in that printer must come from the maker of that printer. Try here: http://www.sourcetech.com/support/manuals.asp.+
I'm having trouble with a new bank accepting laser printed checks because of the positioning of the MICR line. They tell me the entire MICR line needs to be moved 5/32" to the right. The PCL values in the micr table of our application is &a940h7400VJames Newton replies: The &a#h#V command uses decipoints or 720ths of an inch. So 5/32 = 0.15625 * 720 = 112. The # before the H is the horizontal position in the 4th quadrant (e.g. larger numbers move to the right) so you want to change the 7400 to 7512. I would be curious to know what your application program is?+
What value would shift it 5/32" to the right?
|file: /Techref/language/pcl/micr.htm, 14KB, , updated: 2008/12/24 14:31, local time: 2021/10/25 07:53,
|©2021 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions?|
<A HREF="http://www.piclist.com/techref/language/pcl/micr.htm"> Printing a MICR line using the MICR font from a SIMM or Cartridge.</A>
|Did you find what you needed?|
PICList 2021 contributors:
o List host: MIT, Site host massmind.org, Top posters @20211025 Neil, Harold Hallikainen, Alan Pearce, RussellMc, Bob Blick, Allen Mulvey, Dwayne Reid, madscientistatlarge, Sean Breheny, Justin Richards,
* Page Editors: James Newton, David Cary, and YOU!
* Roman Black of Black Robotics donates from sales of Linistep stepper controller kits.
* Ashley Roll of Digital Nemesis donates from sales of RCL-1 RS232 to TTL converters.
* Monthly Subscribers: Gregg Rew. on-going support is MOST appreciated!
* Contributors: Richard Seriani, Sr.
Welcome to www.piclist.com!