]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - doc/help/spec-ppd.html
Merge changes from CUPS 1.5svn-r9567
[thirdparty/cups.git] / doc / help / spec-ppd.html
index e7da98a8a9a0cc0c3519df997469604ff1ebd396..096bcff9972141dfea7e6300e715af5e7518c40e 100644 (file)
@@ -2,9 +2,10 @@
 <html>
 <!-- SECTION: Specifications -->
 <head>
-<title>CUPS PPD Extensions</title>
-<meta name="keywords" content="Specifications">
-<meta name="creator" content="Mini-XML v2.7">
+       <title>CUPS PPD Extensions      </title>
+       <meta name="keywords" content="Specifications">
+       <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+       <meta name="creator" content="Mini-XML v2.7">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -373,66 +374,68 @@ div.contents ul.subcontents li {
 </table></div>
 <h2 class="title">Contents</h2>
 <ul class="contents">
-<ul class="subcontents">
 <li><a href="#SYNTAX">PPD File Syntax</a></li>
 <li><a href="#AUTOCONFIG">Auto-Configuration</a><ul class="subcontents">
-<li><a href="#APAutoSetupTool">APAutoSetupTool</a></li>
-<li><a href="#QUERYKEYWORD">?MainKeyword</a></li>
-<li><a href="#OID">OIDMainKeyword</a></li>
+       <li><a href="#APAutoSetupTool">APAutoSetupTool</a></li>
+       <li><a href="#QUERYKEYWORD">?MainKeyword</a></li>
+       <li><a href="#OID">OIDMainKeyword</a></li>
 </ul></li>
 <li><a href="#PROFILES">Color Profiles</a><ul class="subcontents">
-<li><a href="#cupsColorProfile">cupsColorProfile</a></li>
-<li><a href="#cupsICCProfile">cupsICCProfile</a></li>
-<li><a href="#APCustom">Custom Color Matching Support</a></li>
+       <li><a href="#cupsColorProfile">cupsColorProfile</a></li>
+       <li><a href="#cupsICCProfile">cupsICCProfile</a></li>
+       <li><a href="#APCustom">Custom Color Matching Support</a></li>
 </ul></li>
 <li><a href="#CONSTRAINTS">Constraints</a><ul class="subcontents">
-<li><a href="#cupsUIConstraints">cupsUIConstraints</a></li>
-<li><a href="#cupsUIResolver">cupsUIResolver</a></li>
+       <li><a href="#cupsUIConstraints">cupsUIConstraints</a></li>
+       <li><a href="#cupsUIResolver">cupsUIResolver</a></li>
 </ul></li>
 <li><a href="#I18N">Globalized PPD Support</a></li>
 <li><a href="#OPTIONS">CUPS 1.3/Mac OS X 10.6Custom Options</a></li>
 <li><a href="#RASTERPS">Writing PostScript Option Commands for Raster Drivers</a></li>
 <li><a href="#MEDIA">Media Keywords</a><ul class="subcontents">
-<li><a href="#cupsMediaQualifier2">cupsMediaQualifier2</a></li>
-<li><a href="#cupsMediaQualifier3">cupsMediaQualifier3</a></li>
-<li><a href="#cupsMinSize">cupsMinSize</a></li>
-<li><a href="#cupsMaxSize">cupsMaxSize</a></li>
+       <li><a href="#cupsMediaQualifier2">cupsMediaQualifier2</a></li>
+       <li><a href="#cupsMediaQualifier3">cupsMediaQualifier3</a></li>
+       <li><a href="#cupsMinSize">cupsMinSize</a></li>
+       <li><a href="#cupsMaxSize">cupsMaxSize</a></li>
 </ul></li>
 <li><a href="#ATTRIBUTES">General Attributes</a><ul class="subcontents">
-<li><a href="#cupsBackSide">cupsBackSide</a></li>
-<li><a href="#cupsCommands">cupsCommands</a></li>
-<li><a href="#cupsEvenDuplex">cupsEvenDuplex</a></li>
-<li><a href="#cupsFax">cupsFax</a></li>
-<li><a href="#cupsFilter">cupsFilter</a></li>
-<li><a href="#cupsFlipDuplex">cupsFlipDuplex</a></li>
-<li><a href="#cupsIPPFinishings">cupsIPPFinishings</a></li>
-<li><a href="#cupsIPPReason">cupsIPPReason</a></li>
-<li><a href="#cupsLanguages">cupsLanguages</a></li>
-<li><a href="#cupsManualCopies">cupsManualCopies</a></li>
-<li><a href="#cupsMarkerName">cupsMarkerName</a></li>
-<li><a href="#cupsMarkerNotice">cupsMarkerNotice</a></li>
-<li><a href="#cupsModelNumber">cupsModelNumber</a></li>
-<li><a href="#cupsPJLCharset">cupsPJLCharset</a></li>
-<li><a href="#cupsPJLDisplay">cupsPJLDisplay</a></li>
-<li><a href="#cupsPortMonitor">cupsPortMonitor</a></li>
-<li><a href="#cupsPreFilter">cupsPreFilter</a></li>
-<li><a href="#cupsPrintQuality">cupsPrintQuality</a></li>
-<li><a href="#cupsSNMPSupplies">cupsSNMPSupplies</a></li>
-<li><a href="#cupsVersion">cupsVersion</a></li>
+       <li><a href="#cupsBackSide">cupsBackSide</a></li>
+       <li><a href="#cupsCommands">cupsCommands</a></li>
+       <li><a href="#cupsEvenDuplex">cupsEvenDuplex</a></li>
+       <li><a href="#cupsFax">cupsFax</a></li>
+       <li><a href="#cupsFilter">cupsFilter</a></li>
+       <li><a href="#cupsFilter2">cupsFilter2</a></li>
+       <li><a href="#cupsFlipDuplex">cupsFlipDuplex</a></li>
+       <li><a href="#cupsIPPFinishings">cupsIPPFinishings</a></li>
+       <li><a href="#cupsIPPReason">cupsIPPReason</a></li>
+       <li><a href="#cupsIPPSupplies">cupsIPPSupplies</a></li>
+       <li><a href="#cupsLanguages">cupsLanguages</a></li>
+       <li><a href="#cupsManualCopies">cupsManualCopies</a></li>
+       <li><a href="#cupsMarkerName">cupsMarkerName</a></li>
+       <li><a href="#cupsMarkerNotice">cupsMarkerNotice</a></li>
+       <li><a href="#cupsModelNumber">cupsModelNumber</a></li>
+       <li><a href="#cupsPJLCharset">cupsPJLCharset</a></li>
+       <li><a href="#cupsPJLDisplay">cupsPJLDisplay</a></li>
+       <li><a href="#cupsPortMonitor">cupsPortMonitor</a></li>
+       <li><a href="#cupsPreFilter">cupsPreFilter</a></li>
+       <li><a href="#cupsPrintQuality">cupsPrintQuality</a></li>
+       <li><a href="#cupsSNMPSupplies">cupsSNMPSupplies</a></li>
+       <li><a href="#cupsVersion">cupsVersion</a></li>
 </ul></li>
 <li><a href="#MACOSX">Mac OS X Attributes</a><ul class="subcontents">
-<li><a href="#APDialogExtension">APDialogExtension</a></li>
-<li><a href="#APDuplexRequiresFlippedMargin">APDuplexRequiresFlippedMargin</a></li>
-<li><a href="#APHelpBook">APHelpBook</a></li>
-<li><a href="#APICADriver">APICADriver</a></li>
-<li><a href="#APPrinterIconPath">APPrinterIconPath</a></li>
-<li><a href="#APPrinterLowInkTool">APPrinterLowInkTool</a></li>
-<li><a href="#APPrinterPreset">APPrinterPreset</a></li>
-<li><a href="#APPrinterUtilityPath">APPrinterUtilityPath</a></li>
-<li><a href="#APScannerOnly">APScannerOnly</a></li>
-<li><a href="#APScanAppBundleID">APScanAppBundleID</a></li>
+       <li><a href="#APDialogExtension">APDialogExtension</a></li>
+       <li><a href="#APDuplexRequiresFlippedMargin">APDuplexRequiresFlippedMargin</a></li>
+       <li><a href="#APHelpBook">APHelpBook</a></li>
+       <li><a href="#APICADriver">APICADriver</a></li>
+       <li><a href="#APPrinterIconPath">APPrinterIconPath</a></li>
+       <li><a href="#APPrinterLowInkTool">APPrinterLowInkTool</a></li>
+       <li><a href="#APPrinterPreset">APPrinterPreset</a></li>
+       <li><a href="#APPrinterUtilityPath">APPrinterUtilityPath</a></li>
+       <li><a href="#APScannerOnly">APScannerOnly</a></li>
+       <li><a href="#APScanAppBundleID">APScanAppBundleID</a></li>
 </ul></li>
 <li><a href="#HISTORY">Change History</a></li>
+</ul>
 <h2 class='title'><a name='SYNTAX'>PPD File Syntax</a></h2>
 
 <p>The PPD 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 [<a href="http://tools.ietf.org/html/rfc5234" target="_blank">RFC5234</a>] defines the general format of lines in a PPD file:</p>
@@ -465,19 +468,14 @@ LINE-END = CR / LF / CR LF
 
 <p>CUPS supports several methods of auto-configuration via PPD keywords.</p>
 
-<h3><span class='info'>Deprecated</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
+<h3><span class='info'>Mac OS X 10.5</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
 
 <p class='summary'>*APAutoSetupTool: "/LibraryPrinters/vendor/filename"</p>
 
-<p>This deprecated keyword defines a program that sets the default option choices. It is run when a printer is added from the <var>Add Printer</var> window or the <var>Nearby Printers</var> list in the <var>Print</var> dialog.</p>
+<p>This Mac OS X keyword defines a program that sets the default option choices. It is run when a printer is added from the <var>Add Printer</var> window or the <var>Nearby Printers</var> list in the <var>Print</var> dialog.</p>
 
 <p>The program is provided with two arguments: the printer's device URI and the PPD file to be used for the printer. The program must write an updated PPD file to stdout.</p>
 
-<blockquote><b>Note:</b>
-
-<p>This keyword is deprecated. New printer drivers SHOULD provide a CUPS command filter and support the "AutoConfigure" command. Alternately, drivers MAY use the <a href="#OID">SNMP OID</a> keywords to configure network printers or <a href="#QUERYKEYWORD">PostScript query keywords</a> to configure PostScript printers.</p>
-
-</blockquote>
 <p>Examples:</p>
 
 <pre class='command'>
@@ -571,13 +569,13 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 <p>Examples:</p>
 
 <pre class='command'>
-<em>*% Specify a profile for printing at 360dpi on all media types</em> 
+<em>*% Specify a profile for printing at 360dpi on all media types</em>
 *cupsColorProfile 360dpi/-: "1.0 1.5 1.0 0.0 -0.2 -0.4 1.0 0.0 -0.2 0.0 1.0"
 
-<em>*% Specify a profile for printing at 720dpi on Glossy media</em> 
+<em>*% Specify a profile for printing at 720dpi on Glossy media</em>
 *cupsColorProfile 720dpi/Glossy: "1.0 2.5 1.0 0.0 -0.2 -0.4 1.0 0.0 -0.2 0.0 1.0"
 
-<em>*% Specify a default profile for printing at all other resolutions and media types</em> 
+<em>*% Specify a default profile for printing at all other resolutions and media types</em>
 *cupsColorProfile -/-: "0.9 2.0 1.0 0.0 -0.2 -0.4 1.0 0.0 -0.2 0.0 1.0"
 </pre>
 
@@ -593,13 +591,13 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 <p>Examples:</p>
 
 <pre class='command'>
-<em>*% Specify a profile for CMYK printing at 360dpi on all media types</em> 
+<em>*% Specify a profile for CMYK printing at 360dpi on all media types</em>
 *cupsICCProfile CMYK..360dpi/360dpi CMYK: "/Library/Printers/vendor/Profiles/foo-360-cmyk.icc"
 
-<em>*% Specify a profile for RGB printing at 720dpi on Glossy media</em> 
+<em>*% Specify a profile for RGB printing at 720dpi on Glossy media</em>
 *cupsColorProfile RGB.Glossy.720dpi/720dpi Glossy: "/Library/Printers/vendor/Profiles/foo-720-glossy-rgb.icc"
 
-<em>*% Specify a default profile for printing at all other resolutions and media types</em> 
+<em>*% Specify a default profile for printing at all other resolutions and media types</em>
 *cupsICCProfile ../Default: "/Library/Printers/vendor/Profiles/foo-default.icc"
 </pre>
 
@@ -733,10 +731,10 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 <p>Examples:</p>
 
 <pre class='command'>
-<em>*% Specify that 2-sided printing cannot happen on transparencies</em> 
+<em>*% Specify that 2-sided printing cannot happen on transparencies</em>
 *cupsUIConstraints transparency: "*Duplex *MediaType Transparency"
 
-<em>*% Specify that envelope printing cannot happen from the paper trays</em> 
+<em>*% Specify that envelope printing cannot happen from the paper trays</em>
 *cupsUIConstraints envelope: "*PageSize Env10 *InputSlot Tray1"
 *cupsUIConstraints envelope: "*PageSize Env10 *InputSlot Tray1"
 *cupsUIConstraints envelope: "*PageSize EnvDL *InputSlot Tray2"
@@ -745,7 +743,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 <em>*% Specify an installable option constraint for the envelope feeder</em>
 *cupsUIConstraints: "*InputSlot EnvFeeder *InstalledEnvFeeder"
 
-<em>*% Specify that photo printing cannot happen on plain paper or transparencies at 1200dpi</em> 
+<em>*% Specify that photo printing cannot happen on plain paper or transparencies at 1200dpi</em>
 *cupsUIConstraints photo: "*OutputMode Photo *MediaType Plain *Resolution 1200dpi"
 *cupsUIConstraints photo: "*OutputMode Photo *MediaType Transparency *Resolution 1200dpi"
 </pre>
@@ -759,7 +757,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 <p>Examples:</p>
 
 <pre class='command'>
-<em>*% Specify the options to change for the 2-sided transparency constraint</em> 
+<em>*% Specify the options to change for the 2-sided transparency constraint</em>
 *cupsUIResolver transparency: "*Duplex None *MediaType Plain"
 
 <em>*% Specify the options to change for the envelope printing constraints.  Notice
@@ -767,7 +765,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *% manual feed first, then we change the page size...</em>
 *cupsUIResolver envelope: "*InputSlot EnvFeeder *InputSlot ManualFeed *PageSize Letter"
 
-<em>*% Specify the options to change for the photo printing constraints</em> 
+<em>*% Specify the options to change for the photo printing constraints</em>
 *cupsUIResolver photo: "*OutputMode Best *Resolution 600dpi"
 </pre>
 
@@ -894,7 +892,7 @@ option value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234"
 <p>Examples:</p>
 
 <pre class='command'>
-<em>*% Base JCL key code option</em> 
+<em>*% Base JCL key code option</em>
 *JCLOpenUI JCLPasscode/Key Code: PickOne
 *OrderDependency: 10 JCLSetup *JCLPasscode
 *DefaultJCLPasscode: None
@@ -904,7 +902,7 @@ option value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234"
 *JCLPasscode 3333: "@PJL SET PASSCODE = 3333&lt;0A&gt;"
 *JCLCloseUI: *JCLPasscode
 
-<em>*% Custom JCL key code option</em> 
+<em>*% Custom JCL key code option</em>
 *CustomJCLPasscode True: "@PJL SET PASSCODE = \1&lt;0A&gt;"
 *ParamCustomJCLPasscode Code/Key Code: 1 passcode 4 4
 
@@ -922,7 +920,7 @@ option value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234"
 *ParamCustomWatermarkText Text: 1 string 0 32
 
 
-<em>*% Base PostScript gamma/density option</em> 
+<em>*% Base PostScript gamma/density option</em>
 *OpenUI GammaDensity/Gamma and Density: PickOne
 *OrderDependency: 10 AnySetup *GammaDensity
 *DefaultGammaDensity: Normal
@@ -931,7 +929,7 @@ option value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234"
 *GammaDensity Dark/Darker: "&lt;&lt;/cupsReal1 1.1/cupsReal2 1.5&gt;&gt;setpagedevice"
 *CloseUI: *GammaDensity
 
-<em>*% Custom PostScript gamma/density option</em> 
+<em>*% Custom PostScript gamma/density option</em>
 *CustomGammaDensity True: "&lt;&lt;/cupsReal1 3 -1 roll/cupsReal2 5 -1&gt;&gt;setpagedevice"
 *ParamCustomGammaDensity Gamma: 1 curve 0.1 10
 *ParamCustomGammaDensity Density: 2 real 0 2
@@ -1483,10 +1481,10 @@ will be ignored.</p>
 <p>Examples:</p>
 
 <pre class='command'>
-<em>*% Flip the page image for the back side of duplexed output</em> 
+<em>*% Flip the page image for the back side of duplexed output</em>
 *cupsBackSide: Flipped
 
-<em>*% Rotate the page image for the back side of duplexed output</em> 
+<em>*% Rotate the page image for the back side of duplexed output</em>
 *cupsBackSide: Rotated
 </pre>
 
@@ -1504,7 +1502,7 @@ by whitespace.</p>
 <p>Example:</p>
 
 <pre class='command'>
-<em>*% Specify the list of commands we support</em> 
+<em>*% Specify the list of commands we support</em>
 *cupsCommands: "AutoConfigure Clean PrintSelfTestPage ReportLevels com.vendor.foo"
 </pre>
 
@@ -1520,7 +1518,7 @@ printing is selected. The default value is <code>false</code>.</p>
 <p>Example:</p>
 
 <pre class='command'>
-<em>*% Always send an even number of pages when duplexing</em> 
+<em>*% Always send an even number of pages when duplexing</em>
 *cupsEvenDuplex: true
 </pre>
 
@@ -1548,16 +1546,35 @@ the special filter program "-" may be specified.</p>
 <p>Examples:</p>
 
 <pre class='command'>
-<em>*% Standard raster printer driver filter</em> 
+<em>*% Standard raster printer driver filter</em>
 *cupsFilter: "application/vnd.cups-raster 100 rastertofoo"
 
-<em>*% Plain text filter</em> 
+<em>*% Plain text filter</em>
 *cupsFilter: "text/plain 10 texttofoo"
 
-<em>*% Pass-through filter for PostScript printers</em> 
+<em>*% Pass-through filter for PostScript printers</em>
 *cupsFilter: "application/vnd.cups-postscript 0 -"
 </pre>
 
+<h3><a name='cupsFilter2'>cupsFilter2</a></h3>
+
+<p class='summary'>*cupsFilter2: "source/type destination/type cost program"</p>
+
+<p>This string keyword provides a conversion rule from the given source type to the printer's native format using the filter "program". If a printer supports the source type directly, the special filter program "-" may be specified. The destination type is automatically created as needed and is passed to the filters and backend as the FINAL_CONTENT_TYPE value.</p>
+
+<p>Examples:</p>
+
+<pre class='command'>
+<em>*% Standard raster printer driver filter</em>
+*cupsFilter2: "application/vnd.cups-raster application/vnd.foo 100 rastertofoo"
+
+<em>*% Plain text filter</em>
+*cupsFilter2: "text/plain application/vnd.foo 10 texttofoo"
+
+<em>*% Pass-through filter for PostScript printers</em>
+*cupsFilter2: "application/vnd.cups-postscript application/postscript 0 -"
+</pre>
+
 <h3><span class='info'>Deprecated</span><a name='cupsFlipDuplex'>cupsFlipDuplex</a></h3>
 
 <p class='summary'>*cupsFlipDuplex: boolean</p>
@@ -1653,6 +1670,19 @@ http://www.vendor.com/help"
 *End
 </pre>
 
+<h3><span class='info'>CUPS 1.5</span><a name='cupsIPPSupplies'>cupsIPPSupplies</a></h3>
+
+<p class='summary'>*cupsIPPSupplies: boolean</p>
+
+<p>This keyword tells the IPP backend whether it should report the current marker-xxx supply attribute values. The default value is <code>True</code>.
+
+<p>Example:</p>
+
+<pre class='command'>
+<em>*% Do not use IPP marker-xxx attributes to report supply levels</em>
+*cupsIPPSupplies: False
+</pre>
+
 <h3><span class='info'>CUPS 1.2/Mac OS X 10.5</span><a name='cupsLanguages'>cupsLanguages</a></h3>
 
 <p class='summary'>*cupsLanguages: "locale list"</p>
@@ -1664,7 +1694,7 @@ list of locale names ("en", "en_US", "fr_CA", etc.)</p>
 <p>Example:</p>
 
 <pre class='command'>
-<em>*% Specify Canadian, UK, and US English, and Candian and French French</em> 
+<em>*% Specify Canadian, UK, and US English, and Candian and French French</em>
 *cupsLanguages: "en_CA en_UK en_US fr_CA fr_FR"
 </pre>
 
@@ -1679,7 +1709,7 @@ hardware. The default value is <code>false</code>.</p>
 <p>Example:</p>
 
 <pre class='command'>
-<em>*% Tell the RIP filters to generate the copies for us</em> 
+<em>*% Tell the RIP filters to generate the copies for us</em>
 *cupsManualCopies: true
 </pre>
 
@@ -1722,7 +1752,7 @@ the output for a specific model of printer.</p>
 <p>Example:</p>
 
 <pre class='command'>
-<em>*% Specify an integer for a driver-specific model number</em> 
+<em>*% Specify an integer for a driver-specific model number</em>
 *cupsModelNumber: 1234
 </pre>
 
@@ -1788,7 +1818,7 @@ to disable the port monitor for the given URI scheme.</p>
 *cupsPortMonitor socket/AppSocket Printing: "tbcp"
 *cupsPortMonitor usb/USB Printing: "none"
 
-<em>*% Specify a printer-specific port monitor for an Epson USB printer</em> 
+<em>*% Specify a printer-specific port monitor for an Epson USB printer</em>
 *cupsPortMonitor usb/USB Status Monitor: "epson-usb"
 </pre>
 
@@ -1797,7 +1827,7 @@ to disable the port monitor for the given URI scheme.</p>
 <p class='summary'>*cupsPreFilter: "source/type cost program"</p>
 
 <p>This string keyword provides a pre-filter rule. The pre-filter
-program will be inserted in the conversion chain immediately 
+program will be inserted in the conversion chain immediately
 before the filter that accepts the given MIME type.</p>
 
 <p>Examples:</p>
@@ -1861,7 +1891,7 @@ PPD file extensions was used. Currently it must be the string
 <p>Example:</p>
 
 <pre class='command'>
-<em>*% Specify a CUPS 1.2 driver</em> 
+<em>*% Specify a CUPS 1.2 driver</em>
 *cupsVersion: "1.2"
 </pre>
 
@@ -1969,7 +1999,7 @@ and the <tt>Tumble</tt> page attribute.</p>
 <em>*% Rotate the back side images</em>
 *cupsBackSide: Rotated
 
-<em>*% Don't swap the top and bottom margins for the back side</em> 
+<em>*% Don't swap the top and bottom margins for the back side</em>
 *APDuplexRequiresFlippedMargin: false
 </pre>