-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE html>
<html>
<!-- SECTION: Specifications -->
-<head>
- <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.8">
-<style type="text/css"><!--
+ <head>
+ <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="codedoc v3.1">
+ <meta name="author" content="Unknown">
+ <meta name="copyright" content="Unknown">
+ <meta name="version" content="0.0">
+ <style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
}
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
}
+H1 { font-size: 2em; }
+H2 { font-size: 1.75em; }
+H3 { font-size: 1.5em; }
+H4 { font-size: 1.25em; }
+
KBD {
font-family: monaco, courier, monospace;
font-weight: bold;
font-family: monaco, courier, monospace;
}
-PRE.command {
- border: dotted thin #7f7f7f;
- margin-left: 36pt;
+BLOCKQUOTE {
+ border-left: solid 2px #777;
+ margin: 1em 0;
+ padding: 10px;
+}
+
+BLOCKQUOTE OL LI {
+ margin-left: -1em;
+}
+
+PRE.command, PRE.example {
+ background: #eee;
+ margin: 0 36pt;
padding: 10px;
}
margin: 0;
}
-PRE.example {
- background: #eeeeee;
- border: dotted thin #999999;
- margin-left: 36pt;
- padding: 10pt;
-}
-
PRE.command EM, PRE.example EM {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
}
margin-left: 36pt;
}
-BLOCKQUOTE {
- background: #eeeeee;
- border: solid thin #999999;
- padding: 10pt;
-}
-
A IMG {
border: none;
}
DIV.table TABLE TD {
border: solid thin #cccccc;
- padding-top: 5pt;
+ padding: 5pt 10pt 0;
}
DIV.table TABLE TH {
/* API documentation styles... */
div.body h1 {
+ font-size: 250%;
+ font-weight: bold;
margin: 0;
}
div.body h2 {
+ font-size: 250%;
margin-top: 1.5em;
}
-div.body h3, div.body h4, div.body h5 {
+div.body h3 {
+ font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
-.class, .enumeration, .function, .struct, .typedef, .union {
- border-bottom: solid thin #999999;
- margin-bottom: 0;
- margin-top: 2em;
+div.body h4 {
+ font-size: 110%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
+}
+div.body h5 {
+ font-size: 100%;
+ margin-bottom: 0.5em;
+ margin-top: 1.5em;
+}
+div.contents {
+ background: #e8e8e8;
+ border: solid thin black;
+ padding: 10px;
+}
+div.contents h1 {
+ font-size: 110%;
+}
+div.contents h2 {
+ font-size: 100%;
+}
+div.contents ul.contents {
+ font-size: 80%;
+}
+.class {
+ border-bottom: solid 2px gray;
+}
+.constants {
}
.description {
margin-top: 0.5em;
}
-code, p.code, pre, ul.code li {
- font-family: monaco, courier, monospace;
- font-size: 90%;
+.discussion {
+}
+.enumeration {
+ border-bottom: solid 2px gray;
+}
+.function {
+ border-bottom: solid 2px gray;
+ margin-bottom: 0;
+}
+.members {
+}
+.method {
+}
+.parameters {
+}
+.returnvalue {
+}
+.struct {
+ border-bottom: solid 2px gray;
+}
+.typedef {
+ border-bottom: solid 2px gray;
+}
+.union {
+ border-bottom: solid 2px gray;
+}
+.variable {
+}
+h1, h2, h3, h4, h5, h6 {
+ page-break-inside: avoid;
+}
+blockquote {
+ border: solid thin gray;
+ box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
+ padding: 10px 10px 0px;
+ page-break-inside: avoid;
+}
+p code, li code, p.code, pre, ul.code li {
+ background: rgba(127,127,127,0.1);
+ border: thin dotted gray;
+ font-family: monospace;
+ hyphens: manual;
+ -webkit-hyphens: manual;
+ page-break-inside: avoid;
+}
+p.code, pre, ul.code li {
+ padding: 10px;
+}
+p code, li code {
+ padding: 2px 5px;
+}
+a:link, a:visited {
+ text-decoration: none;
+}
+span.info {
+ background: black;
+ border: solid thin black;
+ color: white;
+ font-size: 80%;
+ font-style: italic;
+ font-weight: bold;
+ white-space: nowrap;
+}
+h2 span.info, h3 span.info, h4 span.info {
+ border-radius: 10px;
+ float: right;
+ font-size: 80%;
+ padding: 3px 6px;
+}
+h2.title span.info, h3.title span.info, h4.title span.info {
+ border-bottom-left-radius: 0px;
+ border-bottom-right-radius: 0px;
+}
+h2.title span.info {
+ padding: 4px 6px;
}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
-div.body dl {
- margin-left: 0;
- margin-top: 0;
-}
-div.body dt {
- font-style: italic;
- margin-left: 0;
- margin-top: 0;
-}
-div.body dd {
- margin-bottom: 0.5em;
-}
-
-/* This is just for the HTML files generated with the framedhelp target */
-div.contents {
- background: #e8e8e8;
- border: solid thin black;
- padding: 10px;
+table.list {
+ border-collapse: collapse;
+ width: 100%;
+}
+table.list tr:nth-child(even) {
+ background: rgba(127,127,127,0.1);]n}
+table.list th {
+ border-right: 2px solid gray;
+ font-family: monospace;
+ padding: 5px 10px 5px 2px;
+ text-align: right;
+ vertical-align: top;
}
-div.contents h1 {
- font-size: 110%;
+table.list td {
+ padding: 5px 2px 5px 10px;
+ text-align: left;
+ vertical-align: top;
}
-div.contents h2 {
- font-size: 100%;
+h1.title {
}
-div.contents ul.contents {
- font-size: 80%;
+h2.title {
+ border-bottom: solid 2px black;
}
-div.contents ul.subcontents li {
- margin-left: 1em;
- text-indent: -1em;
+h3.title {
+ border-bottom: solid 2px black;
}
--></style>
-</head>
-<body>
-<div class='body'>
+ </head>
+ <body>
<!--
PPD extension documentation for CUPS.
- Copyright 2007-2011 by Apple Inc.
- Copyright 1997-2007 by Easy Software Products.
+ Copyright © 2007-2011 by Apple Inc.
+ Copyright © 1997-2007 by Easy Software Products.
- These coded instructions, statements, and computer programs are the
- property of Apple Inc. and are protected by Federal copyright
- law. Distribution and use rights are outlined in the file "LICENSE.txt"
- which should have been included with this file. If this file is
- file is missing or damaged, see the license at "http://www.cups.org/".
+ Licensed under Apache License v2.0. See the file "LICENSE" for more
+ information.
-->
<H1 CLASS="title">CUPS PPD Extensions</H1>
</tr>
</tbody>
</table></div>
-<h2 class="title">Contents</h2>
-<ul class="contents">
-<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>
-</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>
-</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>
-</ul></li>
-<li><a href="#I18N">Globalized PPD Support</a></li>
-<li><a href="#OPTIONS">CUPS 1.3/macOS 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="#cupsPageSizeCategory">cupsPageSizeCategory</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="#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="#cupsJobAccountId">cupsJobAccountId</a></li>
- <li><a href="#cupsJobAccountingUserId">cupsJobAccountingUserId</a></li>
- <li><a href="#cupsJobPassword">cupsJobPassword</a></li>
- <li><a href="#cupsLanguages">cupsLanguages</a></li>
- <li><a href="#cupsMandatory">cupsMandatory</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="#cupsMaxCopies">cupsMaxCopies</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="#cupsSingleFile">cupsSingleFile</a></li>
- <li><a href="#cupsSNMPSupplies">cupsSNMPSupplies</a></li>
- <li><a href="#cupsVersion">cupsVersion</a></li>
- <li><a href="#JCLToPDFInterpreter">JCLToPDFInterpreter</a></li>
-</ul></li>
-<li><a href="#MACOSX">macOS 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>
-</ul></li>
-<li><a href="#HISTORY">Change History</a></li>
-</ul>
+ <div class="contents">
+ <h2 class="title">Contents</h2>
+ <ul class="contents">
+ <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>
+ </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>
+ </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>
+ </ul></li>
+ <li><a href="#I18N">Globalized PPD Support</a></li>
+ <li><a href="#OPTIONS">Custom 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="#cupsPageSizeCategory">cupsPageSizeCategory</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="#cupsFilter2">cupsFilter2</a></li>
+ <li><a href="#cupsFinishingTemplate">cupsFinishingTemplate</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="#cupsJobAccountId">cupsJobAccountId</a></li>
+ <li><a href="#cupsJobAccountingUserId">cupsJobAccountingUserId</a></li>
+ <li><a href="#cupsJobPassword">cupsJobPassword</a></li>
+ <li><a href="#cupsLanguages">cupsLanguages</a></li>
+ <li><a href="#cupsMandatory">cupsMandatory</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="#cupsMaxCopies">cupsMaxCopies</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="#cupsSingleFile">cupsSingleFile</a></li>
+ <li><a href="#cupsSNMPSupplies">cupsSNMPSupplies</a></li>
+ <li><a href="#cupsVersion">cupsVersion</a></li>
+ <li><a href="#JCLToPDFInterpreter">JCLToPDFInterpreter</a></li>
+ </ul></li>
+ <li><a href="#MACOSX">macOS 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>
+ </ul></li>
+ <li><a href="#HISTORY">Change History</a></li>
+ </ul>
+ </div>
+ <div class="body">
<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>
<p>CUPS supports several methods of auto-configuration via PPD keywords.</p>
-<h3><span class='info'>macOS 10.5</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.5</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
<p class='summary'>*APAutoSetupTool: "/LibraryPrinters/vendor/filename"</p>
*APAutoSetupTool: "/Library/Printers/vendor/Tools/autosetuptool"
</pre>
-<h3><span class='info'>macOS 10.2/CUPS 1.4</span><a name='QUERYKEYWORD'>?MainKeyword</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.2/CUPS 1.4</span><a name='QUERYKEYWORD'>?MainKeyword</a></h3>
<p class='summary'>*?<i>MainKeyword</i>: "<br>
PostScript query code that writes a message using the = operator...<br>
*CloseUI: OptionDuplex
</pre>
-<h3><span class='info'>macOS 10.4/CUPS 1.5</span><a name='OID'>OIDMainKeyword</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.4/CUPS 1.5</span><a name='OID'>OIDMainKeyword</a></h3>
<p class='summary'>*?OID<i>MainKeyword</i>: ".n.n.n..."<br>
*OID<i>MainKeyword</i> <i>OptionKeyword1</i>: "value"<br>
</blockquote>
-<h3><span class='info'>Deprecated</span><a name='cupsColorProfile'>cupsColorProfile</a></h3>
+
+<h3 class="title"><span class='info'>Deprecated</span><a name='cupsColorProfile'>cupsColorProfile</a></h3>
<p class='summary'>*cupsColorProfile Resolution/MediaType: "density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22"</p>
</pre>
-<h3><span class='info'>macOS 10.3/CUPS 1.2</span><a name='cupsICCProfile'>cupsICCProfile</a></h3>
+<h3 class="title"><span class='info'>macOS 10.3/CUPS 1.2</span><a name='cupsICCProfile'>cupsICCProfile</a></h3>
<p class='summary'>*cupsICCProfile ColorModel.MediaType.Resolution/Description: "filename"</p>
*cupsICCProfile ../Default: "/Library/Printers/vendor/Profiles/foo-default.icc"
</pre>
-<h4>Customizing the Profile Selection Keywords</h4>
+<h4 class="title">Customizing the Profile Selection Keywords</h4>
<p>The <tt>ColorModel</tt>, <tt>MediaType</tt>, and <tt>Resolution</tt> main keywords can be reassigned to different main keywords, allowing drivers to do color profile selection based on different parameters. The <tt>cupsICCQualifier1</tt>, <tt>cupsICCQualifier2</tt>, and <tt>cupsICCQualifier3</tt> keywords define the mapping from selector to main keyword:</p>
*cupsICCQualifier3: Resolution
</pre>
-<h3><span class='info'>macOS 10.4</span><a name='APCustom'>Custom Color Matching Support</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.4</span><a name='APCustom'>Custom Color Matching Support</a></h3>
<p class='summary'>*<a href='#APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a>: true<br>
*<a href='#APCustomColorMatchingName'>APCustomColorMatchingName</a> name/text: ""<br>
</blockquote>
-<h4><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingName'>APCustomColorMatchingName</a></h4>
+<h4 class="title"><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingName'>APCustomColorMatchingName</a></h4>
<p class='summary'>*APCustomColorMatchingName name/text: ""</p>
*fr.APCustomColorMatchingName name/La AcmeColor(tm): ""
</pre>
-<h4><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a></h4>
+<h4 class="title"><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a></h4>
<p class='summary'>*APCustomColorMatchingProfile: name</p>
*APCustomColorMatchingProfile: AdobeRGB
</pre>
-<h4><span class='info'>macOS 10.5</span><a name='APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a></h4>
+<h4 class="title"><span class='info'>macOS 10.5</span><a name='APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a></h4>
<p class='summary'>*APDefaultCustomColorMatchingProfile: name</p>
*APDefaultCustomColorMatchingProfile: sRGB
</pre>
-<h4><span class='info'>macOS 10.4</span><a name='APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a></h4>
+<h4 class="title"><span class='info'>macOS 10.4</span><a name='APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a></h4>
<p class='summary'>*APSupportsCustomColorMatching: boolean</p>
</blockquote>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIConstraints'>cupsUIConstraints</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIConstraints'>cupsUIConstraints</a></h3>
<p class='summary'>*cupsUIConstraints resolver: "*Keyword1 *Keyword2 ..."<br>
*cupsUIConstraints resolver: "*Keyword1 OptionKeyword1 *Keyword2 ..."<br>
*cupsUIConstraints photo: "*OutputMode Photo *MediaType Transparency *Resolution 1200dpi"
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIResolver'>cupsUIResolver</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIResolver'>cupsUIResolver</a></h3>
<p class='summary'>*cupsUIResolver resolver: "*Keyword1 OptionKeyword1 *Keyword2 OptionKeyword2 ..."</p>
<p>The resulting dictionary sets the page device attributes that are sent to your raster driver in the page header.</p>
-<h3>Custom Page Size Code</h3>
+
+<h3 class="title">Custom Page Size Code</h3>
<p>There are many possible implementations of the <tt>CustomPageSize</tt> code. For CUPS raster drivers, the following code is recommended:</p>
*CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice"
</pre>
-<h3>Supported PostScript Operators</h3>
+
+<h3 class="title">Supported PostScript Operators</h3>
<p>CUPS supports the following PostScript operators in addition to the usual PostScript number, string (literal and hex-encoded), boolean, null, and name values:</p>
</blockquote>
-<h3>Supported Page Device Attributes</h3>
+
+<h3 class="title">Supported Page Device Attributes</h3>
<p>Table 2 shows the supported page device attributes along with PostScript code examples.</p>
<p>The CUPS media keywords allow drivers to specify alternate custom page
size limits based on up to two options.</p>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier2'>cupsMediaQualifier2</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier2'>cupsMediaQualifier2</a></h3>
<p class='summary'>*cupsMediaQualifier2: MainKeyword</p>
*cupsMinSize ..Photo: "300 300"
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier3'>cupsMediaQualifier3</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier3'>cupsMediaQualifier3</a></h3>
<p class='summary'>*cupsMediaQualifier3: MainKeyword</p>
*cupsMinSize ..Photo: "300 300"
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMinSize'>cupsMinSize</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMinSize'>cupsMinSize</a></h3>
<p class='summary'>*cupsMinSize .Qualifier2.Qualifier3: "width length"<br>
*cupsMinSize .Qualifier2.: "width length"<br>
*cupsMinSize ..Photo: "300 300"
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMaxSize'>cupsMaxSize</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMaxSize'>cupsMaxSize</a></h3>
<p class='summary'>*cupsMaxSize .Qualifier2.Qualifier3: "width length"<br>
*cupsMaxSize .Qualifier2.: "width length"<br>
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPageSizeCategory'>cupsPageSizeCategory</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPageSizeCategory'>cupsPageSizeCategory</a></h3>
<p class="summary">*cupsPageSizeCategory name/text: "name name2 ... nameN"</p>
<h2 class='title'><a name='ATTRIBUTES'>General Attributes</a></h2>
-<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsBackSide'>cupsBackSide</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsBackSide'>cupsBackSide</a></h3>
<p class='summary'>*cupsBackSide: keyword</p>
<p>Also see the related <a href='#APDuplexRequiresFlippedMargin'><tt>APDuplexRequiresFlippedMargin</tt></a>
keyword.</p>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsCommands'>cupsCommands</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsCommands'>cupsCommands</a></h3>
<p class='summary'>*cupsCommands: "name name2 ... nameN"</p>
</pre>
-<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsEvenDuplex'>cupsEvenDuplex</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsEvenDuplex'>cupsEvenDuplex</a></h3>
<p class='summary'>*cupsEvenDuplex: boolean</p>
*cupsEvenDuplex: true
</pre>
-<h3><a name='cupsFax'>cupsFax</a></h3>
+
+<h3 class="title"><a name='cupsFax'>cupsFax</a></h3>
<p class='summary'>*cupsFax: boolean</p>
*cupsFax: true
</pre>
-<h3><a name='cupsFilter'>cupsFilter</a></h3>
+
+<h3 class="title"><a name='cupsFilter'>cupsFilter</a></h3>
<p class='summary'>*cupsFilter: "source/type cost program"</p>
*cupsFilter: "application/vnd.cups-postscript 0 -"
</pre>
-<h3><span class='info'>CUPS 1.5</span><a name='cupsFilter2'>cupsFilter2</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.5</span><a name='cupsFilter2'>cupsFilter2</a></h3>
<p class='summary'>*cupsFilter2: "source/type destination/type cost program"</p>
*cupsFilter2: "application/vnd.cups-postscript application/postscript 0 -"
</pre>
-<h3><span class='info'>Deprecated</span><a name='cupsFlipDuplex'>cupsFlipDuplex</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 2.3</span><a name='cupsFinishingTemplate'>cupsFinishingTemplate</a></h3>
+
+<p class='summary'>*cupsFinishingTemplate name/text: ""</p>
+
+<p>This option keyword specifies a finishing template (preset) that applies zero or more finishing processes to a job. Unlike <a href="#cupsIPPFinishings"><tt>cupsIPPFinishings</tt></a>, only one template can be selected by the user. PPD files also generally apply a constraint between this option and other finishing options like <tt>Booklet</tt>, <tt>FoldType</tt>, <tt>PunchMedia</tt>, and <tt>StapleWhen</tt>.</p>
+
+<p>Examples:</p>
+
+<pre class='command'>
+*cupsFinishingTemplate none/None: ""
+*cupsFinishingTemplate fold/Letter Fold: ""
+*cupsFinishingTemplate punch/2/3-Hole Punch: ""
+*cupsFinishingTemplate staple/Corner Staple: ""
+*cupsFinishingTemplate staple-dual/Double Staple: ""
+*cupsFinishingTemplate staple-and-fold/Corner Staple and Letter Fold: ""
+*cupsFinishingTemplate staple-and-punch/Corner Staple and 2/3-Hole Punch: ""
+</pre>
+
+
+<h3 class="title"><span class='info'>Deprecated</span><a name='cupsFlipDuplex'>cupsFlipDuplex</a></h3>
<p class='summary'>*cupsFlipDuplex: boolean</p>
*cupsFlipDuplex: true
</pre></blockquote>
-<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPFinishings'>cupsIPPFinishings</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPFinishings'>cupsIPPFinishings</a></h3>
<p class='summary'>*cupsIPPFinishings number/text: "*Option Choice ..."</p>
*cupsIPPFinishings 21/staple-bottom-left: "*StapleLocation SingleLandscape"
</pre>
-<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPReason'>cupsIPPReason</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPReason'>cupsIPPReason</a></h3>
<p class='summary'>*cupsIPPReason reason/Reason Text: "optional URIs"</p>
*End
</pre>
-<h3><span class='info'>CUPS 1.5</span><a name='cupsIPPSupplies'>cupsIPPSupplies</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.5</span><a name='cupsIPPSupplies'>cupsIPPSupplies</a></h3>
<p class='summary'>*cupsIPPSupplies: boolean</p>
</pre>
-<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountId'>cupsJobAccountId</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountId'>cupsJobAccountId</a></h3>
<p class='summary'>*cupsJobAccountId: boolean</p>
</pre>
-<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountingUserId'>cupsJobAccountingUserId</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountingUserId'>cupsJobAccountingUserId</a></h3>
<p class='summary'>*cupsJobAccountingUserId: boolean</p>
</pre>
-<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobPassword'>cupsJobPassword</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobPassword'>cupsJobPassword</a></h3>
<p class='summary'>*cupsJobPassword: "format"</p>
-<p>This keyword defines the format of the job-password IPP attribute, if supported by the printer. Currently the only supported format is "1111" indicating a 4-digit PIN code.</p>
+<p>This keyword defines the format of the "job-password" IPP attribute, if supported by the printer. The following format characters are supported:</p>
+
+<ul>
+ <li><code>1</code>: US ASCII digits.</li>
+ <li><code>A</code>: US ASCII letters.</li>
+ <li><code>C</code>: US ASCII letters, numbers, and punctuation.</li>
+ <li><code>.</code>: Any US ASCII printable character (0x20 to 0x7e).</li>
+ <li><code>N</code>: Any Unicode digit character.</li>
+ <li><code>U</code>: Any Unicode letter character.</li>
+ <li><code>*</code>: Any Unicode (utf-8) character.</li>
+</ul>
+
+<p>The format characters are repeated to indicate the length of the
+password string. For example, "1111" indicated a 4-digit US ASCII PIN code.</p>
<p>Example:</p>
</pre>
-<h3><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsLanguages'>cupsLanguages</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsLanguages'>cupsLanguages</a></h3>
<p class='summary'>*cupsLanguages: "locale list"</p>
</pre>
-<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsMandatory'>cupsMandatory</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsMandatory'>cupsMandatory</a></h3>
<p class='summary'>*cupsMandatory: "attribute1 attribute2 ... attributeN"</p>
</pre>
-<h3><a name='cupsManualCopies'>cupsManualCopies</a></h3>
+<h3 class="title"><a name='cupsManualCopies'>cupsManualCopies</a></h3>
<p class='summary'>*cupsManualCopies: boolean</p>
*cupsManualCopies: true
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerName'>cupsMarkerName</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerName'>cupsMarkerName</a></h3>
<p class='summary'>*cupsMarkerName/Name Text: ""</p>
*cupsMarkerName cyanToner/Cyan Toner: ""
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerNotice'>cupsMarkerNotice</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerNotice'>cupsMarkerNotice</a></h3>
<p class='summary'>*cupsMarkerNotice: "disclaimer text"</p>
*cupsMarkerNotice: "Supply levels are approximate."
</pre>
-<h3><span class='info'>CUPS 1.6/macOS 10.8</span><a name='cupsMaxCopies'>cupsMaxCopies</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.6/macOS 10.8</span><a name='cupsMaxCopies'>cupsMaxCopies</a></h3>
<p class='summary'>*cupsMaxCopies: integer</p>
*cupsMaxCopies: 99
</pre>
-<h3><a name='cupsModelNumber'>cupsModelNumber</a></h3>
+
+<h3 class="title"><a name='cupsModelNumber'>cupsModelNumber</a></h3>
<p class='summary'>*cupsModelNumber: number</p>
</pre>
-<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPJLCharset'>cupsPJLCharset</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPJLCharset'>cupsPJLCharset</a></h3>
<p class='summary'>*cupsPJLCharset: "ISO character set name"</p>
*cupsPJLCharset: "UTF-8"
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPJLDisplay'>cupsPJLDisplay</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPJLDisplay'>cupsPJLDisplay</a></h3>
<p class='summary'>*cupsPJLDisplay: "what"</p>
*cupsPJLDisplay: "none"
</pre>
-<h3><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsPortMonitor'>cupsPortMonitor</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsPortMonitor'>cupsPortMonitor</a></h3>
<p class='summary'>*cupsPortMonitor urischeme/Descriptive Text: "port monitor"</p>
*cupsPortMonitor usb/USB Status Monitor: "epson-usb"
</pre>
-<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPreFilter'>cupsPreFilter</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPreFilter'>cupsPreFilter</a></h3>
<p class='summary'>*cupsPreFilter: "source/type cost program"</p>
</pre>
-<h3><span class='info'>CUPS 1.5</span><a name='cupsPrintQuality'>cupsPrintQuality</a></h3>
+<h3 class="title"><span class='info'>CUPS 1.5</span><a name='cupsPrintQuality'>cupsPrintQuality</a></h3>
<p class='summary'>*cupsPrintQuality keyword/text: "code"</p>
*CloseUI: *cupsPrintQuality
</pre>
-<h3><span class='info'>CUPS 1.5</span><a name='cupsSingleFile'>cupsSingleFile</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.5</span><a name='cupsSingleFile'>cupsSingleFile</a></h3>
<p class='summary'>*cupsSingleFile: Boolean</p>
*cupsSingleFile: True
</pre>
-<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsSNMPSupplies'>cupsSNMPSupplies</a></h3>
+
+<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsSNMPSupplies'>cupsSNMPSupplies</a></h3>
<p class='summary'>*cupsSNMPSupplies: boolean</p>
*cupsSNMPSupplies: False
</pre>
-<h3><a name='cupsVersion'>cupsVersion</a></h3>
+
+<h3 class="title"><a name='cupsVersion'>cupsVersion</a></h3>
<p class='summary'>*cupsVersion: major.minor</p>
</pre>
-<h3><span class="info">CUPS 1.6/macOS 10.8</span><a name="JCLToPDFInterpreter">JCLToPDFInterpreter</a></h3>
+<h3 class="title"><span class="info">CUPS 1.6/macOS 10.8</span><a name="JCLToPDFInterpreter">JCLToPDFInterpreter</a></h3>
<p class="summary">*JCLToPDFInterpreter: "JCL"</p>
<h2 class='title'><a name='MACOSX'>macOS Attributes</a></h2>
-<h3><span class='info'>macOS 10.3</span><a name='APDialogExtension'>APDialogExtension</a></h3>
+<h3 class="title"><span class='info'>Deprecated</span><a name='APDialogExtension'>APDialogExtension</a></h3>
<p class='summary'>*APDialogExtension: "/Library/Printers/vendor/filename.plugin"</p>
<blockquote><b>Note:</b>
-<p>Starting with macOS 10.5, each plug-in must be compiled "4-way fat"
-(32-bit and 64-bit for both PowerPC and Intel) with garbage collection enabled
-in order to be usable with all applications.</p>
+<p>Since 2010, AirPrint has enabled the printing of full quality photos and
+documents from the Mac without requiring driver software. Starting with macOS
+10.12, system level security features prevent print dialog plug-ins from being
+loaded into applications that have enabled the library validation security
+feature. As of macOS 10.14 the <code>APDialogExtension</code> attribute used to
+create macOS print drivers is deprecated. All new printer models should support
+AirPrint moving forward.</p>
</blockquote>
*APDialogExtension: "/Library/Printers/vendor/options.plugin"
</pre>
-<h3><span class='info'>macOS 10.4</span><a name='APDuplexRequiresFlippedMargin'>APDuplexRequiresFlippedMargin</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.4</span><a name='APDuplexRequiresFlippedMargin'>APDuplexRequiresFlippedMargin</a></h3>
<p class='summary'>*APDuplexRequiresFlippedMargin: boolean</p>
<p>Also see the related <a href='#cupsBackSide'><tt>cupsBackSide</tt></a>
keyword.</p>
-<h3><a name='APHelpBook'>APHelpBook</a></h3>
+
+<h3 class="title"><a name='APHelpBook'>APHelpBook</a></h3>
<p class='summary'>*APHelpBook: "bundle URL"</p>
*APHelpBook: "file:///Library/Printers/vendor/Help.bundle"
</pre>
-<h3><span class='info'>macOS 10.6</span><a name='APICADriver'>APICADriver</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.6</span><a name='APICADriver'>APICADriver</a></h3>
<p class='summary'>*APICADriver: boolean</p>
*APScanAppBundleID: "com.apple.ImageCaptureApp"
</pre>
-<h3><span class='info'>macOS 10.3</span><a name='APPrinterIconPath'>APPrinterIconPath</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.3</span><a name='APPrinterIconPath'>APPrinterIconPath</a></h3>
<p class='summary'>*APPrinterIconPath: "/Library/Printers/vendor/filename.icns"</p>
*APPrinterIconPath: "/Library/Printers/vendor/Icons/filename.icns"
</pre>
-<h3><span class='info'>macOS 10.4</span><a name='APPrinterLowInkTool'>APPrinterLowInkTool</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.4</span><a name='APPrinterLowInkTool'>APPrinterLowInkTool</a></h3>
<p class='summary'>*APPrinterLowInkTool: "/Library/Printers/vendor/program"</p>
*APPrinterLowInkTool: "/Library/Printers/vendor/Tools/lowinktool"
</pre>
-<h3><span class='info'>macOS 10.5</span><a name='APPrinterPreset'>APPrinterPreset</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.5</span><a name='APPrinterPreset'>APPrinterPreset</a></h3>
<p class='summary'>*APPrinterPreset name/text: "*Option Choice ..."</p>
*fr.APPrinterPreset Photo_on_Photo_Paper/Photo sur papier photographique: ""
</pre>
-<h3><span class='info'>macOS 10.3</span><a name='APPrinterUtilityPath'>APPrinterUtilityPath</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.3</span><a name='APPrinterUtilityPath'>APPrinterUtilityPath</a></h3>
<p class='summary'>*APPrinterPrinterUtilityPath: "/Library/Printers/vendor/filename.app"</p>
*APPrinterPrinterUtilityPath: "/Library/Printers/vendor/Tools/utility.app"
</pre>
-<h3><span class='info'>macOS 10.6</span><a name='APScannerOnly'>APScannerOnly</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.6</span><a name='APScannerOnly'>APScannerOnly</a></h3>
<p class='summary'>*APScannerOnly: boolean</p>
*APScannerOnly: True
</pre>
-<h3><span class='info'>macOS 10.3</span><a name='APScanAppBundleID'>APScanAppBundleID</a></h3>
+
+<h3 class="title"><span class='info'>macOS 10.3</span><a name='APScanAppBundleID'>APScanAppBundleID</a></h3>
<p class='summary'>*APScanAppBundleID: "bundle ID"</p>
<h2 class='title'><a name='HISTORY'>Change History</a></h2>
-<h3>Changes in CUPS 1.7</h3>
+<h3 class="title">Changes in CUPS 2.3</h3>
+
+<ul>
+
+ <li>Added <a href="#cupsFinishingTemplate"><tt>cupsFinishingTemplate</tt></a> option.</li>
+
+</ul>
+
+
+<h3 class="title">Changes in CUPS 1.7</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.6</h3>
+<h3 class="title">Changes in CUPS 1.6</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.5</h3>
+<h3 class="title">Changes in CUPS 1.5</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.4.5</h3>
+<h3 class="title">Changes in CUPS 1.4.5</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.4</h3>
+<h3 class="title">Changes in CUPS 1.4</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.3.1</h3>
+<h3 class="title">Changes in CUPS 1.3.1</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.3</h3>
+<h3 class="title">Changes in CUPS 1.3</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.2.8</h3>
+
+<h3 class="title">Changes in CUPS 1.2.8</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.2</h3>
+
+<h3 class="title">Changes in CUPS 1.2</h3>
<ul>
</ul>
-<h3>Changes in CUPS 1.1</h3>
+
+<h3 class="title">Changes in CUPS 1.1</h3>
<ul>
<li>Added <tt>cupsProtocol</tt> keyword</li>
</ul>
-</div>
-</body>
+ </div>
+ </body>
</html>