<h2 class='title'><a name='BASICS'>Printer Driver Basics</a></h2>

<p>A CUPS PostScript printer driver consists of a PostScript Printer Description (PPD) file that describes the features and capabilities of the device, zero or more <em>filter</em> programs that prepare print data for the device, and zero or more support files for color management, online help, and so forth. The PPD file includes references to all of the filters and support files used by the driver.</p>

<p>Every time a user prints something the scheduler program, <a href='man-cupsd.html'>cupsd(8)</a>, determines the format of the print job and the programs required to convert that job into something the printer understands. CUPS includes filter programs for many common formats, for example to convert Portable Document Format (PDF) files into device-independent PostScript, and then from device-independent PostScript to device-dependent PostScript. <a href='#FIGURE_1'>Figure 1</a> shows the data flow of a typical print job.</p>

<div class='figure'><table summary='PostScript Filter Chain'>
<caption>Figure 1: <a name='FIGURE_1'>PostScript Filter Chain</a></caption>
<tr><td><img src='../images/cups-postscript-chain.png' width='700' height='150' alt='PostScript Filter Chain'></td></tr>
</table></div>

<p>The optional PostScript filter can be provided to add printer-specific commands to the PostScript output that cannot be represented in the PPD file or to reorganize the output for special printer features. Typically this is used to support advanced job management or finishing functions on the printer. CUPS includes a generic PostScript filter that handles all PPD-defined commands.</p>

<p>The optional port monitor handles interface-specific protocol or encoding issues. For example, many PostScript printers support the Binary Communications Protocol (BCP) and Tagged Binary Communications Protocol (TBCP) to allow applications to print 8-bit ("binary") PostScript jobs. CUPS includes port monitors for BCP and TBCP, and you can supply your own port monitors as needed.</p>

<p>The backend handles communications with the printer, sending print data from the last filter to the printer and relaying back-channel data from the printer to the upstream filters. CUPS includes backend programs for common direct-connect interfaces and network protocols, and you can provide your own backend to support custom interfaces and protocols.</p>

<p>The scheduler also supports a special "command" file format for sending maintenance commands and status queries to a printer or printer driver. Command print jobs typically use a single command filter program defined in the PPD file to generate the appropriate printer commands and handle any responses from the printer. <a href='#FIGURE_2'>Figure 2</a> shows the data flow of a typical command job.</p>

<div class='figure'><table summary='Command Filter Chain'>
<caption>Figure 2: <a name='FIGURE_2'>Command Filter Chain</a></caption>
<tr><td><img src='../images/cups-command-chain.png' width='575' height='150' alt='Command Filter Chain'></td></tr>
</table></div>

<p>PostScript printer drivers typically do not require their own command filter since CUPS includes a generic PostScript command filter that supports all of the standard functions using PPD-defined commands.</p>


<h2 class='title'><a name='CREATING'>Creating New PPD Files</a></h2>

<p>We recommend using the CUPS PPD compiler, <a href='man-ppdc.html'>ppdc(1)</a>, to create new PPD files since it manages many of the tedious (and error-prone!) details of paper sizes and localization for you. It also allows you to easily support multiple devices from a single source file. For more information see the "<a href='ppd-compiler.html'>Introduction to the PPD Compiler</a>" document. <a href='#LISTING_1'>Listing 1</a> shows a driver information file for a black-and-white PostScript printer.</p>

<p class='example'>Listing 1: <a name='LISTING_1'>"examples/postscript.drv"</a></p>

<pre class='example'>
// Include standard font and media definitions
<a href='ref-ppdcfile.html#_include'>#include</a> &lt;font.defs&gt;
<a href='ref-ppdcfile.html#_include'>#include</a> &lt;media.defs&gt;

// Specify this is a PostScript printer driver
<a href='ref-ppdcfile.html#DriverType'>DriverType</a> ps

// List the fonts that are supported, in this case all standard fonts
<a href='ref-ppdcfile.html#Font'>Font</a> *

// Manufacturer, model name, and version
<a href='ref-ppdcfile.html#Manufacturer'>Manufacturer</a> "Foo"
<a href='ref-ppdcfile.html#ModelName'>ModelName</a> "Foo LaserProofer 2000"
<a href='ref-ppdcfile.html#Version'>Version</a> 1.0

// PostScript printer attributes
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> DefaultColorSpace "" Gray
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> LandscapeOrientation "" Minus90
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> LanguageLevel "" "3"
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> Product "" "(Foo LaserProofer 2000)"
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> PSVersion "" "(3010) 0"
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> TTRasterizer "" Type42

