|ESC/P & ESC/P2 Printer Codes|
Many printer code lists are either in code order (OK for hacking but useless for setting up a print job!) or grouped in types (so for 'bold print' you would need to first find out then always remember that it's in the 'style' group (or some other name); for a new line you would probably have to know that it's in the 'move' group. But THIS list is in simple alphabetic order of the function needed. So, if, for example, you want to start a new line, you simply look under N for New Line.
Many functions are entered several times under different names, eg, 'new line' is also under 'line feed' because not everyone uses the same definitions. If any of YOUR preferred definitions are not there you can edit or add to the list in a web page editor or in any plain ASCII text editor if you know how to edit simple html text.
The codes themselves are decimal values (separated by commas where there is more than one value for a function). They can be used from most programming languages as well as some applications such as text editors which permit you to enter printer codes.
Typically in BASIC you would enter them by using LPRINT CHR$(n). For example, to print with emphasised characters, the codes are 27,69 which would be entered in BASIC as LPRINT CHR$(27);CHR$(69).
Note that when a value is the ASCII code for a quotable character then the character can be used (within quotes) instead. So, whereas 27 is not quotable, 69 is because it is the ASCII value for the capital letter "E". So, instead of LPRINT CHR$(27);CHR$(69) you could, if you prefer, use LPRINT CHR$(27);"E" which sends exactly the same codes to a printer.
Where a code uses 0 and 1 as ON and OFF flags then you can normally use 48 ("0") and 49 ("1") as alternatives.
Some BASIC language versions in some modes always add a line feed after LPRINT. If you keep getting extra line spaces then you might try adding a semi-colon (;) at the end of the LPRINT string, for example, LPRINT CHR$(27);CHR$(69);
QUICK BASIC has some terrible quirks if sending codes. You might well find it sending a line feed code in the middle of sending graphic data! If you get problems with some codes not doing what they should then instead of LPRINT try instead the following...
OPEN "PRN" FOR BINARY AS #3
The above 'OPEN' line need only be used once at the start of the program and need not be used before every PRINT #.
The #3 at the end of the 'OPEN' line can be any value from 1 to 15 but you cannot use the same number as is being used for some other operation at the same time (eg, if you have opened a file for reading or writing).
"LPT1" or "LPT2" can be used instead of "PRN" but "PRN" works for both whereas "LPT1" would fail on a system configured for "LPT2"
In BASIC, string variables can be used to represent codes, for example..
Then you can build up multiples like...
bold$=emph$ + dubStrike$
Thus, when you want to print in bold print...
LPRINT "This is "; bold$;"bold";boldOFF$
In the list, variable codes are represented by labels which you need to replace with actual values (or programming varaibles) when used. For example, you might substitute 5 for n (depending on what you want to achieve and what the range of the parameter allows). Where more explanation is needed an asterisk with a number is shown, eg, *1 and *2. Details of these are explained at the end of the list.
In the list, lo, hi means a two byte value between 0 and 65535. You replace lo and hi with the values you want. To calculate lo and hi, take your original value (example: the length of image data, let's say 700 bytes long. Divide it by 256 which is 2 and a remainder of 188. hi is the 2 and lo is the remainder so it would be put in as 188,2 to replace lo,hi when actually applying any of the code sequences listed below. lo,hi must never be greater than the graphics mode selected will allow of dots on one line.
Not all printers will implement all the codes nor is the list complete so some printers might implement more codes. The list shows the most commonly-used codes.
These codes will not be effective from many Windows programs (that is, from the user's point of view) so don't expect Notepad to print wide print after you have sent the wide code!
Some codes are not implemented immediately but for example after the next line feed. So if nothing seems to happen it does not necessarily mean there is a fault. However, if when printing images you do not send the correct data length, the printer might be expecting more image data and will treat further codes or even text as more image data. This might be buffered and the printer will do nothing. Even using 27,64 will not clear the printer; you might have to switch it off or send enough image data.
Here's the reference list...
The Epson ESC/P & ESC/P2 Printer Codes
FUNCTION (ALPHABETICAL ORDER)
|27,52||Alternate characters ON (usually italic) *2|
|27,53||Alternate characters OFF *2|
|7||Beep or bell|
|27,69||Bold semi (emphasized) characters ON|
|27,70||Bold semi (emphasized) characters OFF|
|27,85,0||Both directions printing|
|27,78,n||Bottom margin n lines ON *4|
|27,79||Bottom margin OFF *4|
|13||Carriage Return (return to start of line)|
|27,105,1||Character-by-character printing (immediate)|
|27,52||Characters (alternate) ON *2 (usually italic)|
|27,53||Characters (alternate) OFF *2|
|27,82,n||Characters (national) set n *5|
|27,37,0||character set = normal|
|27,37,1||character set = user-defined|
|27,38,n,n,n...||character set DEFINE|
|27,58,0||character set Roman to RAM|
|27,58,1||characters Sans Serif to RAM|
|27,64||Clear all codes|
|127||Clear printer buffer|
|15||Condensed Characters ON|
|18||Condensed Characters OFF|
|27,64||Defaults set all (initialize printer)|
|127||Delete (from buffer) last character|
|24||Delete(from buffer) last line|
|14||Double-width characters ON *6|
|20||Double-width characters OFF *6|
|27,87,1||Double-width characters ON *6|
|27,87,0||Double-width characters OFF *6|
|27,101,1,n||Down tab SET n (regular)|
|27,66,n,n,n...||Down tab SET (irregular)|
|27,98,c,n,n...||Down tab SET channels|
|27,47,c||Down tab channel SELECT|
|11||Down tab as set|
|27,102,1,n||Down tab n lines|
|120,0||Draft quality ON (LQ or NLQ off) *8|
|120,1||Draft quality OFF (LQ or NLQ) *8|
|27,77||Elite (12 cpi) characters ON|
|27,80||Elite (12 cpi) characters OFF|
|27,69||Emphasized characters ON|
|27,70||Emphasized characters OFF|
|27,56||Empty paper disable|
|27,57||Empty paper enable|
|127||Empty the printer buffer|
|14||Enlarged (wide) characters ON (one-line) *6|
|20||Enlarged (wide) chars OFF (one-line) *6|
|27,87,1||Enlarged characters ON *6|
|27,87,0||Enlarged characters OFF *6|
|127||Erase (from buffer) last character|
|24||Erase (from buffer) last line|
|27,115,1||Faint/fast print ON|
|27,115,0||Faint/fast print OFF|
|27,115,1||Feint/fast print ON|
|27,115,0||Feint/fast print OFF|
|27,37,0||font = normal|
|27,37,1||font = user-defined|
|27,116,n||Font select n|
|12||Feed Form (form feed)|
|12||Feed Page (form feed)|
|12||Feed Sheet (form feed)|
|27,58,0||font Roman to RAM|
|27,58,1||font Sans Serif to RAM|
|12||Form Feed (new page)|
|27,67,n||Form length n lines|
|27,67,0,n||Form length n inches|
|27,42,*1,lo,hi||Graphics (variable resolution)|
|27,75,lo,hi||Graphics (480 dots-per-line resolution)|
|27,76,lo,hi||Graphics (960 dots-per-line resolution)|
|27,89,lo,hi||Graphics (960 dots-per-line faint/fast)|
|27,90,lo,hi||Graphics (1920 dots-per-line resolution)|
|27,60||Home (line restart)|
|27,42,*1,lo,hi||Image mode (variable) *1|
|27,75,lo,hi||Image (480 dots-per-line resolution)|
|27,76,lo,hi||Image (960 dots-per-line resolution)|
|27,89,lo,hi||Image (960 dots-per-line resolution faint/fast)|
|27,90,lo,hi||Image (1920 dots-per-line resolution)|
|27,105,1||Immediate print character-by-character|
|27,64||Initialize printer (clear all codes)|
|27,52||Italic characters ON *2|
|27,53||Italic characters OFF *2|
|27,108,n||Left margin n characters|
|120,1||Letter quality ON *8|
|120,0||Letter quality OFF *8|
|10||Line Feed (new line)|
|27,105,0||Line printing (buffered)|
|27,48||Line space 1/8th"|
|27,49||Line space 7/72th"|
|27,50||Line space 1/6th"|
|27,51,n||Line space n/216th"|
|27,74,n||Line space n/216th" *3|
|27,65,n||Line space n/72th"|
|120,1||LQ letter quality ON *8|
|120,0||LQ letter quality OFF *8|
|27,108,n||Margin (left) n characters|
|27,81,n||Margin (right) n characters|
|27,78,n||Margin(vertical) n lines ON*4|
|27,79||Margin (vertical) OFF *4|
|27,33,n||Master style select *7|
|27,82,n||National character set n *5|
|10||New Line (line feed)|
|12||New Page (form feed)|
|12||New Sheet (form feed)|
|120,1||NLQ letter quality ON *8|
|120,0||NLQ letter quality OFF *8|
|27,107,0||NLQ font = Roman|
|27,107,1||NLQ font = Sans Serif|
|27,56||Out of paper disable|
|27,57||Out of paper enable|
|27,106,n||Page backwards n/216"|
|12||Page feed (form feed)|
|27,25,49||Page feed 1 SET|
|27,25,50||Page feed 2 SET|
|27,25,70||Page front tractor SET|
|27,25,66||Page rear tractor SET|
|27,67,n||Page length (n lines)|
|27,67,0,n||Page length (n inches)|
|27,106,n||Page upwards n/216"|
|27,56||Paper empty disable|
|27,57||Paper empty enable|
|12||Paper feed (form feed)|
|27,25,49||Paper feed 1 SET|
|27,25,50||Paper feed 2 SET|
|27,25,70||Paper front tractor SET|
|27,25,66||Paper rear tractor SET|
|27,56||Paper out disable|
|27,57||Paper out enable|
|27,67,n||Paper length n lines|
|27,67,0,n||Paper length n inches|
|27,78,n||Perforation skip n lines ON|
|27,79||Perforation skip OFF|
|27,80||Pica (10 cpi) characters ON|
|27,77||Pica (10 cpi) characters OFF|
|27,42,*1,lo,hi||Picture mode (variable)|
|27,75,lo,hi||Picture (480 dots-per-line resolution)|
|27,76,lo,hi||Picture (960 dots-per-line resolution)|
|27,89,lo,hi||Picture (960 dots-per-line resolution faint/fast)|
|27,90,lo,hi||Picture (1920 dots-per-line resolution)|
|127||Remove (from buffer) last character|
|24||Remove(from buffer) last line|
|27,60||Restart line (home)|
|27,106,n||Reverse line feed n/216"|
|27,81,n||Right margin n characters|
|9||Right tab as set|
|27,101,0,n||Right tab SET n (regular)|
|27,68,n,n,n...||Right tab SET (variable)|
|27,107,0||Roman (NLQ font)|
|27,107,1||Sans Serif (NLQ font)|
|27,69||Semi-bold (emphasized) characters ON|
|27,70||Semi-bold (emphasized) characters OFF|
|12||Sheet feed (form feed)|
|27,25,49||Sheet feed 1 SELECT|
|27,25,50||Sheet feed 2 SELECT|
|27,25,70||Sheet front tractor SET|
|27,25,66||Sheet rear tractor SET|
|27,67,n||Sheet length n lines|
|27,67,0,n||Sheet length n inches|
|27,78,n||Skip perforation n lines ON *4|
|27,79||Skip perforation OFF *4|
|13||Start of line (CR)|
|27,60||Start of line (home)|
|27,33,n||Style Master select *7|
|27,101,0,n||Tab right SET n (regular)|
|27,68,n,n,n...||Tab right SET (variable)|
|9||Tab right as set|
|27,102,0,n||Tab right n characters|
|27,101,1,n||Tab down SET n (regular)|
|27,66,n,n,n...||Tab down SET (irregular)|
|27,98,c,n,n...||Tab down SET channels|
|27,47,c||Tab down channel SELECT|
|11||Tab down as set|
|27,102,1,n||Tab down n lines|
|27,78,n||Top margin n lines ON *4|
|27,79||Top margin OFF *4|
|27,106,n||Upward line feed n/216"|
|11||Vertically tab down|
|14||Wide characters ON (one-line) *6|
|20||Wide characters OFF (one-line) *6|
|27,87,1||Wide characters ON *6|
|27,87,0||Wide characters OFF *6|
*1 is the mode in Graphics(variable resolution) The *1 should be replaced with:
0 = single density = 480 dots a
lo,hi must not be greater than the dots a line shown because that is the maximum (it can of course be less)
*2 Alternate Characters. Many printers have an alternate character set that can be switched to. Typically this might be the same character set as the main one but in italic (sloping) form.
*3 Line space n/216th" (27,74,n) is temporary for that line only and de- faults to previous setting after a line feed. That is, it clears itself. To set up n/216th" line spacing permanently (until you clear it with another code) use 27,51,n
*4 Top and Bottom margins: 27,78,n and 27,79 are actually skip perforation ON and OFF. The printer normally counts DOWN the number of lines left to print on the page (default total normally 66 but can be changed with the Page Length code).
If this skip perforation code is ON then when the printer counts down to 'n' it prints 'n' blank lines.
If you initially line up the top of the paper in line with the print head then you will get no margin at the top(unless blank lines are included in the text being printed) but 'n' blank lines at the bottom.
To get an equal margin top and bottom you need to either wind down or manually line feed the paper down half of n lines at the top of the first page (these line feeds can be included in a program that is printing a document). When the printer tries to print n blank lines at the bottom of each page it will then only print half at the bottom and half at the start of the next page.
*5 National character set. There are variations in the character set for different countries. For example, Character 35 is the hash sign "#" in the American selection but a pound sign "£" in the UK. The codes are 27,82,n where n is:
Probably most printers are set for USA by default. Not all printers cover all the countries shown. The first four are most common.
*6 Wide (enlarged) characters mode using 27,14 is only temporary for that line and is cleared when printing starts a new line. Likewise 27,20 only cancels one-line wide print. Wide characters using 27,87,1 are permanent until switched off with code 27,87,0.
*7 Master style select 27,33,n where
*8 Whether codes 27,120,1 will provide Letter Quality (LQ) or Near Letter Quality (NLQ) depends on your printer. 9-pin printers typically will only give NLQ. Draft quality is simply disabling LQ or NLQ to print normally.
|contact: email us!|