PostScript Printer Description

PostScript Printer Description (PPD) files are created by vendors to describe the entire set of features and capabilities available for their PostScript printers.

PostScript Printer Description
Filename extension
.ppd
Internet media type
text/plain, application/vnd.cups-ppd
Magic number*PPD-Adobe
Developed byAdobe Systems

A PPD also contains the PostScript code (commands) used to invoke features for the print job. As such, PPDs function as drivers for all PostScript printers, by providing a unified interface for the printer's capabilities and features. For example, a generic PPD file for all models of HP Color LaserJet contains:

*% =================================
*% Basic Device Capabilities
*% =================================
*LanguageLevel: "2"
*ColorDevice: True
*DefaultColorSpace: CMYK
*TTRasterizer: Type42
*FileSystem: False
*Throughput: "10"

which specifies that the printer understands PostScript Level 2, is a color device, and so forth. The PPD can describe allowable paper sizes, memory configurations, the minimum font set for the printer, and even specify a tree-based user interface for printer-specific configuration.

A PPD is also often called PostScript Page Description instead of Printer Description, this is because PostScript has the concept of Page Devices where the PostScript page description configuration is read from or saved as a PPD file.[1]

CUPS

edit

CUPS uses PPD drivers for all of its PostScript printers, and has even extended the concept to allow for PostScript printing to non-PostScript printing devices, by directing output through a CUPS filter. Such a file is no longer a standard PPD, but rather a "CUPS-PPD". CUPS clients usually read the current PPD file from the server every time a new print job is created. It is located in /usr/share/ppd/ or /usr/share/cups/model/.

/usr/share/ppd
├── cupsfilters
│   ├── Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd
│   ├── Generic-PDF_Printer-PDF.ppd
│   ├── HP-Color_LaserJet_CM3530_MFP-PDF.ppd
│   ├── pxlcolor.ppd
│   ├── pxlmono.ppd
│   └── Ricoh-PDF_Printer-PDF.ppd
├── cups-pdf
│   ├── CUPS-PDF_noopt.ppd
│   └── CUPS-PDF_opt.ppd
└── custom

Windows

edit

Microsoft Windows also uses PPD files but converts these to a binary .BPD file format before using them. These, both PPD and BPD, are normally stored in %WINDIR%\system32\spool\drivers\w32x86\3 on an x86 system, or %WINDIR%\System32\spool\drivers\x64\3 on a 64 bit system.

Updating a PPD file requires four steps:

  1. stop the spooling service;
  2. edit the existing PPD file in place or replace it by an updated version;
  3. remove the old BPD file;
  4. restart the spooling service.

This will automatically generate a new BPD from the updated PPD.

MIME type

edit

The MIME type for the CUPS variant of PPD is application/vnd.cups-ppd.[2]

References

edit
  1. ^ PostScript Language Reference Manual Chapter 6.1 Using Page Devices page 393.
  2. ^ IANA: https://www.iana.org/assignments/media-types/application/vnd.cups-ppd
edit