// Supported page sizes
*<a href='ref-ppdcfile.html#MediaSize'>MediaSize</a> Letter
<a href='ref-ppdcfile.html#MediaSize'>MediaSize</a> Legal
<a href='ref-ppdcfile.html#MediaSize'>MediaSize</a> A4

// Query command for page size
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> "?PageSize" "" "
      save
      currentpagedevice /PageSize get aload pop
      2 copy gt {exch} if (Unknown)
      23 dict
              dup [612 792] (Letter) put
              dup [612 1008] (Legal) put
              dup [595 842] (A4) put
              {exch aload pop 4 index sub abs 5 le exch
               5 index sub abs 5 le and
              {exch pop exit} {pop} ifelse
      } bind forall = flush pop pop
      restore"

// Specify the name of the PPD file we want to generate
<a href='ref-ppdcfile.html#PCFileName'>PCFileName</a> "fooproof.ppd"
</pre>

<h3>Required Attributes</h3>

<p>PostScript drivers require the attributes listed in <a href='#TABLE_1'>Table 1</a>. If not specified, the defaults for CUPS drivers are used. A typical PostScript driver information file would include the following attributes:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> DefaultColorSpace "" Gray
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> LandscapeOrientation "" Minus90
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> LanguageLevel "" "3"
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> Product "" "(Foo LaserProofer 2000)"
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> PSVersion "" "(3010) 0"
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> TTRasterizer "" Type42
</pre>

<div class='table'><table summary='Required PostScript Printer Driver Attributes'>
<caption>Table 1: <a name='TABLE_1'>Required PostScript Printer Driver Attributes</a></caption>
<thead>
<tr>
	<th>Attribute</th>
	<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
	<td><tt>DefaultColorSpace</tt></td>
	<td>The default colorspace:
	<tt>Gray</tt>, <tt>RGB</tt>, <tt>CMY</tt>, or
	<tt>CMYK</tt>. If not specified, then <tt>RGB</tt> is
	assumed.</td>
</tr>
<tr>
	<td><tt>LandscapeOrientation</tt></td>
	<td>The preferred landscape
	orientation: <tt>Plus90</tt>, <tt>Minus90</tt>, or
	<tt>Any</tt>. If not specified, <tt>Plus90</tt> is
	assumed.</td>
</tr>
<tr>
	<td><tt>LanguageLevel</tt></td>
	<td>The PostScript language
	level supported by the device: 1, 2, or 3. If not
	specified, 2 is assumed.</td>
</tr>
<tr>
	<td><tt>Product</tt></td>
	<td>The string returned by
	the PostScript <tt>product</tt> operator, which
	<i>must</i> include parenthesis to conform with
	PostScript syntax rules for strings. Multiple
	<tt>Product</tt> attributes may be specified to support
	multiple products with the same PPD file. If not
	specified, "(ESP Ghostscript)" and "(GNU Ghostscript)"
	are assumed.</td>
</tr>
<tr>
	<td><tt>PSVersion</tt></td>
	<td>The PostScript
	interpreter version numbers as returned by the
	<tt>version</tt> and <tt>revision</tt> operators. The
	required format is "(version) revision". Multiple
	<tt>PSVersion</tt> attributes may be specified to
	support multiple interpreter version numbers. If not
	specified, "(3010) 705" and "(3010) 707" are
	assumed.</td>
</tr>
<tr>
	<td><tt>TTRasterizer</tt></td>
	<td>The type of TrueType
	font rasterizer supported by the device, if any. The
	supported values are <tt>None</tt>, <tt>Accept68k</tt>,
	<tt>Type42</tt>, and <tt>TrueImage</tt>. If not
	specified, <tt>None</tt> is assumed.</td>
</tr>
</table></div>

<h3>Query Commands</h3>

<p>Most PostScript printer PPD files include query commands (<tt>?PageSize</tt>, etc.) that allow applications to query the printer for its current settings and configuration. Query commands are included in driver information files as attributes. For example, the example in <a href='#LISTING_1'>Listing 1</a> uses the following definition for the <tt>PageSize</tt> query command:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> "?PageSize" "" "
      save
      currentpagedevice /PageSize get aload pop
      2 copy gt {exch} if (Unknown)
      23 dict
              dup [612 792] (Letter) put
              dup [612 1008] (Legal) put
              dup [595 842] (A4) put
              {exch aload pop 4 index sub abs 5 le exch
               5 index sub abs 5 le and
              {exch pop exit} {pop} ifelse
      } bind forall = flush pop pop
      restore"
