please dont rip this site

PCL Command Sequences

All PCL Command Sequences begin with the escape character (an ASCII control code with a hex value of 1Bh, 27 decimal) and end with the first upper case letter (or "=" note: "@" is considered an uppercase letter). In between there is either nothing (the PCL command is just the escape and a single upper case letter) or a set of one or two characters and often a numerical value. The single character commands are listed at the end of the "Decoded PCL Commands" table below. The first non-uppercase character after the escape will be a symbol between "!" and "\" (most commonly one of %,&,( or *) which is called the "parameter." After the parameter there is normally a lower case letter called the "group." After this there may be a numeric value. If no value is present, the value is assumed to be zero. Finally the ending uppercase letter is called the "command."

See Examples, Tutorials below for some samples of PCL commands and the Decoded Commands List for detailed information. Note that these use the text "Ec" to mean the escape character. Since the escape character is not printable, it is very hard to convey in human readable text. Common abreviations are Esc, Ec, [], or <-. See the ASCII page for more information on the codes. That page also allows you to convert between hex, decimal or ASCII codes.

ASCII control commands  and HPGL (after PCL command to enter HPGL mode) are also acceptable in PCL 5. Printers that support PJL (Laserjet 4 and later) should be told to use PCL should be entered via the PJL ENTER LANGUAGE command.

Most of the problems people have with PCL are caused by not being aware of all the codes that are being sent to the printer and how they interact. Application programs, the language engine under the application, operating system printer drivers, network print que, and any number of other things will add codes to the print job before it reaches the printer and can cause the printer to behave in ways that are not expected. To understand why the printer prints as it does, you need to see what it saw.

There is a code that will allow you to see what is actually being recieved by the printer. Send esc&s0CescY to the printer before you print your problem job or as the first codes in the problem job. This command tells the printer to print all following commands rather than excecute them. You will get very funny looking printouts, but if you "decode" them by looking at each PCL command that the printer recieved and learning what it does (see the list below), you will begin to understand why the printer printed what it did.

If you don't see any change after sending these "debug" codes before your main job, your network connection may be resetting the printer between jobs. You may need to move the printer to a local parallel port connection to debug the problems. When you do see the print codes and you want to return the printer to normal operation, you must cycle the printer power to get the printer out of this debug mode.

After the escape character...
bits to
max range known (commonly used) values
from to
parm 4 21h 2Fh %,&,(,),*
except for 9, E, Y, Z, and = which are considered commands (two character - no parm, group, or value) but come directly after the escape.
grp 4 60h 7Eh a,b,c,d,f,l,p,r,s,t,u,v
value 15-16 -32767 +65535 will be either 0 to 32767, -32767 to +32767, or 0 to 65535. May have a decimal.
cmd 5 60h 7Eh a,b,c,d,e,f,g,h,l,m,n,o,p,q,r,s,t,u,v,x,y,z
When another value and cmd will be sent for the current parm and grp.
40h 5Eh @, A,B,C,D,E,F,G,H,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
When this is the last value and cmd for the current parm and grp

parm: <!...\>?.
group: <`...~>?.
digits: <0...9>?.
number: digits | '.' | digits ?.
               | ?.
value: | sign number ?
       | number ?
esc | parm | group [ value | lowercase? command ? PCLParmCmd ]
                           | 'W' @+value ? PCLParmCmd .
                           | uppercase? command ? PCLParmCmd .
    | '=' ? PCLSingleCmd .
    | '9' ?
    | 'E' ?
    | 'Y' ?
    | 'Z' ?
    | error .


Examples, tutorials

See also:




file: /Techref/language/pcl/index.htm, 59KB, , updated: 2014/9/29 17:12, local time: 2017/1/23 14:59,

 ©2017 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?
Please DO link to this page! Digg it! / MAKE! / 

<A HREF=""> PCL5 Printer Language Reference, PCL printer, printer</A>

After you find an appropriate page, you are invited to your to this massmind site! (posts will be visible only to you before review) Just type in the box and press the Post button. (HTML welcomed, but not the <A tag: Instead, use the link box to link to another page. A tutorial is available Members can login to post directly, become page editors, and be credited for their posts.

Link? Put it here: 
if you want a response, please enter your email address: 
Attn spammers: All posts are reviewed before being made visible to anyone other than the poster.
Did you find what you needed?

  PICList 2017 contributors:
o List host: MIT, Site host, Top posters @20170123 Van Horn, David, RussellMc, David Duffy (AVD), IVP, Bob Blick, Sean Breheny, speff, Justin Richards, Matthew Miller, Richard Prosser,
* 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!