PJL Commands


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
%-12345X exits the current printer language
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 doesn't exist, creates the file and loads it with the given data.
@PJL FSAPPEND FORMAT:BINARY SIZE=integer
~NAME = "pathname" []
%-12345X
FSDELETE
The FSDELETE command is used to delete files or empty directories
from the printer's file system.
@PJL FSDELETE NAME = "pathname" []