This document describes the PostScript Printer Description (PPD) file format and the supported extensions for the Common UNIX Printing System ("CUPS") Version 1.2. It should be used in conjunction with the Adobe PostScript Printer Description File Format Specification, Version 4.3 when creating PPD files for CUPS.
This CUPS PostScript Printer Description File Specification document is organized into the following sections:
PostScript Printer Description ("PPD") files describe the capabilities of each printer and are used by CUPS to support printer-specific features and intelligent filtering.
The PPD file format is described in Adobe TechNote #5003: PostScript Printer Description File Format Specification Version 4.3.
The format is text-based and uses lines of up to 255 characters terminated by a carriage return, linefeed, or combination of carriage return and line feed. The following ABNF definition [RFC2234] defines the general format of lines in a PPD file:
PPD-FILE = HEADER +(DATA / COMMENT / LINE-END) HEADER = "*" 0x50.50.44.2D.41.64.6F.62.65 ":" ; *PPD-Adobe: *WSP DQUOTE "4.3" DQUOTE LINE-END COMMENT = "*%" *TCHAR LINE-END DATA = "*" 1*KCHAR [ WSP 1*KCHAR [ "/" 1*TCHAR ] ] ":" 1*(*WSP VALUE) LINE-END VALUE = 1*TCHAR / DQUOTE 1*SCHAR DQUOTE KCHAR = ALPHA / DIGIT / "_" / "." / "-" SCHAR = LINE-END / WSP / %x21 / %x23-7E / %xA0-FF TCHAR = %x20-7E / %xA0-FF LINE-END = CR / LF / CR LF
This string attribute provides a conversion rule of the form:
source/type cost program
The destination type is assumed to the printer's type. If a printer supports the source type directly the special filter program "-" may be specified.
This boolean attribute notifies the RIP filters that the destination printer requires an upside-down image for the back page. The default value is false.
This boolean attribute notifies the RIP filters that the destination printer does not support copy generation in hardware. The default value is false.
This integer attribute specifies a printer-specific model number. This number can be used by a filter program to adjust the output for a specific model of printer.
This optional attribute describes which binary communication protocol to use when printing binary PostScript data. The strings "None", "BCP", and "TBCP" are recognized, corresponding to no encoding, BCP, and TBCP respectively.
This required attribute describes which version of the CUPS IDD was used for the PPD file extensions. Currently it must be the string "1.0", "1.1", or "1.2".
This string attribute specifies a color profile of the form:
*cupsColorProfile Resolution/MediaType: "density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22"
The Resolution and MediaType values may be "-" to act as a wildcard. Otherwise they must match one of the Resolution or MediaType attributes defined in the PPD file.
The density and gamma values define gamma and density adjustment function such that:
f(x) = density * xgamma
The m00 through m22 values define a 3x3 transformation matrix for the CMY color values. The density function is applied after the CMY transformation:
| m00 m01 m02 | | m10 m11 m12 | | m20 m21 m22 |
This attribute specifies an ICC color profile of the form:
*cupsICCProfile ColorModel.MediaType.Resolution/Description: "filename"
The ColorModel, MediaType, and Resolution keywords specify a selector for color profiles. If omitted, the color profile will match any option keyword for the corresponding main keyword.
The Description specifies human-readable text that is associated with the color profile. The filename portion specifies the ICC color profile to use; if the filename is not absolute, it is loaded relative to the /usr/share/cups/profiles directory.
The ColorModel, MediaType, and Resolution keywords can be reassigned to different main keywords, allowing drivers to do color profile selection based on different parameters. The cupsICCQualifier1, cupsICCQualifier2, and cupsICCQualifier3 attributes define the mapping from selector to main keyword:
*cupsICCQualifier1: MainKeyword *cupsICCQualifier2: MainKeyword *cupsICCQualifier3: MainKeyword
The default mapping is as follows:
*cupsICCQualifier1: ColorModel *cupsICCQualifier2: MediaType *cupsICCQualifier3: Resolution
CUPS 1.2 and higher adds support for PPD files containing multiple languages by following the following rules:
*ll.Translation MainKeyword/translation
text: ""
*ll_CC.Translation MainKeyword/translation
text: ""
*ll.MainKeyword OptionKeyword/translation
text: ""
*ll_CC.MainKeyword OptionKeyword/translation
text: ""
The following example shows how a fictional Foobar Laser 9999 PPD file would be localized for English, French, and German:
*LanguageVersion: English *LanguageEncoding: ISOLatin1 *ModelName: "Foobar Laser 9999" *fr_FR.Translation ModelName/La Foobar Laser 9999: "" *de_DE.Translation ModelName/Foobar LaserDrucken 9999: "" ... *OpenUI *InputSlot/Paper Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: Auto *fr_FR.Translation InputSlot/Papier source: "" *de_DE.Translation InputSlot/Papiereinzug: "" *InputSlot Auto/Default: "<>setpagedevice" *fr_FR.InputSlot Auto/Par Defaut: "" *de_DE.InputSlot Auto/Standard: "" *InputSlot Manual/Manual Feed: "<>setpagedevice" *fr_FR.InputSlot Manual/Manuel mecanisme de alimentation: "" *de_DE.InputSlot Manual/Manueller Einzug: "" *CloseUI: *InputSlot