Notice The information contained in this document is subject to change without notice. HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Hewlett- Packard shall not be liable for errors contained herein or for incidental consequential dam- ages in connection with the furnishing, performance, or use of this material.
Inside This Manual What You Can Learn Printer Job Language (PJL) was developed by Hewlett-Packard to provide a method for switching printer From This Manual languages at the job level, and for status readback between the printer and the host computer. PJL offers application programs an efficient way to remotely control Hewlett-Packard printers.
Manual This manual is comprised of ten chapters and four Organization appendices. The first three chapters introduce you to the range of PJL features, PJL syntax and format, some rules about using PJL, and a brief description of each command. Chapter 4 explores the essential “kernel”...
Page 5
Chapter 5. Job Separation Commands Chapter 5 describes the JOB and EOJ commands, which are used in combination to define job boundaries and provide job-related feedback, such as job completion. Chapter 6. Environment Commands This chapter explains setting the printer to a known state. The DEFAULT, INITIALIZE, RESET, and SET commands are explained here.
Page 6
when using PJL commands. Samples are included to demonstrate different types of applications. Appendix A. Product-Specific Feature Support This chapter lists all of the PJL commands and shows which commands are supported by the different PJL printers. It also shows which environment variables are supported, and includes printer-specific information about several PJL printers.
Related Documents The following documents provide related information about Hewlett-Packard PCL 5 printers. PCL 5 Printer Language Technical Reference Manual The PCL 5 Printer Language Technical Reference Manual provides a description of the printer command language that controls PCL 5 printers. The manual provides...
Manual This manual uses the following conventions: Conventions Items in italics indicate names of variables. Items in UPPERCASE letters indicate PJL command names and words you type verbatim. PJL command names referred to in text are also in uppercase. Items in square brackets [ ] indicate optional parameters.
Introduction to PJL What is PJL? Hewlett-Packard’s Printer Job Language (PJL) was developed to give software applications more job-level printer control, and to provide printer status information to applications. PJL provides for the special needs of networks and other multi-user systems, in addition to enabling...
Page 14
Figure 1-1. PJL Resides Above Other Printer Languages Note Some HP printers, such as the LaserJet 4L, 5L, or 6L printers, do not support printer language switching or job separation. See Appendix A for feature support information. Using PJL, software applications can request information such as printer model, configuration, and status.
The Benefits of PJL Listed below are some of the benefits PJL provides: Programmatic printer language switching. PJL provides fully reliable switching between printer languages, such as PCL, Epson, IBM ProPrinter, and PostScript, directly from within applications. Printer status readback. Printer model information, configuration, printer feature settings, and other printer status information can be obtained using PJL.
Compatibility With Because all HP printers do not support PJL, it is important Non-PJL Printers to know what happens when PJL commands are sent to a non-PJL printer. PJL commands are recognized by the following HP printers: LaserJet IIISi, 4Si, 4SiMx, 5Si, 5SiMx, 5Si Mopier LaserJet 4000 series LaserJet 4V, 4MV LaserJet 4, 4 Plus, 4M, 4M Plus, 5, 5M...
Page 17
and possibly followed by more PJL commands. The PCL job should print as it would without any PJL commands, as long as the PCL portion of the job begins and ends with a PCL printer reset command. However, a page of PJL commands printed before and probably after the PCL job can be expected.
PJL Command Syntax and Format Introduction This chapter explains the conventions used to describe PJL command syntax. This chapter also describes the several different formats that PJL commands may take, giving examples of each. The chapter provides an explanation of how PJL-compatible printers handle illegal commands.
Syntax The following syntax conventions are used to describe the Conventions PJL commands in this manual: variables Items in italics indicate names of variables. COMMANDS Items in uppercase letters indicate PJL command names and words that you type verbatim. PJL command names referred to in text are also in uppercase.
Page 21
The following illustration is an example of a PJL command line containing the ENTER command: The table below lists the control codes and special identifiers used in this manual: <HT> Horizontal tab character (ASCII 9). <LF> Line feed character (ASCII 10). <CR>...
Format of All PJL command lines follow one of the following four PJL Commands formats. Each format defines how commands using that format are structured. Format #1 <ESC>%–12345X The only command that uses this format is the Universal Exit Language (UEL) command. Format #2 @PJL [<CR>]<LF>...
[option name [ = value ] ] — The option parameter specifies an option or sets a command option to a certain value. Examples include “@PJL INQUIRE COPIES” and “@PJL ENTER LANGUAGE = personality.” The range of values varies with each specific command and each printer model.
Page 24
The placement of white space in PJL commands depends on its location within the command. Some white space is required and some is optional: White space is required between the @PJL prefix and the PJL command name, and between the PJL command name and command modifiers.
Types of Variables PJL uses alphanumeric variables, numeric variables, and strings. The following explains the three types of variables and their ranges. Alphanumeric variables. Any combination of letters and digits, with the stipulation that the first character always must be a letter. Letters consist of the uppercase letters (Roman-8 characters 65 through 90) and lowercase letters (97 through 122).
Page 26
Examples of invalid numeric variables include: .123456 (The decimal point must be preceded by at least 1 digit) -123.45.6 (Only 1 decimal point is allowed in a numeric variable) +657,000 (Commas are not allowed in numeric variables) Strings. Enclosed in quotation marks, strings consist of any combination of characters from Roman-8 character 32 through 255, plus character 9 (horizontal tab), excluding character 34 (quotation marks).
Processing Invalid There are two general types of invalid commands: those Commands commands with syntax errors, and those that have syntax or semantic warnings. Each type is handled differently. Syntax errors cause the printer to ignore the entire PJL command, and include errors such as unrecognized commands and command modifiers, strings missing closing double-quotes, numeric values missing digits before the decimal point, and numeric values...
Page 28
For example, in the following two sample PJL commands, START is a valid option for the JOB command, but FINISH is not a valid option (the END option should be used). The START option is executed, but the FINISH option is ignored.
Using PJL Introduction This chapter describes how PJL commands are used. After reading this chapter, you can create basic jobs and perform simple PJL tasks, such as printer language switching and changing some PJL feature settings. To give you an understanding of where to look for more PJL information, this chapter explains how the manual categorizes PJL commands into six groups of related commands.
PJL Job PJL has certain job requirements that must be met to work Requirements correctly. Jobs that satisfy the following requirements are “well-formed” and work well with all PJL printers, both in single-computer/single-printer environments and network environments. Here are the requirements: All PJL jobs must begin and end with a UEL command (<ESC>%–12345X).
Some Sample This section consists of two basic PJL jobs that illustrate PJL Jobs how to use PJL. The first job changes a few printer control panel settings and prints a PCL file. The second job prints a PCL file followed by a PostScript file. (The ~ symbol indicates that the command line is actually part of the previous line.) Example: Changing...
What’s Next? Now that you have learned the PJL requirements and have seen how to use PJL commands in the sample programs described on the previous page, look through the following “Command Groupings” table. It can help you find the information you need to add PJL capabilities to your application.
Command This manual categorizes the PJL commands into related Groupings by groups. Each group of commands is covered in a separate chapter, as indicated in the following table. This table lists Functionality each command and gives a short description of each. Command Group Command Command Description...
Page 34
Command Group Command Command Description Status Readback Commands INQUIRE Requests the current value for a (Chapter 7) specified environment variable. DINQUIRE Requests the default value for a specified environment variable. ECHO Returns the <words> portion of the command to the host computer.
Page 35
Command Group Command Command Description PJL File System Commands FSAPPEND Appends data to an existing file or (Chapter 9) creates a new file. FSDELETE Deletes printer mass storage files. FSDIRLIST Lists PJL file system files and directories. FSDOWNLOAD Downloads files to the printer mass storage system.
Kernel Commands Introduction This chapter explains the following three PJL commands: Universal Exit Language (UEL) command exits the current printer language and returns control to PJL. ENTER command selects a printer language for processing the current job. COMMENT command enables developers to add comments to their PJL commands.
Universal Exit The Universal Exit Language (UEL) Command causes the Language (UEL) printer to exit the active printer language. The printer then returns control to PJL. Command Note Use the UEL command at the beginning and end of every PJL job. You do not need a UEL command before every PJL command.
Page 39
(if PERSONALITY =AUTO, the data stream is sampled for context-sensitive switching—see the “Methods of Printer Language Switching” later in this chapter). Instead of relying on implicit switching, use the ENTER command to specify the printer language, even if the printer has only one printer language.
ENTER Command The ENTER command enables the specified personality (such as PCL or PostScript). Use this command to select the printer language for printing subsequent data. Syntax: @PJL ENTER LANGUAGE = personality [<CR>]<LF> Parameters: Parameter Range personality PCL, POSTSCRIPT, ESCP, Others * * Other personalities might be supported.
Page 41
Note To select the ESC/P personality, always be sure to use the @PJL ENTER LANGUAGE = ESCP command to explicitly select it. For any job containing personality-specific data, send the ENTER command if the intended printer language is known, instead of relying on the printer’s ability to switch to the default printer language.
COMMENT The COMMENT command enables you to add a line of Command information as a comment. Use this command whenever you want to add an explanation to PJL commands. Syntax: @PJL COMMENT remarks [<CR>]<LF> Parameters: Parameter Range remarks Roman-8 character codes 33 through 255 and <WS>, starting with a printable character.
Page 43
Example: Using the This example demonstrates using the COMMENT command to add clarity to your PJL command listings. COMMENT Command <ESC>%-12345X@PJL <CR><LF> @PJL COMMENT ************************ <CR><LF> @PJL COMMENT ** D. Thiel— 10/22/92 ** <CR><LF> @PJL COMMENT ************************ <CR><LF> @PJL <CR><LF> @PJL <CR><LF>...
Methods of Printer There are three methods of switching printer languages, Language two of which are supported by all PJL printers. All three methods are described below: Switching Explicit Switching. With explicit switching, the ENTER LANGUAGE command is used to “explicitly” select the desired printer language.
Page 45
Although printers supporting context switching can select printer languages accurately, we recommend that every job containing printable data include an ENTER LANGUAGE command to explicitly select the correct printer language. This method improves performance and eliminates unintentional printer language switching, which can potentially cause data loss.
Job Separation Commands Introduction This chapter explains the JOB and EOJ commands. These commands are used to describe the boundaries of a job, indicating where the PJL job begins and ends. The commands can be used to name a job, and they support a non-printing mode for printing selected pages within a job.
JOB Command The JOB command informs the printer of the start of a PJL job and synchronizes the job and page status information. 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...
Page 49
80 significant characters. The job name variable is a string and must be enclosed in double quotes, as shown in the command syntax. If the NAME option is included, the unsolicited job status includes the job name (if unsolicited job status is enabled). START = first page —...
Page 50
page of this job reaches the output bin. The variable "display text" can be any combination of printable characters and spaces or horizontal tabs, with a maximum of 80 characters. The actual number of characters displayed depends on the printer. The display limit can be determined by sending an INFO CONFIG command to the printer.
Page 51
JOB commands can be nested. For example, a spooling application can send a PJL job that uses the JOB command to another spooler that encapsulates the spooled job with another JOB/EOJ command pair. When this is done, note that the job name from the outer JOB command is cleared or overwritten by the inner command.
Page 52
Example: Using the This example demonstrates a PostScript print job that is spooled before printing. The job actually consists of three JOB Command to separate sections (notice the UEL commands that bound Monitor Job Status the three sections—the first section does not need a closing UEL command since the printer is already in PJL mode): The first section is sent by the spooler.
Example: Nested This example shows a PCL job that was sent to spooler 1, which in turn was sent to spooler 2 (the nested jobs are JOB Commands indented). Note that the first job name is overwritten by the second job name (“Spooler 1 Job”) when the second JOB command is processed.
EOJ Command The EOJ command informs the printer that the job has completed. Use this command whenever you use the JOB command. Note The JOB and EOJ commands are always used in pairs. Do not use one without the other. Syntax: @PJL EOJ [NAME = "...
Page 55
Terminates the non-printing mode (enabled by using the START/END options). The non-printing mode, if enabled by the last JOB command, only applies to the previously received data, and does not effect any future pages until another JOB command enables the non-printing mode again.
PJL Job Security HP LaserJet 4/4M Plus, 4V, 4MV, 4Si, 4SiMx, 4000 series, 5, 5M, 5Si, 5SiMx, 5Si Mopier, 5P, 6P, and 6MP printers support the following types of PJL security: Password protection of default feature settings—this type of security prevents applications from modifying the printer’s default feature settings unless the correct password is specified.
Control Panel Lock You can “lock” the control panel by sending the @PJL DEFAULT CPLOCK = ON command. When the control panel is locked, the user cannot change any control panel settings. If the user tries to change any control panel settings, the message “MENUS LOCKED”...
Page 58
Example: Using PJL This example demonstrates how to set a password and to lock the control panel so users cannot modify control panel Security settings. It is assumed the password value at the start of job is 7654. The example changes the password to 1776. <ESC>%-12345X@PJL <CR><LF>...
Page 59
To write to volume 0 of the file system, you would send a job like the following. This job specifies the correct password with the JOB command, and then uses the DEFAULT command to unlock, and then later to lock the disk. <ESC>%-12345X@PJL <CR><LF>...
Job Cancellation HP LaserJet 4000 series, 5, 5M, 5Si, 5SiMx printers and the LaserJet 5Si Mopier support job cancellation using the printer control panel. When a PJL print job is started using the PJL JOB command as described in this chapter, the following PJL information can be obtained from the printer: Start of job notification End of job notification...
End of Job Near the end of the PJL job, the application should send the EOJ command as described in this chapter. If unsolicited Notification job status is enabled when the last page of the job is delivered to the output bin, the printer responds to the EOJ command with an @PJL USTATUS JOB END response.
If the job had been cancelled instead of completed, the printer would respond with the same message except the RESULT value would be different. Job Cancellation As soon as the printer receives notification that a job is cancelled, the printer provides the @PJL USTATUS JOB Unsolicited Status CANCELED message to the driver/spooler if unsolicited job status is enabled.
Environment Commands Introduction Hewlett-Packard printers have many features you can set using printer commands or by pressing control panel keys. Since previous jobs can change feature settings to unwanted values, applications should set printer features affecting the print job to a desired state at the beginning of the job.
Print Environments At any time during printer operation, the printer’s current feature settings are referred to collectively as the print environment. When certain printer events occur, such as the incidence of a printer language reset, RESET command, or other PJL reset condition, the print environment settings can default to the settings of other stored environments.
Page 65
Each environment is explained in more detail below: Factory Default Environment — This environment consists of a group of feature settings that are permanently stored in the printer. The printer uses these settings when it is powered on for the first time after leaving the factory, and after the INITIALIZE command is received.
Page 66
Figure 6-1. How Environments Affect the Print Job 6-4 Environment Commands...
Changing The following scenario elaborates on how the print Environment environment changes during printer operation. The “number of copies” feature is used to show feature changes Settings as events occur. 1. The first time the printer is turned on after it leaves the factory (or after the INITIALIZE command), the number of copies feature is set to the factory default value of 1 copy.
using the DEFAULT command (User Default Environ- ment). In this example, the number of copies feature set- ting then defaults to 3 after a PJL reset condition. All other features operate similarly—if any feature is not modified by a higher priority action, it keeps its current value setting.
Page 69
Factory Stored permanently in printer memory—settings cannot be modified. Default Factory default settings cannot be read programmatically, but they are Environment listed in the PCL 5 Comparison Guide. User Default The User Default Environment is set to the factory default values when Environment the printer initially is powered on—before printer commands are sent from an application or any control panel settings are changed.
PJL Reset “PJL reset conditions” are listed below. Note that PJL reset Conditions conditions differ from printer language resets (such as <ESC>E). Printer language resets load the PJL Current Environment values into the Modified Print Environment. PJL reset conditions are more powerful. They load the User Default values into the PJL Current Environment, and also into the Modified Print Environment.
Key Points to When using PJL to set the printer to a desired state, Remember About remember the following points. Environments At the beginning of a PJL job, the current feature settings are the same as the control panel values or those features set with the DEFAULT command.
PJL Environment This section lists the PJL environment variables. General PJL Variables environment variables (those not printer language-specific) are listed first, followed by printer language-specific variables. For most variables except the read-only variables, value settings can be modified using the following commands: SET —...
General PJL The following table lists the PJL environment variables that are not printer language-specific. When you use these Environment variables, do not use the LPARM : personality option. The Variables range of values for each variable may differ for the various printer models.
Page 74
General PJL Environment Variables Variable Description Sample Value Range BITSPERPIXEL For PCL 6 only, this variable controls the 2, 1 number of bits per pixel used when printing grayscale or color images. The valid values are dependent on the current setting of RESOLU- TION.
Page 75
General PJL Environment Variables Variable Description Sample Value Range CPLOCK Sets the default control panel lockout state. If ON, OFF, CPLOCK is set to ON, users cannot modify MINIMUM, feature settings using the control panel keys. MODERATE, CPLOCK can only be set by a secure job using MAXIMUM the DEFAULT command, and can be read using the INQUIRE or DINQUIRE commands.
Page 76
General PJL Environment Variables Variable Description Sample Value Range IMAGEADAPT Default for Image Adapt feature. ON enables ON, OFF, AUTO Lossy compression for use on any images that need to have compression performed. AUTO causes the printer to evaluate other compression alternatives first before Lossy is considered.
Page 77
General PJL Environment Variables Variable Description Sample Value Range INTRAY3SIZE Returns the size of the paper currently LETTER, LEGAL, installed in the optional cassette (LaserJet A4, A3, LEDGER, 4/4M, 4/4M Plus, 4V/4MV, 5/5M), envelope EXECUTIVE, feeder (LaserJet 4Si/4SiMx), or tray 3 (5Si/ JISB4, JISB5, 5SiMx/5Si Mopier).
Page 78
General PJL Environment Variables Variable Description Sample Value Range JOBOFFSET Sets the default job offset state. ON, OFF LANG Sets the default display language for the ENGLISH, display panel and unsolicited status feedback FRENCH, display panel messages. GERMAN, ITALIAN, SPANISH, SWEDISH, CHINESE, JAPANESE,...
Page 79
General PJL Environment Variables Variable Description Sample Value Range ORIENTATION Page orientation. PORTRAIT, LANDSCAPE OUTBIN Sets the default output bin. (For HP LaserJet UPPER, LOWER, 4Si, 4SiMx, 4000 series, 5Si, 5SiMx, 5Si OPTIONALOUT– Mopier printers, the UPPER output bin is a PUTBIN1, .
Page 80
General PJL Environment Variables Variable Description Sample Value Range PAPER Physical paper (and envelope) sizes. Letter, LETTER, LEGAL, Legal, Ledger, A5, A4, A3, Executive, JISB4, A5, A4, and JISB5 are paper sizes; Com10, C5, DL, EXECUTIVE, Monarch, and B5 are envelope sizes; JPOST LEDGER, A3, and JPOSTD are Japanese postcard sizes;...
Page 81
General PJL Environment Variables Variable Description Sample Value Range PERSONALITY Personality for implicit switching (implicit AUTO, PCL, switching refers to switching to the default INSTALLED, personality without explicitly doing so with the POSTSCRIPT, @PJL ENTER command). Note that the value ESCP string (PCL, POSTSCRIPT, and so on) for each installed personality is defined by the...
Page 82
General PJL Environment Variables Variable Description Sample Value Range PRINTAREA INKEDAREA sets the DesignJet to shift the FULLSIZE, plot to the top/left and advance the page cut in INKEDAREA order to save media. PRINTQUALITY Sets the default print quality for the current DRAFT, PJL job.
Page 83
General PJL Environment Variables Variable Description Sample Value Range Configuration of the Resolution Enhancement LIGHT, MEDIUM, hardware. Resolution Enhancement DARK, ON, OFF, technology (REt) improves the print quality of AUTO characters and graphics by smoothing the edges of lines. Most users do not need to adjust this feature since the default setting works well for almost every type of job.
Port-Specific The following variable is I/O port-specific in the HP LaserJet 4PJ printer, and can be set and requested using Variables PJL. This variable must be set using the IPARM : port (LaserJet 4PJ Only) option. For the HP LaserJet 4PJ, the valid values for port are SERIAL and PARALLEL.
PCL-Specific The following variables are PCL-specific and can be set and requested using PJL. These variables must be set using the Variables LPARM : PCL option. A sample value range is shown in this table. See Appendix A for the actual value range for each PJL printer, or use the INFO VARIABLES command to request these values from the printer.
Page 86
PCL-Specific Variables Variables Description Sample Value Range FONTNUMBER If the value of the FONTSOURCE changes, 0, 1, 2, . . . n (continued) then the FONTNUMBER variable automatically is changed to the lowest numbered font in the new font source (0 if the new font source contains a default-marked font;...
Page 87
PCL-Specific Variables Variables Description Sample Value Range FONTSOURCE The valid values for FONTSOURCE are: I, M1, M2, M3, M4, C, C1, C2, S (Internal Fonts) C, C1, C2 (Cartridge Fonts) (the number of S (Permanent Soft Fonts) cartridge and SIMM M1, M2, M3, M4 (Fonts stored in one of slots varies by the printer’s ROM SIMM slots)
Page 88
PCL-Specific Variables Variables Description Sample Value Range PTSIZE Height of the default font in units of points (the 4.00, 4.25, . . . 999.75 default font must be a proportional scalable font). The point size is significant to a quarter of a point.
PostScript-Specific The following table lists the currently defined PostScript-specific variables. These variables can be set Variables using the LPARM : POSTSCRIPT option. Variable Description Sample Value Range ADOBEMBT Normally, when PostScript formats a page in OFF, ON, AUTO memory for printing, it formats a full page (full frame).
ESC/P-Specific The following table lists the currently defined ESC/P-specific variables which are valid only for HP Variables LaserJet 4PJ and 4LJPro printers, and optionally for HP LaserJet 4V and 4MV printers. These variables can be set using the LPARM : ESCP option. Note that HP LaserJet 4PJ, 4V, and 4MV factory defaults for these variables are in parentheses.
Page 91
Variable Description Sample Value Range CARRIAGE- Controls how ESC/P interprets the carriage return (CR), CRLF RETURN (CR) control character. The valid values for CARRIAGE- RETURN are: CR–CR maps to carriage return; CRLF–CR maps to carriage return and linefeed. CHARACTER- Default character set used for 1-byte printing. Valid (KANA), EG values for CHARACTERSET are: KANA–Use katakana character set;...
Setting the Printer At the beginning of each print job, printer features which to a Desired State affect the printed output must be set to a desired state to print the job as expected. This can be accomplished in two ways: If the printer has a control panel, the user sets the control panel to values that are appropriate for all users sharing the printer.
Page 93
Example: Setting the The following example demonstrates setting HP LaserJet 4 and 4M printers to a known state. For the specific printer Printer to a Desired you are configuring, consider which environment features State you can modify. The modifiable environment features for HP LaserJet 4 and 4M printers are listed below (see Appendix A for a list of environment variables supported by each PJL printer):...
DEFAULT The DEFAULT command sets the User Default Command Environment value for the specified environment variable. This value is stored in non-volatile RAM (if the printer has NVRAM) and is activated following a PJL reset condition. The DEFAULT command does not affect the current print environment, but takes effect when a PJL reset condition occurs.
Page 95
Syntax: @PJL DEFAULT [LPARM : personality | IPARM : port ] variable = v alue [<CR>]<LF> LPARM : personality — This optional parameter is used to set personality-specific environment variables. PCL is a valid personality. Other personalities, such as PostScript, can be added as hardware options. Use the INFO CONFIG command to request the range of values for all personalities installed in a particular printer.
Page 96
Parameters: Parameter Variable Names personality ESCP POSTSCRIPT (Other personalities may also be supported) port PARALLEL Supported on LaserJet 4PJ only SERIAL variable Valid variables for each printer are listed in Appendix A. Comments: The DEFAULT command enables you to specify default values for either general variables, which are used by all personalities, or personality-specific variables.
Page 97
Example: Modifying This example sets page protection to LETTER for all personalities, and selects the PC8 symbol set for all PCL User Default Settings jobs. A RESET command follows the DEFAULT commands so that the PJL Current Environment defaults to the new settings.
INITIALIZE The INITIALIZE command resets the PJL Current Command Environment and the User Default Environment variables to their Factory Default values. This command does not affect the I/O configuration values, some of the configuration values, and the unsolicited status settings. Use the INITIALIZE command to set the printer environment values to their factory default state, such as when you move the printer to a new installation site.
Page 99
Variable Names BINDING ORIENTATION COPIES OUTBIN CPLOCK PAGEPROTECT DISKLOCK PAPER DUPLEX PASSWORD ECONOMODE PERSONALITY FINISH FORMLINES REPRINT IMAGEADAPT RESOLUTION JOBOFFSET MANUALFEED TIMEOUT PCL-Specific Variables FONTNUMBER PTSIZE FONTSOURCE SYMSET PITCH PostScript-Specific Variables JAMRECOVERY PRTPSERRS ESC/P-Specific Variables ANKCONDENSE FONT CARRIAGERETURN TOPMARGIN CHARACTERSET Note The environment variables may vary with different HP LaserJet printer models.
Example: Using the This example initializes the printer: INITIALIZE Command <ESC>%-12345X@PJL <CR><LF> @PJL COMMENT Initialize settings to <CR><LF> @PJL COMMENT factory defaults <CR><LF> @PJL INITIALIZE <CR><LF> <ESC>%-12345X Related Commands: DEFAULT, RESET, SET 6-38 Environment Commands...
RESET Command The RESET command resets the PJL Current Environment variables to their User Default values. This command has the same effect on the PJL Current Environment as power-cycling the printer. Use this command at the end of PJL jobs that use the SET command to set the printer back to its default state.
Page 103
Example: Using the The following example uses a RESET command after the print job to return the features to their previous state: RESET Command <ESC>%-12345X@PJL <CR><LF0> @PJL COMMENT Resets variables to <CR><LF> @PJL COMMENT control panel settings <CR><LF> @PJL SET RESOLUTION = 600 <CR><LF> @PJL SET RET = MEDIUM <CR><LF>...
SET Command The SET command enables you to change the value of PJL Current Environment variables for the duration of a PJL job, or until a PJL reset condition defaults the value. Use this command to create a job-specific environment. Note When the SET command changes the PAGEPROTECT or RESOLUTION status, printer memory is reconfigured...
Page 105
The IPARM : port option must be used when setting port-specific variables. Valid values for port for the HP LaserJet 4PJ printer are SERIAL and PARALLEL. variable = value — this parameter sets one of the environment variables to the specified value. For example, the @PJL SET RESOLUTION = 600 command sets the current resolution to 600 dots per inch.
Page 106
Comments: The SET command enables you to specify either general variables which are used by all personalities, or printer language-specific variables. Printer language-specific variables must be specified using the LPARM : personality option. Features that are not printer language-specific cannot be specified with the LPARM option. All port-specific variables must be set using the IPARM : port option.
Page 107
Example: Using the This example uses the SET command to create a desired state before sending a PostScript job. The SET command is SET Command used only to set those features that affect the printed output and that cannot be set using the desired personality. After the job has been sent, the RESET command is issued to return all features to their default values.
Status Readback Commands Introduction PJL allows applications to request configuration and status information from the printer. The printer also can be programmed to send unsolicited status information to the application when printer events occur. For example, the printer can send status information indicating the printer door is open, toner is low, online/offline status, the text displayed on the control panel, and other pertinent information.
Printer Status To receive status information from the printer, the Requirements application must have program code that handles the status information sent from the printer. Synchronizing Status responses are directed to the printer’s I/O port from Status Readback which the request is received. When using status readback, applications must synchronize status messages to ensure Responses that status responses are indeed the requested status.
Format of Status When PJL sends printer status information to the host, the Readback response is in a readable ASCII format that always begins with the @PJL prefix and ends with a <FF> character. For Responses example, the readback response for the INQUIRE command is: @PJL INQUIRE [LPARM: personality | IPARM: port ] ~ variable <CR><LF>...
INQUIRE Command The INQUIRE command is used to obtain the current value of a specified PJL environment variable, including read-only variables. Use the INQUIRE command to find out the setting for a particular PJL feature, such as ORIENTATION. Syntax: @PJL INQUIRE [LPARM : personality | ~IPARM : port ] variable [<CR>]<LF>...
Page 113
Note The permissible variables and range of values for each variable may not be the same in all HP LaserJet printer models. See Appendix A for a list of valid variables, or send the @PJL INFO VARIABLES command to request this information directly from the printer.
Page 114
If the printer does not support the variable, the response is: @PJL INQUIRE [LPARM: personality | IPARM: port ] ~ variable <CR><LF> "?"<CR><LF> <FF> If a printer language-specific variable is not available because that printer language is not installed or is invalid, or if a port-specific variable is not available because that port is not supported, the command will return an appropriate error code if USTATUS DEVICE=VERBOSE is...
Page 115
@PJL ECHO 02:18:23.9 05-30-92<CR><LF> <FF> @PJL INQUIRE RET<CR><LF> MEDIUM<CR><LF> <FF> @PJL INQUIRE PAGEPROTECT<CR><LF> OFF<CR><LF> <FF> @PJL INQUIRE RESOLUTION<CR><LF> 600<CR><LF> <FF> @PJL INQUIRE PERSONALITY<CR><LF> AUTO<CR><LF> <FF> @PJL INQUIRE TIMEOUT<CR><LF> 15<CR><LF> <FF> Example: Using This example requests the PCL settings for pitch, point size, and symbol set.
DINQUIRE The DINQUIRE command is used to obtain the default value Command of a specified PJL environment variable. Use the DINQUIRE command to find the User Default Environment setting for any environment variable, including read-only variables. Syntax: @PJL DINQUIRE [LPARM : personality | ~IPARM : port ] variable [<CR>]<LF>...
Page 118
Note The supported variables and range of values for each variable may not be the same in all PJL printer models. See Appendix A for a list of valid variables for each printer, or send the @PJL INFO VARIABLES command to request this information directly from the printer.
Page 119
Comments: If your application has status readback capability, you can request the default setting of any valid environment variable. The returned value indicates the User Default Environment value for the feature. Since the DINQUIRE command returns only the value for one feature, you must send multiple DINQUIRE commands for data about more than one feature.
Page 120
Example: Using This example requests the default settings for resolution and personality. The printer returns values of 600 and DINQUIRE to AUTO. Request Feature Settings <ESC>%-12345X@PJL <CR><LF> @PJL COMMENT Inquiring Default Settings ~<CR><LF> @PJL ECHO 08:10:33.7 04-17-93 <CR><LF> @PJL DINQUIRE RESOLUTION <CR><LF> @PJL DINQUIRE PERSONALITY <CR><LF>...
Page 121
Example: Using This example requests the default PCL pitch and symbol set using the DINQUIRE command. The printer returns DINQUIRE for Printer values of 10.00 and ROMAN8. Language-Specific Variables <ESC>%-12345X@PJL <CR><LF> @PJL COMMENT Inquiring Default PCL Settings ~<CR><LF> @PJL ECHO 11:03:05.9 07-04-92 <CR><LF> @PJL DINQUIRE LPARM : PCL PITCH <CR><LF>...
ECHO Command The ECHO command prompts the printer to return a specified message to the host computer. Use the ECHO command to synchronize the printer with the host computer to ensure that the status received is the requested status information. Syntax: @PJL ECHO [<words>] [<CR>]<LF>...
Page 123
Use the ECHO command to synchronize status so that you know the status you are receiving is the requested status. To do this, send an ECHO command to the printer, and then discard the incoming status messages until your message is echoed back. Eliminate all data received from the printer up to the echoed response string.
INFO Command The INFO command requests a specified category of information (see table below). Use this command to find the printer model, configuration, memory available, page count, status information, PJL file system information, and a list of the printer variables, including environmental, printer language-dependent, and unsolicited status variables.
Page 125
Comments: When the printer receives the INFO command, it returns the requested information. Only one category can be used for each INFO command. Each category is described below, with the format of the printer’s response. If the printer does not support the specified category, the returned information is as follows: @PJL INFO category <CR><LF>...
Page 126
CONFIG Category The INFO CONFIG command returns a series of lines listing configuration information. Use this command to request information such as which printer languages are installed, how many input and output trays are installed, and how many font cartridge slots are in the printer. Variables appear in the response only if they are installed in the printer.
Page 127
Parameter Format Description feature alphanumeric value (any Name of a printer feature, such as combination of letters [ASCII DUPLEX or FONT CARTRIDGE 65-90 or 97-122] and/or digits SLOTS. [ASCII 48-57], beginning with a letter) value numeric value Indicates a feature value, such as MEMORY=500000, or how many and what type of options follow, such as [2 ENUMERATED].
Page 128
<ESC>%-12345X@PJL <CR><LF> @PJL COMMENT Using @PJL INFO CONFIG <CR><LF> @PJL ECHO 09:51:48.3 12-24-92 <CR><LF> @PJL INFO CONFIG <CR><LF> <ESC>%-12345X A sample HP LaserJet 4 printer response for this example is shown on the following page. Other printers may respond differently. 7-20 Status Readback Commands...
Page 129
@PJL ECHO 09:51:48.3 12-24-92<CR><LF> <FF> @PJL INFO CONFIG<CR><LF> IN TRAYS [3 ENUMERATED]<CR><LF> INTRAY1 MP<CR><LF> INTRAY2 PC<CR><LF> INTRAY3 LC<CR><LF> ENVELOPE TRAY<CR><LF> OUT TRAYS [1 ENUMERATED]<CR><LF> NORMAL FACEDOWN<CR><LF> PAPERS [9 ENUMERATED]<CR><LF> LETTER<CR><LF> LEGAL<CR><LF> A4<CR><LF> EXECUTIVE<CR><LF> MONARCH<CR><LF> COM10<CR><LF> DL<CR><LF> C5<CR><LF> B5<CR><LF> LANGUAGES [2 ENUMERATED]<CR><LF> PCL<CR><LF>...
Page 130
FILESYS Category The INFO FILESYS command returns the following information for each volume intialized on the PJL file system: Total capacity Volume label Free space Volume read/write status Location Example: Using the <ESC>%-12345X@PJL <CR><LF> INFO FILESYS @PJL COMMENT Using @PJL INFO FILESYS <CR><LF> @PJL ECHO 11:33:42.3 9-20-96 <CR><LF>...
MEMORY Category The INFO MEMORY command returns the total number of bytes of free memory space and the largest free memory block. Note To determine the amount of memory available for a particular personality, use the personality command instead of the INFO MEMORY command. For example, to find the amount of memory available for PCL 5, use the Free Space command (<ESC>*s1M).
Page 132
PAGECOUNT The INFO PAGECOUNT returns the number of pages printed by the current print engine. This returned number Category is an indication of printer usage. Example: Using the <ESC>%-12345X@PJL <CR><LF> INFO PAGECOUNT @PJL COMMENT Using PJL INFO PAGECOUNT <CR><LF> @PJL ECHO 06:53:29.3 1-25-93 <CR><LF> Command @PJL INFO PAGECOUNT <CR><LF>...
STATUS Category The INFO STATUS command returns online status (TRUE=online, FALSE=offline), the message currently displayed on the control panel, and a status code. In the following example, the status code is 10001, which means the printer is ready. (See Appendix D for a list of all printer status codes.) Only the “string”...
Page 134
VARIABLES Category The INFO VARIABLES command returns a list of the environment and printer language-dependent variables. Use this command to find a list of the variables, the current setting for each, and the possible values. The set of printer language-specific variables returned by the printer depends on the current environment and the printer languages installed.
Page 135
Example: Using the This example uses the INFO VARIABLES command to obtain a list of the environment variables. The returned INFO VARIABLES information lists the environment variables, the current Command setting, and the value or range of values for each. For example, the RESOLUTION section indicates the current setting is 600, and that there are two possible choices: 300 and 600.
Page 136
RET=MEDIUM [4 ENUMERATED] LIGHT MEDIUM DARK PAGEPROTECT=OFF [4 ENUMERATED] LETTER LEGAL RESOLUTION=600 [2 ENUMERATED] PERSONALITY=AUTO [3 ENUMERATED] AUTO POSTSCRIPT TIMEOUT=15 [2 RANGE] MPTRAY=CASSETTE [3 ENUMERATED] MANUAL CASSETTE FIRST INTRAY1=UNLOCKED [2 ENUMERATED] UNLOCKED LOCKED INTRAY2=UNLOCKED [2 ENUMERATED] UNLOCKED LOCKED INTRAY3=UNLOCKED [2 ENUMERATED] UNLOCKED LOCKED CLEARABLEWARNINGS=ON [2 ENUMERATED READONLY]...
Page 138
LPARM:PCL PTSIZE=12.00 [2 RANGE] 4.00 999.75 LPARM:PCL SYMSET=ROMAN8 [31 ENUMERATED] ROMAN8 ISOL1 ISOL2 ..WIN30 LPARM:POSTSCRIPT PRTPSERRS=OFF [2 ENUMERATED] <FF> USTATUS Category The INFO USTATUS command lists each type of unsolicited status supported by the printer, such as DEVICE, JOB, PAGE, and TIMED (see the “USTATUS Command”...
USTATUS The USTATUS command is used to enable or disable Command unsolicited printer status. Unlike the status information solicited by sending the INQUIRE, DINQUIRE, or INFO commands, unsolicited status is sent automatically when the status changes. Use the USTATUS command when you want to know: Device status changes (such as printer open, paper jams, and paper out conditions)
Page 141
Parameters: Variable Value Description DEVICE Enables unsolicited device status for all status changes (see the “DEVICE Variable” description below) VERBOSE Enables unsolicited device status for all status changes plus notification of all PJL parser warnings and errors. The VERBOSE value should only be used during application development.
Page 142
Comments: Unsolicited status allows you to automatically receive device, job, page, or timed status without requesting it. Each type of unsolicited status provides different information and is described on the following pages. Some printer models may have more (or fewer) types of unsolicited status than DEVICE, JOB, PAGE, and TIMED.
Page 143
Note For those printers supporting Japanese printing, when the language is set to Japanese, strings which correspond to a control panel message are displayed on the control panel using the JIS X0201-76 character set. Status Category Description Informational messages which do not indicate errors, such as (10-000 to 10-999) “Device was put online and is ready”...
Page 144
Status Category Description These conditions indicate PJL file system errors and their (32-000 to 32-999) corresponding error codes and control panel display strings. Messages indicating that operator intervention may be required. (35-000 to 35-999) The printer stays online and continues printing, with the potential for reduced capability.
Page 145
JOB Variable The USTATUS JOB = ON command is used to notify the application every time a JOB command is encountered, when the final page of a job is in the output tray and an EOJ command has been received, and when a job has been canceled (HP LaserJet 4000 series, 5, 5M, 5Si/5SiMx/ 5Si Mopier only).
Page 146
Note HP LaserJet 4000 series, 5Si, and 5SiMx printers, and the 5SiMx Mopier support job cancellation. For information about unsolicited job status during job cancellation, see the “Job Cancellation” section in Chapter 5. Example: Using This example turns on unsolicited job status so that the spooler can be notified when the job starts and completely Unsolicited Job finishes.
Page 147
The printer sends the unsolicited status associated with the JOB command when the JOB command is parsed. The printer sends the unsolicited status associated with the EOJ command when all of the pages received before the EOJ command have been printed. To maximize performance, HP printers start processing the next job before the last page of the current job has been printed.
Page 148
Example: Using The following example enables unsolicited page status. The sample HP LaserJet 4 printer response indicates the status Unsolicited Page messages that the printer sends when processing a four-page Status job. <ESC>%-12345X@PJL <CR><LF> @PJL USTATUS PAGE = ON <CR><LF> @PJL JOB <CR><LF>...
Page 149
TIMED Variable The TIMED variable allows “automatic polling” of the printer without host intervention and without exiting the current printer language (back to PJL). Values from 5 to 300 indicate the time interval between status messages, in seconds. This feature is turned off by setting the value to 0. The status message returned when this command is enabled is similar to that solicited by the INFO STATUS command.
Page 150
Example: Using In this example, a status message is sent to the host every 30 seconds. Timed Unsolicited Status <ESC>%-12345X@PJL <CR><LF> @PJL USTATUS TIMED = 30 <CR><LF> <ESC>%-12345X A sample HP LaserJet 4 printer response is shown below. Other PJL printers may respond differently. @PJL USTATUS TIMED<CR><LF>...
USTATUSOFF The USTATUSOFF command turns off all unsolicited Command status. This command eliminates the need to send several commands to turn off different types of USTATUS. Syntax: @PJL USTATUSOFF [<CR>]<LF> Parameters: There are no parameters for this command. Example: Using the This example uses the USTATUSOFF command to disable all unsolicited status before specifying the desired USTATUSOFF...
Job Recovery PJL provides job recovery capability using the following combination of commands: The JOB and EOJ commands are used to reset the page count and inform the printer of the boundaries for the job—its beginning and end. The USTATUS PAGE command is used to determine how many pages are completely printed.
After Job Failure Once the spooler senses that the job failed (in this case, due to a power failure), the job can be recovered by resending it using the JOB command with the START option. Set the page number in the START option to the number of the last page printed plus 1.
Page 154
@PJL USTATUS PAGE<CR><LF> 100<CR><LF> <FF> @PJL USTATUS JOB<CR><LF> END<CR><LF> NAME="End of Recovery"<CR><LF> PAGES=75<CR><LF> <FF> The unsolicited page status indicates that the 100th page printed (25 processed in non-printing mode and 75 printed pages). The job status indicates that the EOJ command was received and that 75 pages were printed in the recovery job.
Device Attendance Commands Introduction PJL enables you to change messages displayed on the printer control panel. This capability is useful for alerting operators to perform specific actions, such as loading paper or pressing keys. This chapter describes the following three device attendance commands: RDYMSG specifies a “ready message”...
RDYMSG The RDYMSG command replaces the control panel’s Command “ready” message with the specified message. Use the RDYMSG command to modify the displayed message while keeping the printer online. Syntax: @PJL RDYMSG DISPLAY = " message " [<CR>]<LF> Parameters: Parameter Functional Range Default DISPLAY = "message"...
Page 157
CZECH, or HUNGARIAN, messages are displayed using the Latin 2 (ISO 8859/2) character set. If LANG is RUSSIAN, messages are displayed using Cyrillic (ISO 8859/51). For LANG=TURKISH, the display is in Latin 5 (ISO 8859/9). Some HP LaserJet printers may have a different limit for the number of display lines and number of display characters.
OPMSG Command The OPMSG command prompts the printer to display the specified message and go offline. Use this command to display a message and halt printing until the operator presses the On Line, Continue, or Reset key. Syntax: @PJL OPMSG DISPLAY = " message " [<CR>]<LF> Parameters: Parameter Functional Range...
Page 159
For the LaserJet 4000 printer, if LANG is set to POLISH, CZECH, or HUNGARIAN, messages are displayed using the Latin 2 (ISO 8859/2) character set. If LANG is RUSSIAN, messages are displayed using Cyrillic (ISO 8859/51). For LANG=TURKISH, the display is in Latin 5 (ISO 8859/9).
STMSG Command The STMSG command prompts the printer to display the specified message, go offline, and return a status message indicating which key the operator pressed to return the printer online. Use this command to display a customized message, to halt printing until the operator presses the On Line, Continue, or Reset key, and to take a different action depending on which key the user presses.
Page 161
Note For HP LaserJet 4PJ, 4V, 4MV, 5Si, 5SiMx, 5Si Mopier printers, if the LANG variable is set to Japanese, messages are displayed using the JIS X0201-76 character set. For the LaserJet 4000 printer, if LANG is set to POLISH, CZECH, or HUNGARIAN, messages are displayed using the Latin 2 (ISO 8859/2) character set.
Page 162
The returned message, if the operator presses the Continue key, is: @PJL STMSG DISPLAY="LOAD FORM 1040" CONTINUE <FF> Related Commands: OPMSG, RDYMSG, INFO CONFIG 8-8 Device Attendance Commands...
PJL File System Commands Introduction Several HP LaserJet printers have mass storage capabilities for storing fonts, macros, electronic forms, and other information. The HP LaserJet 4000 series, 5Si, 5SiMx, and 5Si Mopier printers have an optional disk drive. The HP LaserJet 5, 5M, and 4000 series printers support flash memory, which is non-volatile memory contained in modules that are inserted into the printer’s SIMM/DIMM slots.
FSAPPEND The FSAPPEND command appends data to an existing file, Command or if the file doesn’t exist, creates the file and loads it with the given data. Syntax: @PJL FSAPPEND FORMAT:BINARY SIZE= integer ~NAME = " pathname " [<CR>]<LF> < binary data ><ESC>%-12345X Parameters: Parameter Functional Range...
Page 165
Examples of valid pathnames include: Volume 0 Root directory on volume 0 0:\MyDir \MyDir directory 0:\My/Dir\Gen/Dir \Gen/Dir directory in \My/Dir directory 0:\dir0\file1 file1 file in \dir0 directory 0:\DIR1\DIR2\File1 File1 file in \DIR2 directory in \DIR1 directory 0:\DIR1\Prefix/Suffix Prefix/Suffix file in \DIR1 directory <binary data>...
FSDIRLIST The FSDIRLIST command returns a list of files and Command directories which exist within the specified directory on the printer’s file system. This command is similar in function to the DOS DIR command. The ENTRY and COUNT parameters are used to limit the amount of data returned to the host.
beginning with line 5, you would use ENTRY=5. The entry value must be greater than 0. Also, if the entry value is larger than the actual number of entries, the response will not include any entries. COUNT = integer — The count variable specifies the number of entries to be returned.
FSDELETE The FSDELETE command is used to delete files or empty Command directories from the printer’s file system. Syntax: @PJL FSDELETE NAME = " pathname " [<CR>]<LF> Parameters: Parameter Functional Range Default NAME = "pathname" Roman-8 characters 01 thru 255 NAME = "pathname"...
FSDOWNLOAD The FSDOWNLOAD command downloads a file to the Command printer file system. If a file with the same name exists, the downloaded file overwrites it. Syntax: @PJL FSDOWNLOAD FORMAT:BINARY SIZE= int ~NAME = " pathname " [<CR>]<LF> < binary data ><ESC>%-12345X Parameters: Parameter Functional Range...
FSINIT Command The FSINIT command is used to initialize the printer’s mass storage file system. This FSINIT command must be part of a secure job. Syntax: @PJL FSINIT VOLUME = " pathname " [<CR>]<LF> Parameters: Parameter Functional Range Default VOLUME = "pathname" 0: or 1:* * Volume 1: is only supported on the LaserJet 4000 printer.
FSMKDIR The FSMKDIR command creates the specified directory on Command the printer file system. Syntax: @PJL FSMKDIR NAME = " pathname " [<CR>]<LF> Parameters: Parameter Functional Range Default NAME = "pathname" Roman-8 characters 01 thru 255 NAME = "pathname" — For the FSMKDIR command, "pathname"...
FSQUERY The FSQUERY command is used to determine if a given Command entry exists within the file system, the type of entry (file or directory), and if it is a file, the file size in bytes. Syntax: @PJL FSQUERY NAME = " pathname " [<CR>]<LF> Response Syntax: If pathname is a file: @PJL FSQUERY NAME="...
Page 173
command contained an illegal NAME variable. See PJL File System Errors (32xxx) in Appendix D for a complete list of error codes. Example: The following two command lines demonstrate using the FSQUERY command to check for the existence of a file and Using the FSQUERY a directory on the printer’s file system.
FSUPLOAD The FSUPLOAD command uploads a file, or a part of a file, Command from the printer file system to the host. Syntax: @PJL FSUPLOAD NAME = " pathname " ~OFFSET=<number> SIZE=<number>[<CR>]<LF> Response Syntax: If the pathname is valid: @PJL FSUPLOAD FORMAT:BINARY ~NAME = "...
Page 175
SIZE = integer — The size variable indicates the number of bytes to be uploaded. If the amount of data in the file after OFFSET is less than the specified size value, the remainder of the file is returned and the SIZE value in the response indicates the actual amount of uploaded data.
File System The following is a sequence of commands that can be sent Example to HP LaserJet 5, 5M, 5Si, 5Si MX, and 5Si Mopier printers to download and call a macro from the flash memory or hard disk. See the sections following this example for a description of each command.
Page 177
This PJL command creates the macros sub-directory under the pcl directory. Fourth Command @PJL FSDOWNLOAD FORMAT:BINARY ~NAME =“0:\pcl\macros\a_macro” SIZE=29<CR><LF> <ESC>*p900x1500YThis is the macro ~<ESC>%-12345X This PJL command does several things. First, it specifies the download format to be binary (FORMAT:BINARY). Second, it specifies the macro’s pathname on the file system (NAME = “0:\pcl\macros\a_macro”).
Page 178
Eighth Command <ESC>&f4X The Macro Control command with a value of 4 enables automatic overlay for the macro with the last specified ID. That is, this command prints the macro. Note that <ESC>&f2X and <ESC>&f3X will also work here. Ninth Command <ESC>E The Printer Reset command causes the printer to print and eject the page.
Page 179
Example Summary The FSDOWNLOAD command downloads data to printers which support this command. This command allows data to be downloaded to either the printers internal disk (such as available in HP LaserJet 4000 series, 5Si, 5SiMx, and 5Si Mopier printers) or flash memory (such as available in HP LaserJet 5, 5M, and 4000 series printers).
Programming Tips for Using PJL Introduction When using most printer languages, there is usually more than one way to perform a certain printing function. PJL is no exception. Properly formed PJL jobs provide the developer with the desired features while eliminating glitches.
PJL Services This section segments applications into three types based on the services provided. Applications using PJL can be categorized as one of the following: Print Data Generators—Applications that generate print jobs, such as Lotus 1-2-3, Microsoft Word, and WordPerfect. Printer Utilities—Applications that control printer features, or request and provide printer status.
Print Data Print Data Generators are applications used to create and Generators print information. Examples include WordPerfect, Harvard Graphics, and Lotus 1-2-3. Software applications of this type should work properly when the printer is under the direct control of the application, and also when there is a spooler between the application and the printer.
Page 184
Print Data Generator The following two examples demonstrate how applications categorized as “Print Data Generators” should use PJL. Examples Both examples work well if sent directly to the printer or through a spooler. Jobs That Select a Printer Language This example selects a printer language using the ENTER command.
Printer Utilities Printer utilities are those applications that perform one or more of the following functions: Control printer resources—These programs set printer features such as the print resolution and number of copies using the SET, RESET, DEFAULT, and INITIALIZE commands. Request information from the printer—Printer status and feature settings can be requested from the printer using the ECHO, INFO, INQUIRE, and...
Page 186
Commands Used by Printer Utilities Use before and after every PJL job. COMMENT Use to add explanations within PJL code. To modify a printer feature until the next PJL reset condition. RESET To set the printer to its user default feature settings.
Page 187
Printer Utility The following three examples demonstrate the kind of PJL jobs used by Printer Utilities: Examples Jobs that request information and perform printer setup Jobs that request information, set features, and print existing files Jobs that monitor printing status Jobs that Request Information and Perform Print Setup The following example demonstrates a job setup utility that first asks for printer information, then sets default features...
Page 188
(Changing the Default Values) <ESC>%-12345X@PJL <CR><LF> @PJL COMMENT Set desired values <CR><LF> @PJL DEFAULT RET = DARK <CR><LF> @PJL DEFAULT RESOLUTION = 600 <CR><LF> @PJL COMMENT Reset PJL to ensure default ~values take effect <CR><LF> @PJL RESET <CR><LF> <ESC>%-12345X Jobs That Request Information, Set Features and Print Existing Files The following example requests information using the INQUIRE command, sets printer features using the SET...
Page 189
@PJL SET RESOLUTION = 600 <CR><LF> @PJL ENTER LANGUAGE = PCL <CR><LF> <ESC>E . . . PCL file . . .<ESC>E ~<ESC>%-12345X@PJL <CR><LF> @PJL COMMENT Reset PJL to restore <CR><LF> @PJL COMMENT control panel defaults <CR><LF> @PJL RESET <CR><LF> <ESC>%-12345X Jobs That Monitor Printing Status The following example enables unsolicited printer status using the USTATUS DEVICE command.
Spoolers Spoolers are applications that control and/or monitor print jobs generated by other applications. Spooling applications should use only PJL job-related commands when controlling the flow of print jobs to the printer. Encapsulate each print job with the JOB command at the beginning and the EOJ command at the end (the UEL command is always the first and last command in all PJL jobs).
Page 191
Select a Printer Language or Print a Banner Page— If the spooler is responsible for printer language selection or printing banner pages, use the ENTER LANGUAGE command. (Performance is not adversely affected if both the application file and the spooler send the ENTER LANGUAGE command.) Print selected pages of jobs—Use the JOB command with the START and END options to specify which pages...
Page 192
ECHO To synchronize status readback information. The application should send an ECHO command before any other status readback commands; all status responses before the returned ECHO response should be discarded to ensure proper synchronization. STMSG To display a customized message and take the printer off-line until the operator presses the On Line, Continue, Job Cancel, or Reset key.
Page 193
Jobs That Monitor Job Progress and Confirm Job Completion This example enables the spooler to receive notification as each page is finished printing, and when the entire job has finished. The USTATUS JOB = ON command enables unsolicited job status and the USTATUS PAGE = ON command enables page status.
Page 194
When USTATUS PAGE = ON, the first unsolicited page status message is sent after page 1 lands in the output tray: @PJL USTATUS PAGE <FF> Additional page status messages are sent after each succeeding page lands in the output tray. After the job is completely printed, the host receives unsolicited page and job status as follows (assuming a 38-page job): @PJL USTATUS PAGE...
Page 195
Jobs That Notify the User to Load Specific Forms or Paper This example displays a message to “LOAD FORM 1040” and takes the printer off-line. When the form is loaded and the On Line or Continue key is pressed, the form is printed. <ESC>%-12345X@PJL <CR><LF>...
Page 196
<ESC>%-12345X@PJL <CR><LF> @PJL COMMENT Printing selected pages <CR><LF> @PJL JOB START = 5 END = 8 <CR><LF> <ESC>%-12345X@PJL <CR><LF> @PJL ENTER LANGUAGE = PCL <CR><LF> <ESC>E . . . PCL print job . . .<ESC>E ~<ESC>%-12345X ~<ESC>%-12345X@PJL <CR><LF> @PJL EOJ <CR><LF> <ESC>%-12345X Spooler Job That Prints a Banner Page Followed by an Application-Generated Job (Application specifies printer...
Page 197
Spooler Job That Prints a Banner Page Followed by an Application-Generated Job (Application Does Not Specify Printer Language) The following example demonstrates a spooling application that prints a banner page. The application was not created with a PJL-ready driver, so it does not begin and end with UEL commands, or specify the printer language—the printer implicitly switches to the correct printer language.
Requesting Printer When querying the printer for status, the response is not Status immediate. Wait a fixed amount of time for a response and then time out. If the printer is still working on a previous print job, it may take a while before a response is received. Your application should be able to discard unexpected status, such as unsolicited status, and discard unrecognizable lines.
Page 199
EOJ command at the end of each job. Using unsolicited PJL job status, the I/O card could sent a network packet to an application on the client that supplied the job, notifying the user the job had been printed. Printer status readback allows many printer system components to solve user’s needs.
Page 200
Example Printing Figure 10-1 contains an example printing system. The print system contains one I/O-switching LaserJet printer which System is connected to seven computers. Host computer #1 is connected via the serial I/O interface. Host computers #2 and #3 are connected through an external printer sharing box that also buffers print job data.
Page 201
Host computers #2 and #3 are connected to the printer via an external printer sharing box that buffers data. If the printer sharing box was not designed to support bi-directional communication with the printer, then applications on host computers #2 and #3 will not be able to receive printer status readback information.
Page 202
communication cable is between the printer and those components). In summary, an application running on host computer #1 can receive printer responses if the operating system on the host computer supports bi-directional communication over the serial I/O interface. The application may have to wait for the printer’s response if the printer is processing a job from either the Bi-Tronics I/O interface or the MIO interface.
Page 203
The other primary use for printer status readback is to allow applications to monitor the state of the printer. In particular, applications can inform the user when the printer requires intervention (e.g. fill paper trays). If the application enables unsolicited PJL device status, the printer will inform the application whenever the printer’s status changes.
Page 204
not receive a response within three seconds, then the application can assume printer status readback is currently unavailable. In some printing environments, the application may be able to distinguish between the host operating system not being able to send the query, and the query being sent without receiving a response in a reasonable amount of time.
Page 205
print jobs the printer may process before processing the application’s query. When processing a job, I/O switching paces off all I/O interfaces except for the one which is providing the current print job. However, it is possible for an application to get a few bytes of data into the inactive I/O interface before the printer paces off that I/O interface.
Page 206
received the last data byte. If the application queries the printer and waits for a response, it is possible for I/O interface idle time to exceed the set timeout value (the TIMEOUT environment variable). When the printer detects the current I/O interface timed out, the printer allows I/O switching and treats any data received over the I/O interface as unrelated to the data previously received over that interface.
Page 207
There is also a chance the PJL ECHO response will never by sent by the printer, due to overflowing of the printer’s response data buffer as discussed in the following section. Response Data The printer contains a limited amount of memory. It is possible for an application to fill all available printer Buffer Overflow memory with printer status readback responses that have...
Page 208
The application should always send a PJL ECHO command to resynchronize with the printer status readback responses (i.e. get rid of any old responses). However, if the printer’s response data buffer is full and the printer is discarding all future responses, then the host will receive a PJL unsolicited “printer to host data buffer overflow”...
Page 209
know which I/O interface to use when sending solicited printer responses. When the printer sharing device sends data to the printer from a different I/O interface, the printer sharing device must know to the exact byte boundary what printer response data should be sent to the previous I/O interface and what data should be sent to the current I/O interface.
Page 210
Application Design The previous pages have described various printing system topologies and how components in those topologies can Ideas operate so each printer system component can receive printer status readback responses. This section discusses application design ideas that handle the complexities involved with using printer status readback information.
Page 211
query and one generated because of the resent query). If the application is using an outstanding solicited query list, then when the first response is received, the query will be removed from the list. When the second response is received, the second response will be ignored because there is no matching query in the outstanding solicited query list.
PJL printer. Also, a list of environment variables shows the range of environment variables supported by each printer. The final portion of the appendix describes some important product-specific information regarding the different Hewlett-Packard printers. Feature Support A-1...
PJL Feature The following three tables list the PJL commands and show Support command support by each printer. “Y” indicates a command is supported; “ns” indicates it is not supported. Table A-1. PJL Feature Support for HP LaserJet Printers PJL Command Name IIISi 4/4M 4 Plus 4M Plus...
Page 215
Table A-1. PJL Feature Support for HP LaserJet, DeskJet, and PaintJet Printers LaserJet Color LJ DeskJet DeskJet PaintJet Command Name 4000 Series Color LJ 1200C 1600C XL300 5/5M COMMENT DEFAULT DINQUIRE ECHO ENTER FSAPPEND, FSDIRLIST, FSQUERY, FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR INFO INITIALIZE...
Page 216
Table A-1. PJL Feature Support for HP DesignJet Printers/Plotters 200, 230, 250C, 330, 650C 700, 750C Plus, Command Name 350C, 430, 450C, 750C, 755CM, 455CA 2000CP, 2500CP COMMENT DEFAULT DINQUIRE ECHO ENTER FSDELETE FSDOWNLOAD FSINIT FSMKDIR INFO INITIALIZE INQUIRE OPMSG RDYMSG RESET STMSG...
PJL Environment The following tables list all of the current environment Variable Support variables for PJL, PCL 5 and PostScript, and show which features are supported by which printers (features for the LaserJet and DeskJet 1600C printers are shown in Table A-2; the DesignJet printers are shown in Table A-3 on pages A-26 and A-27 ).
Page 218
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series AUTOCONT (OFF) AUTOSELECT (ON) BINDING (LONGEDGE) SHORTEDGE BITSPERPIXEL 1 or (2) CLEARABLE- WARNINGS (ON) CONTEXT- (ON) SWITCH COPIES (1) to 999 COURIER (REGULAR) DARK...
Page 219
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 LC 1600C Variable Values 4LJ Pro 5SiMx, Mopier AUTOCONT (OFF) AUTOSELECT (ON) BINDING (LONGEDGE) SHORTEDGE BITSPERPIXEL 1 or (2) CLEARABLE- WARNINGS (ON) CONTEXT- (ON) SWITCH COPIES (1) to 999 COURIER (REGULAR)
Page 220
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series IMAGEADAPT (AUTO) INTRAY1 (UNLOCKED) LOCKED INTRAY2 (UNLOCKED) LOCKED INTRAY3 (UNLOCKED) LOCKED INTRAY1SIZE (LETTER) LEGAL EXECUTIVE LEDGER JISB4 JISB5 CUSTOM COM10 MONARCH C5, DL...
Page 224
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series LANG DANISH GERMAN ENGLISH SPANISH FRENCH ITALIAN DUTCH NORWEGIAN POLISH PORTUGUESE FINNISH SWEDISH TURKISH JAPANESE CHINESE CZECH HUNGARIAN RUSSIAN LOWTONER (ON) (CONTINUE)
Page 225
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 LC 1600C Variable Values 4LJ Pro 5SiMx, Mopier LANG DANISH GERMAN ENGLISH SPANISH FRENCH ITALIAN DUTCH NORWEGIAN POLISH PORTUGUESE FINNISH SWEDISH TURKISH JAPANESE CHINESE CZECH HUNGARIAN RUSSIAN LOWTONER (ON)
Page 226
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series MPTRAY MANUAL CASSETTE (RO) FIRST (RO) (RO) ORIENTATION (PORTRAIT) LANDSCAPE OUTBIN (UPPER) LOWER OPTIONAL OUTPUTBIN1...62 OUTLINEPOINT- 0 to 999 (72) SIZE PAGEPROTECT LETTER.
Page 227
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 LC 1600C Variable Values 4LJ Pro 5SiMx, Mopier MPTRAY MANUAL CASSETTE FIRST ORIENTATION (PORTRAIT) LANDSCAPE OUTBIN (UPPER) LOWER OPTIONALOUT PUTBIN1 . . . 62 OUTLINEPOINT- 0 to 999 (72) SIZE PAGEPROTECT LETTER, LEGAL...
Page 228
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series PARALLEL SLOW FAST PASSWORD (0) to 65535 PERSONALITY AUTO POSTSCRIPT ESCP INSTALLED POWERSAVE POWERSAVE- TIME PRINTQUALITY DRAFT NORMAL HIGH (1) to 999 RENDERMODE COLOR...
Page 229
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 LC 1600C Variable Values 4LJ Pro 5SiMx, Mopier PARALLEL SLOW FAST PASSWORD (0) to 65535 PERSONALITY AUTO POSTSCRIPT ESCP INSTALLED POWERSAVE (ON) POWERSAVE- TIME PRINTQUALITY DRAFT NORMAL HIGH (1) to 999...
Page 230
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series RESOURCESAVE AUTO RESOURCE- 0 to maximum SAVESIZE available memory (in100 Kbyte increments) LIGHT MEDIUM DARK TIMEOUT 5 to 300 (15) WIDEA4 (NO) These variables can only be used with the DEFAULT, DINQUIRE, and INQUIRE commands.
Page 231
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 LC 1600C Variable Values 4LJ Pro 5SiMx, Mopier RESOURCESAVE AUTO RESOURCE- 0 – max. SAVESIZE available memory (100 Kb increments) LIGHT MEDIUM DARK TIMEOUT 5 to 300 (15) WIDEA4 (NO) PCL-Specific Variables...
Page 232
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series SYMSET DESKTOP (continued on the ISO4 following pages) ISO6 ISO11 ISO15 ISO17 ISO21 ISO60 ISO69 ISOL1 ISOL2 ISOL5 ISOL6 LEGAL MATH8 MCTEXT...
Page 233
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 LC 1600C Variable Values 4LJ Pro 5SiMx, Mopier SYMSET DESKTOP (continued on the ISO4 following pages) ISO6 ISO11 ISO15 ISO17 ISO21 ISO60 ISO69 ISOL1 ISOL2 ISOL5 ISOL6 LEGAL MATH8...
Page 234
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series SYMSET VNINTL continued VNMATH VNUS WIN30 WINBALT WINL1 WINL2 WINL5 WIN31J Port-Specific Variables PERSONALITY ESCP ESC/P-Specific Variables CARRIAGE- (CR) RETURN CRLF CHARACTER-SET (KANA)
Page 236
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 Plus 4000 Variable Values 4MPlus 4SiMx Series PostScript-Specific Variables ADOBEMBT (AUTO) JAMRECOVERY (OFF) PRTPSERRS (OFF) Provided PostScript is installed. PostScript is an option in some printers. A-24 Feature Support...
Page 237
Table A-2. PJL Environment Variables for HP LaserJet and DeskJet Printers Environment Variable 4 LC 1600C Variable Values 4LJ Pro 5SiMx, Mopier PostScript-Specific Variables ADOBEMBT (AUTO) JAMRECOVERY (OFF) PRTPSERRS (OFF) Provided PostScript is installed. PostScript is an option in some printers. Feature Support A-25...
Page 238
Table A-3. PJL Environment Variables for HP DesignJets Environment Variable 250C 350C 450C 455CA Variable Values MARGINS NORMAL SMALLER EXTENDED MIRROR (OFF) ORIENTATION (PORTRAIT) LANDSCAPE PALETTESOURCE (DEVICE) SOFTWARE PAPERLENGTH 0 to 432000 PAPERWIDTH 0 to 432000 PRINTAREA (FULLSIZE) INKEDAREA RENDERMODE (COLOR) GRAYSCALE RESOLUTION...
Page 239
Table A-3. PJL Environment Variables for HP DesignJets Environment Variable 750C 750C 755CM 2000CP 2500CP Variable Values Plus MARGINS NORMAL SMALLER EXTENDED MIRROR (OFF) ORIENTATION (PORTRAIT) LANDSCAPE PALETTESOURCE (DEVICE) SOFTWARE PAPERLENGTH 0 to 432000 PAPERWIDTH 0 to 432000 PRINTAREA (FULLSIZE) INKEDAREA RENDERMODE (COLOR)
HP LaserJet IIISi The LaserJet IIISi printer implements the three PJL kernel Comments commands: ENTER, COMMENT, and the UEL command. As with other PJL printers, the HP LaserJet IIISi printer performs explicit printer language switching using the ENTER command. To enable the printer for language switching, the SYS SWITCH control panel setting must be set to ON.
Comments about This section explains some important points that should be HP LaserJet considered when using PJL with HP LaserJet 4, LaserJet 5, and Color LaserJet printer families, and the HP LaserJet Printers 6P/6MP printers. Support for the features described in this section varies.
Page 242
Although the printer can accurately select printer languages this way, we recommend that every job containing printable data include an ENTER LANGUAGE command to explicitly switch to the correct printer language. This method improves performance and eliminates errors in printer language switching. It also guarantees that the correct language is always selected.
Page 243
Four conditions may cause the printer to reconfigure user memory: When the printer language changes, either implicitly or explicitly by using the ENTER LANGUAGE command (except when resource saving is enabled). When the page protection setting changes, using the SET or DEFAULT commands, or when the printer is reset using the RESET or INITIALIZE commands or by using the control panel.
Page 244
LaserJet 4 Plus, 4M Plus, 4V, and 4MV printers. For HP LaserJet 4Si/4SiMx and 5Si/5SiMx printers, resource saving is only configurable from the control panel. Printer-Specific Job Printers that support PJL job boundaries: Boundaries HP LaserJet 4, 4M, 4 Plus, 4M Plus, 4V, 4MV, 4Si, 4SiMx, 4ML, 4P, 4MP, 4PJ, 4LJ Pro, 4LC, 4000 series, 5, 5M, 5P, 5MP, 6P, 6MP, 5Si, 5SiMx, 5Si Mopier, HP Color LaserJet, HP Color LaserJet 5, 5M...
Page 245
Timeouts Printers that support the TIMEOUT variable: HP LaserJet 4, 4M, 4 Plus, 4M Plus, 4V, 4MV, 4Si, 4SiMx, 4ML, 4P, 4MP, 4PJ, 4LJ Pro, 4LC, 4000 series, 5, 5M, 5P, 5MP, 6P, 6MP, 5Si, 5SiMx, 5Si Mopier These printers have a timeout capability which is used to recover when jobs are interrupted by situations such as power failures.
Page 246
There are two differences between backward-compatibility mode and normal operating mode. In backward-compatibility mode, when a PCL printer language reset (<ESC>E) is executed, instead of causing the PJL Current Environment variables to be loaded into the Modified Print Environment, the User Default Environment settings (control panel values) are loaded.
INITIALIZE commands. The password can only be changed from within a secure PJL job. On printers with a control panel, the control panel can be “locked out” so that users cannot modify settings using the control panel keys. This is accomplished using the DEFAULT command to set the CPLOCK variable to ON.
only one language, use the PJL ENTER LANGUAGE command to specify PCL. EconoMode—a toner-saving feature that produces draft-like pages when top-quality printing is not necessary. Color LaserJet The Color LaserJet printer supports context-sensitive Printer Comments language switching, true end-of-job notification, job boundary recognition, and automatic I/O switching.
Page 249
Under these conditions, the printer samples the incoming printable data and looks for indications of a particular printer language. Once it recognizes the printer language, the printer backs up to the beginning of the sampled print data and switches to the printer language determined to be most appropriate.
Page 250
Variables Not Stored in NVRAM COPIES PAGEPROTECT FORMLINES PAPER MEDIASOURCE PRINTQUALITY MEDIATYPE RENDERMODE ORIENTATION RESOLUTION Printer Status Printers that support printer status readback: Readback HP DeskJet 1600C, 1600M Because the DeskJet 1600C and 1600CM do not support USTATUS or INFO, only the requested status information will come back from the printer.
Page 251
protection, resolution, or printer language status. For example, if the resolution is at 600 dpi and an application sends the @PJL SET RESOLUTION = 600 command, memory is not reconfigured. Resource Saving None of the DeskJet 1200C or 1600C printer families support resource saving.
HP LaserJet 5Si/ HP LaserJet 5Si, 5SiMx, and 5Si Mopier printers have 5SiMx/5Si Mopier several features that differentiate them from most of the other LaserJet printers. The following features should be Comments kept in mind when writing PJL code for these printers. Three standard paper input sources are provided (two 500-sheet paper cassettes and a 100-sheet multi-purpose tray).
HP LaserJet 5Si PJL commands are used to specify the destination bin and Mopier Comments control printer functions such as stapling and collating multiple copies. Specifying the Documents are sent to specific output bins using the @PJL SET OUTBIN command. The HP LaserJet 5Si Output Bin Mopier bin definitions are as follows: Bin Description...
Page 254
Collating Multiple Multiple “mopies” of a job can be printed by sending the @PJL SET QTY command, followed by one copy of the job. Copies This saves network traffic because only one copy must be sent to the printer. The printer stores the job on the internal disk drive and then prints the desired number of collated copies without additional downloading.
HP LaserJet 4000 The LaserJet 4000 series printers have a PJL feature set Series Comments similar to the LaserJet 5Si/5SiMx printers. Listed below are some of the differences between the printers. In addition to the LaserJet 5Si/5SiMx printer features, the LaserJet 4000 series printers have: 1200 dpi print resolution Support for the Czechoslovakian, Hungarian, and...
Page 256
5. The software may resume sending data after it sees the printer go back online. 6. If the software does not detect the printer going offline and then back online within 5 seconds of the echo, the application may assume there is a printer error. Paper Tray The LaserJet 4000 series paper tray configurations are set up as follows:...
Page 259
FSQUERY @PJL FSQUERY NAME = " pathname " [<CR>]<LF> FSQUERY Response If pathname is a file: @PJL FSQUERY NAME=" pathname " TYPE=FILE SIZE= integer <CR><LF> <FF> If pathname is a directory: @PJL FSQUERY NAME=" pathname " TYPE=DIR<CR><LF> <FF> FSUPLOAD @PJL FSUPLOAD NAME = " pathname " OFFSET=<number> SIZE=<number>[<CR>]<LF>...
Page 260
INQUIRE @PJL INQUIRE [LPARM : personality | IPARM : port ] ~ variable [<CR>]<LF> INQUIRE Response @PJL INQUIRE [LPARM: personality | IPARM: port ] variable <CR><LF> value <CR><LF> <FF> @PJL JOB [NAME=" job name "][START= first page ][END= last page ] ~[PASSWORD = number ] <CR><LF>...
Page 261
STMSG Response @PJL STMSG DISPLAY=" message " <CR><LF> key <CR><LF> <FF> <ESC>%-12345X USTATUS @PJL USTATUS variable = value [<CR>]<LF> Unsolicited Status Message (not a response, but returned when printer events occur) @PJL USTATUS variable <CR><LF> [1 or more lines of printable characters or <WS> followed by <CR><LF>] <FF>...
Programming Examples Introduction This appendix demonstrates two examples: one PJL example using the C programming language, and one simple batch file. The first example is listed on the left-facing page in the generic format used throughout the rest of the manual. The C code is then listed on the opposite page so that you can compare the C code with the generic code.
Page 264
Example: The job in this example prints two pages: one in PCL and one in PostScript. The program first enters PCL, and then Switching Printer immediately enters HP-GL/2 to draw a box and print “PCL Languages Print Job.” Next, PostScript is entered and PostScript data is sent to the printer to draw a box and print “PostScript Job.”...
Page 265
/****************************************************/ SWITCH.C (Switching Printer Languages) /****************************************************/ #include <stdio.h> main() Notice the %% required to print the % character FILE *prn; /* initialization section */ /************ open PRN for writing ***************/ prn = fopen("lpt1","wb"); /****** Send UEL command and @PJL<CR><LF> *****/ fprintf(prn,"\033%%-12345X@PJL \n");...
Page 266
Example: This example demonstrates how to use a batch file to send PJL commands to the printer. In this example, the batch Using RDYMSG in a file acts as a spooler, using the RDYMSG command to Batch File display the file name while a print file is being downloaded. To send PJL commands this way, first create an ASCII file named UEL, containing only the UEL command (<ESC>%-12345X).
PJL Status Codes The status codes listed in this appendix are sent to the host in many of the status readback responses as “CODE = xxxxx,” where each “x” stands for a single digit 0 through 9. For example, if unsolicited status is enabled and the toner runs low, the following message is returned: @PJL USTATUS DEVICE CODE=10006...
Paper Jam Errors (42xyy) Optional (External) Paper Handling Device Errors (43xyy) LaserJet 4000 Series Paper Jam Information (44xyy) Hardware Errors (50xxx) The following pages list the status codes in numerical order, by groups. For a complete description of each control panel display string, see the user and service manuals for each printer.
Page 269
Status Control Panel Display String or Code Meaning Code 10013 04 SELF TEST 10011 18 AUX IO INIT or 18 AUX IO NT RDY or 18 MIO INIT or 18 MIO NOT RDY or HP MIO1 INITIALIZING or HP MIO2 INITIALIZING or HP MIO1 NOT READY or HP MIO2 NOT READY or HP MIO INITIALIZING 10014...
Status Control Panel Display String or Code Meaning Code 10030 Job message — a print job has been received containing the optional DISPLAY="message" token pair associated with the PJL JOB command. Background Paper Background paper loading messages appear when a paper input source is out of paper, but another paper source is Loading (11xyy) available and loaded with the correct paper size.
Page 271
YY = Media Code Media Size Unknown Envelope Letter Paper Legal Paper A4 Paper Executive Paper Ledger Paper A3 Paper COM10 Envelope Monarch Envelope C5 Envelope DL Envelope Japan B4 Paper Japan B5 Paper B5 Envelope Custom Media Paper J-Postcard J-RoundTrip Postcard A5 Paper Letter-R Paper...
Background Paper Background paper tray status messages occur when a tray is open or a tray is lifting. Background paper tray status Tray Status (12xyy) messages are in the format 12xyy. The following tables list the x and y values for these messages. For example, 12301 indicates the lower cassette tray is open.
PJL Parser Errors These status codes denote PJL parser errors. The entire PJL command line is ignored. (Some of the status codes (20xxx) refer to portions of PJL commands such as “command modifiers” and “alphanumeric values.” For a description of the PJL command format, see “Format of PJL Commands”...
Status Display String or Code Meaning Code 20019 Numeric value encountered when an alphanumeric value expected 20020 String encountered when an alphanumeric value expected 20021 Unsupported command modifier 20022 Command modifier missing 20023 Option missing 20024 Extra data received after option name (used for commands like SET that limit the number of options supported) 20025...
Status Display String or Code Meaning Code 25011 Ignored option name due to value underflow or overflow 25012 Value for option experienced data loss due to data conversion (value truncated or rounded) 25013 Value for option experienced data loss due to value being out of range;...
Page 276
Status Display String or Code Meaning Code 27005 Can only use DEFAULT with this variable; cannot use SET. 27006 Attempted to pass a NULL string to a command or command option that requires the string to contain at least one character. 27007 Attempted to DEFAULT a variable which can only be SET.
Auto-Continuable This list specifies the set of PJL error codes and corresponding control panel display strings for Conditions (30xxx) auto-continuable conditions. If no action is taken, the device automatically continues if auto-continue is set to true (except for 30035 and 30036 errors). Status Code Display String or Code Meaning 30010 *...
Page 278
Status Code Display String or Code Meaning 30095 41.2 BEAM DETECT MALFUNCTION 30096 41.3 IMPROPER PAPER SIZE or 41.3 UNEXPECTED PAPER SIZE 30097 41.4 NO VIDEO SYNC 30098 41.5 NOISY VIDEO SYNC REQ SIGNAL 30099 INVALID INPUT SOURCE 30100 INVALID OUTPUT DESTINATION 30101 BINDING AGENT OUT OF SUPPLIES 30102...
PJL File System This list specifies the set of error codes for the PJL file system. Errors (32xxx) Status Display String or Code Meaning Code 32000 General error 32001 Volume not available 32002 Disk full 32003 File not found 32004 No free file descriptors 32005 Invalid number of bytes...
Status Display String or Code Meaning Code 32023 Bad seek 32024 Internal error 32025 Write only 32026 Write protected 32027 No filename 32051 End of directory 32052 No file system 32053 No memory 32054 Vol name out of range 32055 Bad FS 32056 Hardware failure...
Page 281
Status Code Display String or Code Meaning 35041 W8 JOB 600/OFF 35042 W7 JOB 300/LGL * 35043 W5 JOB 300/LTR * 35044 W6 JOB 300/A4 * 35045 W4 JOB 300/OFF * 35073 WM CHK MEM CNFIG or MEMORY SETTINGS CHANGED 35074 WM MEM CNFIG N/A 35075...
Operator Intervention This list specifies the set of PJL error codes and corresponding control panel display strings for conditions Conditions (40xxx) where operator intervention is required. Printing cannot continue until the condition is resolved. Status Code Display String or Code Meaning 40000 SLEEP MODE (STANDBY) * 40005...
Page 283
Status Code Display String or Code Meaning 40054 54 ERROR 40055 55 ERROR 40056 56 ERROR 40057 57 SERVICE or 57 MOTOR FAILURE, CALL SERVICE 40058 58 SERVICE or FAN MOTOR FAILURE, CALL SERVICE 40059 59 ERROR 40061 61.x SERVICE 40062 62.x SERVICE 40063...
Status Code Display String or Code Meaning 40100 56.2 ERROR PRESS SELECT KEY 40102 FINISHER ALIGN ERROR [BIN NAME] 40103 FINISH LIMIT REACHED [BIN NAME] 40104 INPUT DEVICE FEED PATH OPEN 40105 OUTPUT DEVICE DELIVERY PATH OPEN 40106 INPUT OPERATION ERROR X.YY 40107 OUTPUT OPERATION ERROR X.YY 40116...
Page 285
EE Tray or Envelope Feeder Any HCI Tray YY = Media Code Media Size Unknown Paper Unknown Envelope Letter Paper Legal Paper A4 Paper Executive Paper Ledger Paper A3 Paper COM10 Envelope Monarch Envelope C5 Envelope DL Envelope Japan B4 Paper Japan B5 Paper B5 Envelope Custom Media Paper...
YY = Media Code Media Size Japan B5-R Paper Exec-R Paper A6 Paper Foolscap Paper Japan B6 Paper Paper Jam Messages Foreground paper loading messages are sent when one of the paper input sources is out of paper and there is no other input (LaserJet 5Si/ source available and loaded with the correct paper size.
Page 287
Y = Jam Location Tray Non-specific jam Paper feed 1, paper late jam Paper feed 2, paper late jam Fuser output, paper late jam Fuser output, paper stopped jam Face down output, paper late jam Face down output, paper stopped 2-Sided turn around, paper late jam 2-Sided turn around, paper stopped 2-Sided path, paper late jam...
Optional (External) This category contains error messages related to any optional external paper handling devices. Paper Handling Device Messages The messages are in the format 43xyy, where x is the number (43xyy) of the paper handling device and yy is the error code. x = Device Paper Handling Device First device attached to PHC...
yy = Code Error Code PHC never ready during initialization FIFO empty when expecting data FIFO full when tray to send data Invalid page ACK (formatter not expecting a page ACK) Page ACK timeout Inconsistent paper size Wrong page ACK Device(s) never ready during installation Negative ACK of ready tray LaserJet 4000 Series...
Jam Location Paper jam in the front door area Paper jam in the left door area Paper jam in the right door area Hardware Errors These status codes are sent out when a hardware problem exists and the printer is working well enough to send status (50xxx) messages.
Page 291
Status Code Display String or Code Meaning 50013 51.2 ERROR PRESS SELECT KEY or LASER MALFUNCTION 50014 52.1 ERROR PRESS SELECT KEY or SCANNER STARTUP FAILURE 50015 52.2 ERROR PRESS SELECT KEY or SCANNER ROTATION FAILURE 50016 57.1 FAN FAILURE CALL SERVICE or FAN MOTOR 1 FAILURE 50017 57.2 FAN FAILURE CALL SERVICE or...
Page 292
Status Code Display String or Code Meaning 50027 DUPLEX ERROR CHECK DUPLEX UNIT or DUPLEX UNIT GUIDE FAILED AND REQUIRES SERVICE 50028 55.XX ERROR PRESS SELECT KEY or COMMUNICATION FAILURE BETWEEN FORMATTER AND ENGINE 50029 64 PRINTER ERROR CYCLE POWER or VIDEO DMA TRANSFER TIMED OUT 50030 FAN MOTOR 5 FAILURE...
Glossary This character indicates that the current command line is a continuation of the previous line. For example, “These ~words are all part of the same line.” The vertical bar, when shown in a command, indicates that either one or the other options may be selected, but not both.
Page 294
Automatic I/O Switching Automatic I/O switching allows data to be sent to any of the printer’s I/O ports without reconfiguring the active I/O port from the control panel. When the printer is turned on, all I/O ports are enabled to accept data. The first port to receive data is called the active I/O port.
Page 295
Default A value used instead of a programmatically selected value. A factory default is a value programmed into the printer at the factory; this value is stored in read-only memory and cannot be changed by a user or operator. A user default is a default value, stored in non-volatile RAM (in printers that have NVRAM), that is selectable using the control panel or the PJL DEFAULT command.
Page 296
Implicit Switching Implicit switching occurs when a printer language is activated due to reception of non-PJL data which is not preceded by a PJL ENTER command. (See context- sensitive printer language selection.) Job Boundary The beginning or end of a print job. The position between two characters of data in the data stream where the previous character is the last character of the previous print job, and the next character is the...
Non-Volatile Memory Random Access Memory where contents are preserved when the printer is powered off (volatile RAM is mem- ory where contents are not preserved when the device is powered off). Offline/Online Online is a condition during which the printer accepts data from the host computer.
Page 298
PJL Current Environment The PJL Current Environment is the set of features that is active when a PJL job is entered. As soon as a PJL job is entered, the PJL Current Environment set- tings are the same as the User Default Environment. Applications then can modify the PJL Current Environ- ment values using the PJL SET command.
Page 299
Poorly Formed Print Job A print job which either starts or ends with an invalid data stream sequence. For example, any job that does not begin and end with a UEL command is a poorly formed job. This manual describes how to create prop- erly formed print jobs and contains many examples to demonstrate them.
Page 300
Solicited Status Solicited status is printer status information that is specifically requested. For example, the command @PJL INFO ID solicits the printer’s ID. The printer responds to solicited status messages as they are received. See “unsolicited status.” Status Readback Sending printer status information from the printer to the host computer.
Page 301
User Default Environment The User Default Environment consists of the user default settings selected from the control panel or by way of the PJL DEFAULT command. The user default settings are stored in non-volatile memory (in those printers that have NVRAM). Those settings not selected using the control panel or PJL DEFAULT command are set to the factory default values.
Page 303
Index commands grouped by application COMMENT command 10010 error 10-27 example ~ (line continuation character) 2-2, G-1 compatibility of PJL @PJL compatibility with LaserJet III A-33 compatibility with PCL | (vertical bar) 2-2, G-1 compatibility with PostScript configuration configuration information active I/O port requesting 7-18...
Page 304
form feed character (FF) format of PJL commands ECHO command 7-2, 7-14, 10-29 FORMLINES variable 6-13 example 7-15 front panel control EconoMode A-36 FSAPPEND command ECONOMODE variable 6-13 FSDELETE command ENTER command 2-3, 4-4, 6-7 FSDIRLIST command example FSDOWNLOAD command ENTER LANGUAGE command A-30 FSINIT command...
Quick Index Command Page No. Command Description COMMENT Causes PJL to accept the command line as a comment. DEFAULT 6-32 Sets default value for environment variables. DINQUIRE Requests default value for specified environment variable. ECHO 7-14 Returns comment portion of command to host computer. ENTER Selects a printer language for processing the current job.