Skip to main content

Listing of PJL commands that AppSocket uses

Submitted by Dave Brooks on
 HomePJL commandsStatus readbackPrinter emulationConfigureQuery printerTimeoutsVideo
AppSocket

 

What This Page Is About

RPM's AppSocket protocol scans PJL commands embedded in print jobs to extract useful metadata - things like who sent the job, what it's called, and how many copies to print. This page explains which commands we look for and how we process them.

Most of what you need is in the first three commands below. The rest handle edge cases.

The Big Three: Job Identity

@PJL SET JOBNAME = “x”

Extracts the jobname between the quotes, used for jobname

@PJL SET USERNAME = “x”

Extracts the username between quotes, used for job metadata

@PJL SET COPIES = x

Extracts the digits following the equal sign, used for job metadata


Job Control and timing

@PJL SET JOBIDVALUE = x

A unique identifier for this specific job. Useful if you need to track jobs across systems.

@PJL SET TIMEOUT = x 

How long to wait before assuming the job failed. We respect this if it's set.

@PJL JOB 

@PJL EOJ 

Marks the start and end of a job. If you have status readback turned on, we'll send confirmation when the job completes.


Status & Inquiry Commands

These let applications ask RPM questions about printer state or settings:

@PJL INFO type 

Asks for printer information. We generate responses based on your printer emulation settings.
(Exception: FILESYS queries get a "no file system" response since RPM doesn't manage printer filesystems.)

@PJL INQUIRE setting 

We check the emulation or any SET commands you've issued.

@PJL DINQUIRE setting 

"What's the default value?" Same answer, but defaults instead of current.

@PJL ECHO string 

"Repeat this back to me." We do. Useful for confirming communication.

@PJL USTATUS args 

Request status updates for DEVICE, JOB, PAGE, or TIMED events. See our for details.

@PJL USTATUSOFF 

Turns off all status updates.


Variable Management

@PJL SET variable = value

Updates a stored value. If the emulation knows about this variable, we add a "current" field. Otherwise, we create it fresh.

@PJL DEFAULT [setting] = x
Sets default values for COPIES, JOBIDVALUE, or TIMEOUT. Works like SET but establishes the baseline.


Language & Emulation

@PJL ENTER LANGUAGE x
Tells RPM which printer language (PCL, PostScript, etc.) the job uses. We store this in the job metadata. If USTATUS JOB is ON, we send a response.


Commands We Ignore

@PJL DMINFO x 

We return a "?" response, which means "not supported." This command is rarely used anyway.


Questions?

If you're seeing unexpected behavior with a PJL command not listed here, contact support with your job file and we'll help you figure out what's happening.