</pre>

<p>Query commands can span multiple lines, however no single line may contain more than 255 characters.</p>

<h3><a name='IMPORT'>Importing Existing PPD Files</a></h3>

<P>CUPS includes a utility called <a href='man-ppdi.html'>ppdi(1)</a>
which allows you to import existing PPD files into the driver information file
format used by the PPD compiler <a href='man-ppdc.html'>ppdc(1)</a>. Once
imported, you can modify, localize, and regenerate the PPD files easily. Type
the following command to import the PPD file <VAR>mydevice.ppd</VAR> into the
driver information file <VAR>mydevice.drv</VAR>:</P>

<pre class='command'>
ppdi -o mydevice.drv mydevice.ppd
</pre>

<P>If you have a whole directory of PPD files that you would like to import,
you can list multiple filenames or use shell wildcards to import more than one
PPD file on the command-line:</P>

<pre class='command'>
ppdi -o mydevice.drv mydevice1.ppd mydevice2.ppd
ppdi -o mydevice.drv *.ppd
</pre>

<P>If the driver information file already exists, the new PPD
file entries are appended to the end of the file. Each PPD file
is placed in its own group of curly braces within the driver
information file.</P>


<h2 class='title'><a name='FILTERS'>Using Custom Filters</a></h2>

<p>Normally a PostScript printer driver will not utilize any additional print filters. For drivers that provide additional filters such as a CUPS command file filter for doing printer maintenance, you must also list the following <tt>Filter</tt> directive to handle printing PostScript files:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Filter'>Filter</a> application/vnd.cups-postscript 0 -
</pre>

<h3>Custom Command Filters</h3>

<p>The <tt>application/vnd.cups-command</tt> file type is used for CUPS command files. Use the following <tt>Filter</tt> directive to handle CUPS command files:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Filter'>Filter</a> application/vnd.cups-command 100 /path/to/command/filter
</pre>

<p>To use the standard PostScript command filter, specify <var>commandtops</var> as the path to the command filter.</p>

<h3>Custom PDF Filters</h3>

<p>The <tt>application/pdf</tt> file type is used for unfiltered PDF files while the <tt>application/vnd.cups-pdf</tt> file type is used for filtered PDF files. Use the following <tt>Filter</tt> directive to handle filtered PDF files:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Filter'>Filter</a> application/vnd.cups-pdf 100 /path/to/pdf/filter
</pre>

<p>For unfiltered PDF files, use:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Filter'>Filter</a> application/pdf 100 /path/to/pdf/filter
</pre>

<p>Custom PDF filters that accept filtered data do not need to perform number-up processing and other types of page imposition, while those that accept unfiltered data MUST do the number-up processing themselves.</p>

<h3>Custom PostScript Filters</h3>

<p>The <tt>application/vnd.cups-postscript</tt> file type is used for filtered PostScript files. Use the following <tt>Filter</tt> directive to handle PostScript files:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Filter'>Filter</a> application/vnd.cups-postscript 100 /path/to/postscript/filter
</pre>


<h2 class='title'><a name='COLOR'>Implementing Color Management</a></h2>

<p>CUPS uses ICC color profiles to provide more accurate color reproduction. The <a href='spec-ppd.html#cupsICCProfile'><tt>cupsICCProfile</tt></a> attribute defines the color profiles that are available for a given printer, for example:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> cupsICCProfile "ColorModel.MediaType.Resolution/Description" /path/to/ICC/profile
</pre>

<p>where "ColorModel.MediaType.Resolution" defines a selector based on the corresponding option selections. A simple driver might only define profiles for the color models that are supported, for example a printer supporting Gray and RGB might use:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> cupsICCProfile "Gray../Grayscale Profile" /path/to/ICC/gray-profile
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> cupsICCProfile "RGB../Full Color Profile" /path/to/ICC/rgb-profile
</pre>

<p>The options used for profile selection can be customized using the <tt>cupsICCQualifier2</tt> and <tt>cupsICCQualifier3</tt> attributes.</p>


<h2 class='title'><a name='MACOSX'>Adding macOS Features</a></h2>

<p>macOS printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>

<pre class='example'>
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> APDialogExtension "" /Library/Printers/Vendor/filename.plugin
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> APHelpBook "" /Library/Printers/Vendor/filename.bundle
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> APPrinterIconPath "" /Library/Printers/Vendor/filename.icns
<a href='ref-ppdcfile.html#Attribute'>Attribute</a> APPrinterPreset "name/text" "*option choice ..."
</pre>
