Printer Job Language (PJL) was developed by Hewlett-Packard to provide a method for switching printer languages at the job level, and for status readback between the printer and the host computer. PJL adds job level controls, such as printer language switching, job separation, environment, status readback, device attendance and file system commands. Unlike PCL and HP GL, which control the placement of dots on the printed page, the Printer Job Language (PJL) commands provide job level control. PJL was primarily designed for use by application developers and technical support personnel. One of the main features PJL offers is the ability to switch printer languages between jobs. Applications supporting PJL can print one job using PCL and then print the next job using PostScript or another printer language – without any operator intervention. PJL can also command two–way communication with the printer.HP’s Printer Job Language (PJL) provides control above PCL and other printer languages. The four major functions provided by PJL are:
Printer language switching
Job separation
Printer configuration
Status readback from the printer
PJL commands may be used to change printer default settings.
PJL can also be used to change the printer’s control panel settings, that is changing default settings without using the control panel, and modify the message displayed on the control panel.
The PJL command structure
PJL was conceived as an extension to PCL, it is now supported by most PostScript printers. Many printer vendors have extended PJL to include commands proprietary to their products. Not all PJL commands documented by HP are implemented in all HP or other vendor products. PJL resides above all the other printer languages and parses commands first. The syntax mainly uses plain English words.
The following example shows the structure of PJL commands. In this example, first a PCL job prints, then PJL switches the printer language to PostScript to prepare for the following PostScript job.
%-12345X@PJL
@PJL ENTER LANGUAGE = PCL
– PCL job data –
@PJL ENTER LANGUAGE = POSTSCRIPT
– PostScript job data –
%-12345X
• The Universal Exit Language (UEL) command %-12345X
exits the current printer language and returns the control to PJL.
• The UEL command must be immediately followed by the PJL
command prefix @PJL.
• To terminate all PJL commands a line termination (line feed)
is required. A preceding carriage return is optional.
• After the UEL command the PJL command sets the printer
language to PCL.
• The PJL command is followed by the data of the PCL print job.
• Another UEL command is used to finish the PJL job.
Selection of PJL commands.
Category | Command | Description | Syntex |
Kernel commands | UEL | The Universal Exit Language (UEL) command and returns the control to PJL. All PJL jobs must begin with this command. | @PJL ENTER LANGUAGE = personality [ |
COMMENT | The COMMENT command enables you to add a line of information as a comment. Use this command whenever you want to add an explanation to PJL commands. | @PJL COMMENT remarks [ | |
Job separation commands | JOB | This command indicates the beginning of a print job. It also is used to specify which pages of a job are printed. Use the JOB/EOJ commands for spooling and related applications to monitor printing status, name a job, print portions of a job, or to mark job boundaries to keep the printer from treating a single print job as multiple jobs (for example, when printing a job with a banner page) | @PJL JOB [NAME = "job name"][START=first page] ~[END = last page][PASSWORD = number ] ~[DISPLAY = "display text"][ |
EOJ | This command indicates the end of a print job (EOJ = end of job) | @PJL EOJ [NAME = "job name"] [ | |
Environment commands | SET | This command sets an environmental variable for the current print job. | @PJL SET [LPARM : personality | ~variable = value [ |
RESET | This command sets all variables back to default values. For example, the PJL de value of the variable DUPLEX is OFF. | @PJL RESET [ | |
Status read back commands | INQUIRE | This command requests the current value of a variable. | @PJL INQUIRE [LPARM : personality | ~IPARM : port] variable [ |
DINQUIRE | This command requests the default value of a variable. | @PJL DINQUIRE [LPARM : personality | ~IPARM : port] variable [ | |
Device attendance commands | RDYMSG | This command (RDYMSG =ready message) replaces the 00 READY on the printer’s display by a message. | @PJL RDYMSG DISPLAY = "message" [ |
OPMSG | This command (OPMSG = operator message) puts the printer off line and displays a message on the printer’s display. | @PJL OPMSG DISPLAY = "message" [ | |
File system commands | FSAPPEND | The FSAPPEND command appends data to an existing file, or if the file doesnt exist, creates the file and loads it with the given data. | @PJL FSAPPEND FORMAT:BINARY SIZE=integer ~NAME = "pathname" [ |
FSDELETE | The FSDELETE command is used to delete files or empty directories from the printers file system. | @PJL FSDELETE NAME = "pathname" [ |