The following information is provided as is, and the authors take no responsibility for the correctness.
| Serbo-Croatian translation of this page can be found here: PCL - HP jezik za opis strana |
HP created PCL to provide an efficient way to control printer features across many different printing devices. PCL was originally devised, in the early 1980s, for HP's dot matrix and Inkjet printers. The first printer in HP's LaserJet series, the HP LaserJet was released in 1984 with the PCL 3 Language. The current version is PCL XL.
PCL commands are compact escape sequence codes that are embedded in the print job before being sent to the printer. HP PCL formatters and fonts are designed to quickly translate application output into high-quality, device-specific, raster print images.
PCL is the most widely spread printer language in the laser printer market today. Most laser printer manufacturers use an implementation of PCL PCL 5e or PCL XL for their printers.
PCL versions differ in functionality (e.g. font type support: bitmap fonts, scalable fonts (Intellifonts, TrueType fonts), raster graphic compression methods, HP-GL/2 graphic support).
around 1980 - Print and Space functionality is the base set of functions provided for simple, convenient, single-user workstation output. ggg
around 1980 - EDP (Electronic Data Processing)/Transaction functionality is a superset of PCL 1. Functions were added for general purpose, multi-user system printing.
1984 - Office Word Processing functionality is a superset of PCL 2. Functions were added for high-quality, office document production.
It allowed for the use of a limited number of bitmapped fonts and graphics, and supported HP-GL. PCL 3 was widely imitated by other printer manufacturers and was referred to by these companies as “LaserJet Plus Emulation.”
(Printers: HP DeskJet family, HP LaserJet series printer, HP LaserJet Plus series printer)
Used by DeskJet and DesignJet family of printers.
Used by DeskJet and DesignJet family of printers.
Used by DeskJet and DesignJet family of printers. Now used in PhotoSmart also.
Used by DeskJet and DesignJet family of printers. Uses RTL
Used by DeskJet and DesignJet family of printers. Uses RTL
1985 - Page formatting functionality is a superset of PCL 3. Supported macros, larger bitmapped fonts and graphics.
(Printers: HP LaserJet II, HP LaserJet IIP (PCL 4.5))
1990 - Office Publishing functionality is a superset of PCL 4. New publishing capabilities include font scaling and HP-GL/2 (vector) graphics.
(Printers: HP LaserJet III)
1994 - This is a major revision, which includes new features like Adaptive Compression System, 2byte character encoding, support for vector fonts and bi-directional configuration commands. Includes Logical OPerations (corresponds to GDI ROPs) to improve Windows support before clipping paths.
(Printers: HP LaserJet 4)
New features like 2-byte character support for Japanese resident scalable fonts, vertical writing, Japanese paper sizes and typeface strings.
(Printers: HP LaserJet 4PJ)
1995 - Color support and Logical OPerations was added to PCL5. PCL5c predates PCL5e. Some models also support clipping paths.
(Printers: HP Color LaserJet, HP PaintJet 300 XL (first printer with PCL5c), HP DeskJet 1200C/1600C (these model numbers have been re-used and the newer models are not PCL 5c)
If PCL 5c predates 5e, what are the correct years then?
— Christoph Lindemann 2006/07/26 16:54
Also if both 5c and 5e introduce Logical OPerations, are they different? or does 5e just implement the same ops as 5c?
— Christoph Lindemann 2006/07/26 16:56
Supports Agfa Microtype scalable typefaces.
(Printers: HP 2500c Pro Printer)
1996 - PCL 6 or PCL XL is a new format introduced in 1995, which is not compatible with any previous versions of PCL.
(Printers: HP LaserJet 5, 5M and 5N)
For more information see PCL XL.
Users having data corruption on poor quality cable with PCL6 should consider PCL5 (much reliable). Either buy a more efficient XOR shorter cable.
You confuse with PCL6 (base) and PCL XL:
Interresting. Could you please provide some documentation about the differences? All documentation I have seen about PCL 6/XL was describing the new PCL XL, and in the first draft specs of PCL XL, it was called PCL 6 (As far as I know). But if you could provide some tech specs for PCL 6 (base) that would be fantastic, as I have only across docs up til PCL 5c. — Christoph Lindemann 2009/07/02 20:24
The latest technical reference manuals can be ordered (HP Part-Number #5961-0546) or downloaded from Hewlett-Packard.
| Official HP PCL SDK Download Site | Public Kits and Information Download |
| HP PCL 5 Technical Reference | pcl5_technical_reference.pdf |
| HP PCL 5c Technical Reference | pcl5_color_technical_reference.pdf |
| HP PCL 5 Comparison Guide | pcl5_comparison_guide.pdf |
| HP PCL 5 Comparison Guide Addendum | pcl5_comparison_guide_addendum.pdf |
| HP PCL 5 Quick Reference | pcl5_quick_reference.pdf |
| HP PCL 5c Programming Quick Reference | pcl5_color_programming_quick_reference.pdf |
| PCL-UTF-8: HP-UX 11i v3 International Printing Features | http://docs.hp.com/en/5991-7956/5991-7956.pdf |
| Brother HL-Series Technical Reference | hl-series_techreference_revc_oct1994.pdf |
| - | |
| PCL5e printer symbol sets (Cyr.Tech.) | Symbol tables.pdf |
| Support for PCL5e/PCL5c macros in a multi-user environment (Cyr.Tech.) | Support of PCL5e Macros.pdf |
| Command | Syntax | Version |
|---|---|---|
| Media Type | EC&l#M | |
| Negativ Motion | EC&a#N | |
| Text Parsing Method | EC&t#P | |
| Seed Row Source | EC*b#S | DeskJet 600 |
| Set Black Optimization | EC*b#B | PCLSLEEK |
| Transfer Raster Data (Plane) | EC*b#V[data] | |
| Transfer Raster Data (Row/Block) | EC*b#W[data] | |
| Raster graphics depletion | EC*o#D # = 1..5 1 = None 2 = 25% 5 = 50% | PCLSLEEK |
| Print Quality | EC*o#M # = -1..1 -1 = EconoFast 0 = Normal 1 = Presentation | DeskJet 600 |
| Mechanical Print Quality | EC*o#Q | |
| Driver Configuration | EC*o#W[data] | PCLSLEEK |
| User Defined Logical Page | EC&a#W[LogicalPageFormat] | HP D640 High-volume Printer |
| Self Test | ECz | |
| Test Pages | EC|p#T # = Testpage flags bit 0 = Menus bit 1 = Fontlist bit 2 = Storage |
Specifies whether black optimization should be performed. Only supported by some inkjet devices. (PCLSLEEK)
<ESC>*b#B
# = 1..2
1 = Enable
2 = Disable
When black is constructed by setting all the bits in the CMY color planes, the resulting color may have a non-black hue. This command can enable black optimization, to make black (composed of color inks) appear more black.
This command allows you to define the logical page. Not supported by most printers
<ESC>&a#W[LogicalPageFormat]
Where # is the number of bytes of binary data following the terminator.
The default value for # is = NA.
The range for # is = 4,10.
The binary data describes the logical page format as shown below:
| Byte | 15 (MSB) 8 | 7 0 (LSB) | Byte |
|---|---|---|---|
| 0 | Left Offset | 1 | |
| 2 | Top Offset | 3 | |
| 4 | Orientation | Reserved (0) | 5 |
| 6 | Width | 7 | |
| 8 | Height | 9 | |
Either 4 or 10 bytes of binary data defining values in the specified range must be downloaded with this command. If more than 10 bytes are received, the excess number is disregarded. If the number of bytes received is less than 10 and greater than 4, the left and top offsets are changed and the remaining bytes are ignored.
Upon receipt of a valid, 4-byte command, the current logical page definition is updated with the new left and top offsets. The margins, print direction, and current active position (CAP) are retained relative to the new position of the logical page. (The only change to the current logical page is that now it is offset relative to the physical page.)
Upon receipt of a valid command with 10 or more bytes of binary data, the current logical page definition is discarded and the new definition is installed. The following actions take place with a new definition:
The reference point used for tiling defaults to the upper-left corner of the current logical page. The tiles are printed based on the viewing orientation selected.
HP RTL is Hewlett-Packard’s Raster Transfer Language. It is a language that is understood by various plotters and printers, and is used to produce plotted or printed output from those devices. HP RTL is similar to Hewlett-Packard’s PCL printer language; many of its commands are the same as those of PCL, though some are different, and you should be aware of these differences if you are already familiar with PCL.
The following RTL commands are different from PCL.
The Configure Raster Data command configures the device to receive raster data.
EC*g#W[data]
# = Bytes in the immediatly following format block.
The data format can have one of the following characteristics:
| Byte | Length | Description |
|---|---|---|
| 0 | 1 | Format |
| 1 | 1 | Number of Pens |
| 2 | 1 | Pens Major Specification |
| 3 | 1 | Reserved = 0 |
| 4 | 2 | Horizontal Resolution for Pen 1 |
| 6 | 2 | Vertical Resolution for Pen 1 |
| 8 | 2 | Number of Intensity Levels for Pen 1 if Contone. 2: Halftone (1bit) 4: 2bit print modes |
| 10 | 1 | Planes Major Specification for Pen 1 |
| 11 | 1 | Channel ID for Pen 1 |
| … | … | … |
| 8(n-1)+4 | 2 | Horizontal Resolution for Pen n |
| 8(n-1)+6 | 2 | Vertical Resolution for Pen n |
| 8(n-1)+8 | 2 | Number of Intensity Levels for Pen n |
| 8(n-1)+10 | 1 | Planes Major Specification for Pen n |
| 8(n-1)+11 | 1 | Channel ID for Pen n |
Byte 0: Format Number
Byte 1: Number of Pens
Value = 1..255
Specifies the number of expected pens. The Product Comparison Guide indicates the number of pens supported by each printer.
Byte 2: Pens Major Specification
Specifies how the data of the different pens is organised.
Byte 3: Reserved
Value = 0
Bytes 4-5, 12-13, …: Horizontal Resolution
Value = 1 through 65535
Specifies the horizontal resolution of each pen, in pixels per inch of the source raster.
Bytes 6-7, 14-15, …: Vertical Resolution
Value = 1 through 65535
Specifies the vertical resolution of each pen, in pixels per inch of the source raster.
Bytes 8-9, 16-17, …: Number of Intensity Levels
Value = 2 through 65535
Specifies the number of intensity or grayscale levels for each pen for contone data. A level of 2 allows only two intensities expressed by 1 bit, since a pixel is either on or off. A level of 4 allows four intensities expressed by 2 bits, and so on. A level of 256 allows this number of intensities expressed by 8 bits, and is usually interpreted as contone data. Note that the number of levels could be 187, for instance, which would mean 8 bits to represent values between 0 and 187.
With halftone data, the number of intensity levels is not important, as the order in which the dots are fired by the pen for a certain pixel is not relevant. For this reason, this field is actually 2number of bits per pen for this particular pen, when dealing with halftoned data.
The lowest intensity is zero; the highest intensity is Number of Levels -1. The number of bits per pixel expected for each pen in each row is
ceiling(log2(number of levels))
where the ceiling function gives the next higher integer, for non-integer values. [So, ceiling(3.1) is 4.]
For example, three levels require two bits. The lowest order plane is transmitted first and the highest order plane last for a given pen of a row.
Byte 10, 18, …: Planes Major Specification
Specifies how the data of the pen is organised.
When the Pens Major Specification (byte 2) is Pixel Major, the Planes Major Specification should be also Pixel Major; in this case the field is ignored.
Byte 11, 19, …: Channel ID
| ID | Channel |
|---|---|
| 0 | K (black) |
| 1 | C (cyan) |
| 2 | M (magenta) |
| 3 | Y (yellow) |
| 4 | R (red) |
| 5 | G (green) |
| 6 | B (blue) |
| 7 | W (white) |
| 10 | O (orange) |
| 51 | k (grey) |
| 52 | c (light cyan) |
| 53 | m (light magenta) |
Specifies the channel a pen is intended for, that is, the pen ink color (as K,C,M,Y) or the channel of a previously defined color space. The order of the pen channel IDs in the command determines the order in which the data planes must be sent.
Rules
The use of the Configure Raster Data command is subjected to the following rules:
EC*b#L
EC*b#V[data]
HP-GL/2 is the standardized version of the Hewlett-Packard Graphics Language. It is designed to provide a set of consistent functions across a wide range of peripheral devices, both plotters and printers. It's aim is therefore to reduce programming effort and the future compatibility of your programs, while allowing great flexibility in creating images.
HP-GL/2 is a super-set of HP-GL, with 4 exceptions: XT and YT (x tick and y tick), RP (Replot), and PG (Page Advance/Eject) are no longer supported andmust be sent as some method of PCL mode, and share the color pallet. As a result, HP-GL/2 is strictly a subset of PCL5.