The configuration information for each PrintKit execution queue specifies the printer model controlled by the queue. The definition of the printer model, in turn, supplies many of the attributes PrintKit uses to prepare jobs and to control the printer. The PrintKit software is provided with a set of printer models already defined, and new model definitions are released frequently as updates to the software.

If you need a model definition that isn't supplied with the PrintKit software, please let us know. We can usually provide model definitions for new printers – or explain why a particular printer may not be a good match for PrintKit.

If you decide you need to create your own model definition, the following notes outline the basic procedure and point out some of the considerations in configuring a new definition. However, be aware that creating a model definition requires a technical understanding of printer and driver architectures, and is not to be undertaken lightly.

These notes apply to the PrintKit 2.3 software only. Model definitions are substantially different in the 2.2 software

PPD files supply model attributes

To add a new printer model, you first need a PostScript Printer Definition (PPD) file that describes the printer. The PPD file, a standard developed by Adobe Systems, describes the features of a particular printer and provides the printer-specific details required to control the printer. PPD files are normally supplied with PostScript printers. (And PrintKit uses PPD files to supply configuration information for even non-PostScript variants of printer models.)

Windows or Macintosh PostScript driver packages are good sources for PPD files, and your printer supplier may also be able to help you find a PPD file that matches your printer.

Choosing a model name

PPD files tend to have cryptic eight-letter names (so the names will be compatible across systems), but PrintKit allows more intelligible names for printer models. The names used for the models supplied with PrintKit are taken from the *ModelName entry in the PPD file. To avoid confusion, you should use the same conventions for models you add.

Usually you can use the model name as it appears in the PPD file. Conventionally, a PrintKit model name begins with the printer vendor's name – use the same conventions as existing definitions for the same vendor. Also, remove the detailed configuration information that some vendors include in the PPD model name, such as the printer's PostScript emulator version or resident font set.

Modifying the device control library

The PPD information for the printer model is stored in the PrintKit Device Control Library, which cannot be modified while PrintKit queues are active. On a lightly used system, you may be able to make changes to the library while the queues are idle, but on a more active system you will need to stop all PrintKit queues to add a new printer model. Use the KITCP STOP QUEUE/ALL command to stop all the PrintKit queues. (You can also use the DCL STOP/QUEUE command to stop the queues individually.)

If it is impractical to stop all the PrintKit queues on your system, you can also copy the PrintKit Device Control Library and apply your changes to this new version. Queues will gain access to the new library as they are stopped and started. The library is located in SYS$COMMON:[SYSLIB] – it is important the your copy remains in the SYS$COMMON directory, not in the SYS$SPECIFIC directory:

$ BACKUP SYS$COMMON:[SYSLIB]PRINTKIT023.TLB; -
SYS$COMMON:[SYSLIB]/NEW

Communications protocols

Most current printers support either lpr/lpd or socket job submission protocols, and often both. Generally, the lpr/lpd protocol works by transferring the print job to temporary storage on the printer (print spooling); interaction between client and printer ends once the job is transferred, the printer takes responsibility for scheduling and printing the job. With socket protocols (also called port 9100, for the TCP port used by the HP implementation), the job is typically printed as it is transferred, and the printer provides the client with status information as the job is processed.

Non-spooling printers can implement the lpr/lpd protocol by printing the job as it is received, and spooling printers can save a job transferred using the socket protocol.

It usually works best to match the protocol used by PrintKit to the printer's normal mode of operation. If the printer prints jobs as they are received and can provide status information through the socket protocol, this is the preferred choice for PrintKit, because it provides the best error reporting and job synchronization. If the printer spools jobs, the lpr/lpd protocol is the preferred choice.

Job control and emulations

If the printer supports HP Printer Job Language (PJL) job controls, configure the model definition to use PJL job control. Otherwise, use AIS job control to let the printer auto-select the correct emulations for jobs.

Most current printers used with PrintKit provide PostScript and PCL5 emulations.

If your printer does not support PostScript and PCL emulations, much of PrintKit's functionality will be unavailable. The Northlake technical note Configuring PrintKit for limited-function printers discusses the use of PrintKit with this class of printer.

Step-by-step

Here are the basic steps for creating a model definition. The example commands show an imaginary Acme LaserPrinter Model II printer. The printer uses the lpr/lpd protocol and supports PJL job control and PostScript and PCL emulations. It has a PPD file called ACNIFTY1.PPD that defines two input trays, TRAY1 and TRAY2.

1.Once you have the PPD file for the new model and your PrintKit queues are stopped, add the PPD entry to the PrintKit Device Control Library, using the LIBRARIAN command. By convention, PPD entries in the library always begin with PPD-. For your ACME printer, you would enter:

$ LIBRARIAN/REPLACE SYS$LIBRARY:PRINTKIT023.TLB -
ACNIFTY1.PPD /MODULE=PPD-ACNIFTY1

2.Use the KITCP ADD MODEL command to define the new model for PrintKit's use:

$ KITCP ADD MODEL "ACME LaserPrinter Model II" -
/PPD=ACNIFTY1 -
/JOB_CONTROL=(PJL=(JOB,SYNCH,STATUS,EMULATION), -
  POSTSCRIPT=(SYNCH,STATUS,EMULATION)) -
/DEFAULT=(JOB_CONTROL=PJL, -
  EMULATIONS=(TRANSPARENT,POSTSCRIPT,PCL), -
  COMMUNICATIONS=(TCP_LPR,PORT="lp", -
    OPTIONS=(SPOOLED=SYS$COMMON:[SYSMGR])))

3.If you need to make corrections or additions to a PrintKit printer model definition, use the KITCP MODIFY MODEL command:

$ KITCP MODIFY MODEL "ACME LaserPrinter Model II" -
/INPUT_TRAY_SUB=((TOP,TRAY1),(BOTTOM,TRAY2))

See also

The PrintKit User Manual, Appendix B, provides a concise description of the KITCP ADD MODEL and MODIFY MODEL commands.

The printer definitions distributed with PrintKit and the PrintKit Model Supplements provide plentiful examples of working model definitions. Definitions for similar printers can provide a good starting point for your model definition. Use the KITCP SHOW MODEL /FULL to display the model definitions installed on your system.

The PPD file format is a standard defined by Adobe Systems Incorporated in the PostScript Printer Description File Format Specification, available from the Adobe web site.

The Northlake technical note Configuring PrintKit for limited-function printers discusses the use of PrintKit with printers that do not support PostScript and PCL emulations.