]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - doc/help/spec-ppd.html
Greatly simplify the man page handling.
[thirdparty/cups.git] / doc / help / spec-ppd.html
index ec0a03091370562568f82b19d08f615b36dee758..3782eb7cab083b922a5c9ac887b4b776287c21bd 100644 (file)
@@ -1,12 +1,15 @@
-<!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.7">
-<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;
 }
@@ -15,6 +18,11 @@ H1, H2, H3, H4, H5, H6, P, TD, TH {
   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;
@@ -24,9 +32,19 @@ PRE {
   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;
 }
 
@@ -38,12 +56,17 @@ P.example {
   font-style: italic;
   margin-left: 36pt;
 }
-  
-PRE.example {
-  background: #eeeeee;
-  border: dotted thin #999999;
-  margin-left: 36pt;
-  padding: 10pt;
+
+DL.man DD {
+  margin-left: 5em;
+}
+
+DL.man DT {
+  margin-left: 0;
+}
+
+PRE.man {
+  margin: 0;
 }
 
 PRE.command EM, PRE.example EM {
@@ -60,12 +83,6 @@ P.formula {
   margin-left: 36pt;
 }
 
-BLOCKQUOTE {
-  background: #eeeeee;
-  border: solid thin #999999;
-  padding: 10pt;
-}
-
 A IMG {
   border: none;
 }
@@ -77,7 +94,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
@@ -121,7 +138,7 @@ DIV.table CAPTION {
 
 DIV.table TABLE TD {
   border: solid thin #cccccc;
-  padding-top: 5pt;
+  padding: 5pt 10pt 0;
 }
 
 DIV.table TABLE TH {
@@ -269,26 +286,126 @@ DIV.summary TABLE THEAD 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;
@@ -304,55 +421,43 @@ ul.contents > li {
 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>
 <!--
-  "$Id: spec-ppd.html 9345 2010-10-26 23:46:51Z mike $"
-
   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>
@@ -372,74 +477,82 @@ div.contents ul.subcontents li {
 </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/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="#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="#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="#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">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>
-</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>
@@ -472,11 +585,12 @@ LINE-END = CR / LF / CR LF
 
 <p>CUPS supports several methods of auto-configuration via PPD keywords.</p>
 
-<h3><span class='info'>OS X 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>
 
-<p>This 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>This macOS 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>
 
@@ -487,7 +601,8 @@ LINE-END = CR / LF / CR LF
 *APAutoSetupTool: "/Library/Printers/vendor/Tools/autosetuptool"
 </pre>
 
-<h3><span class='info'>OS X 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>
@@ -516,7 +631,8 @@ LINE-END = CR / LF / CR LF
 *CloseUI: OptionDuplex
 </pre>
 
-<h3><span class='info'>OS X 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>
@@ -539,7 +655,7 @@ LINE-END = CR / LF / CR LF
 
 <h2 class='title'><a name='PROFILES'>Color Profiles</a></h2>
 
-<p>CUPS supports three types of color profiles. The first type is based on sRGB and is used by the standard CUPS raster filters and GPL Ghostscript. The second type is based on ICC profiles and is used by the Quartz-based filters on MacOS X. The final type is based on well-known colorspaces such as sRGB and Adobe RGB.</p>
+<p>CUPS supports three types of color profiles. The first type is based on sRGB and is used by the standard CUPS raster filters and GPL Ghostscript. The second type is based on ICC profiles and is used by the Quartz-based filters on macOS. The final type is based on well-known colorspaces such as sRGB and Adobe RGB.</p>
 
 <blockquote><b>Note:</b>
 
@@ -547,11 +663,12 @@ LINE-END = CR / LF / CR LF
 
 </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>
 
-<p>This string keyword specifies an sRGB-based color profile consisting of gamma and density controls and a 3x3 CMY color transform matrix. <em>This keyword is not supported on OS X.</em></p>
+<p>This string keyword specifies an sRGB-based color profile consisting of gamma and density controls and a 3x3 CMY color transform matrix. <em>This keyword is not supported on macOS.</em></p>
 
 <p>The <i>Resolution</i> and <i>MediaType</i> values may be "-" to act as a wildcard. Otherwise they must match one of the <tt>Resolution</tt> or <tt>MediaType</tt> option keywords defined in the PPD file.</p>
 
@@ -584,7 +701,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 </pre>
 
 
-<h3><span class='info'>OS X 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>
 
@@ -605,7 +722,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *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>
 
@@ -623,22 +740,23 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *cupsICCQualifier3: Resolution
 </pre>
 
-<h3><span class='info'>OS X 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>
 *<a href='#APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a>: profile<br>
 *<a href='#APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a>: profile</p>
 
-<p>These keywords tell the OS X raster filters that the printer driver provides its own custom color matching and that generic color profiles should be used when generating 1-, 3-, and 4-component raster data as requested by the driver. The <tt>APCustomColorMatchingProfile</tt> and <tt>APDefaultColorMatchingProfile</tt> keywords specify alternate color profiles (sRGB or AdobeRGB) to use for 3-color (RGB) raster data.</p>
+<p>These keywords tell the macOS raster filters that the printer driver provides its own custom color matching and that generic color profiles should be used when generating 1-, 3-, and 4-component raster data as requested by the driver. The <tt>APCustomColorMatchingProfile</tt> and <tt>APDefaultColorMatchingProfile</tt> keywords specify alternate color profiles (sRGB or AdobeRGB) to use for 3-color (RGB) raster data.</p>
 
 <blockquote><b>Note:</b>
 
-<p>Prior to OS X 10.6, the default RGB color space was Apple's "GenericRGB". The new default in OS X 10.6 and later is "sRGB". For more information, see <a href="http://support.apple.com/kb/HT3712">"OS X v10.6: About gamma 2.2"</a> on Apple's support site.</p>
+<p>Prior to macOS 10.6, the default RGB color space was Apple's "GenericRGB". The new default in macOS 10.6 and later is "sRGB". For more information, see <a href="http://support.apple.com/kb/HT3712">"macOS v10.6: About gamma 2.2"</a> on Apple's support site.</p>
 
 </blockquote>
 
-<h4><span class='info'>OS X 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>
 
@@ -652,7 +770,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *fr.APCustomColorMatchingName name/La AcmeColor(tm): ""
 </pre>
 
-<h4><span class='info'>OS X 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>
 
@@ -674,7 +792,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *APCustomColorMatchingProfile: AdobeRGB
 </pre>
 
-<h4><span class='info'>OS X 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>
 
@@ -688,7 +806,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *APDefaultCustomColorMatchingProfile: sRGB
 </pre>
 
-<h4><span class='info'>OS X 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>
 
@@ -724,7 +842,8 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 
 </blockquote>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
@@ -754,7 +873,8 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *cupsUIConstraints photo: "*OutputMode Photo *MediaType Transparency *Resolution 1200dpi"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
 
@@ -856,7 +976,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 </pre>
 
 
-<h2 class='title'><a name='OPTIONS'><span class="info">CUPS 1.3/OS X 10.6</span>Custom Options</a></h2>
+<h2 class='title'><a name='OPTIONS'><span class="info">CUPS 1.3/macOS 10.6</span>Custom Options</a></h2>
 
 <p>CUPS supports custom options using an extension of the <tt>CustomPageSize</tt> and <tt>ParamCustomPageSize</tt> syntax:</p>
 
@@ -971,7 +1091,8 @@ option value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234"
 
 <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</a></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>
 
@@ -984,7 +1105,8 @@ option value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234"
 *CustomPageSize True: "pop pop pop &lt;&lt;/PageSize[5 -2 roll]/ImagingBBox null&gt;&gt;setpagedevice"
 </pre>
 
-<h3>Supported PostScript Operators</a></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>
 
@@ -1043,7 +1165,8 @@ PRE B {
 
 </blockquote>
 
-<h3>Supported Page Device Attributes</a></h3>
+
+<h3 class="title">Supported Page Device Attributes</h3>
 
 <p>Table 2 shows the supported page device attributes along with PostScript code examples.</p>
 
@@ -1314,7 +1437,8 @@ PRE B {
 <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/OS X 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>
 
@@ -1333,7 +1457,8 @@ custom page size limits.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
 
@@ -1352,7 +1477,8 @@ custom page size limits.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
@@ -1375,7 +1501,8 @@ are used to identify options to use for matching.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
@@ -1399,11 +1526,11 @@ are used to identify options to use for matching.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
 
-<p>This keyword lists related paper size names that should be grouped together in the Print or Page Setup dialogs. The "name" portion of the keyword specifies the root/default size for the grouping. On OS X the grouped paper sizes are shown in a submenu of the main paper size. When omitted, sizes with the same dimensions are automatically grouped together, for example "Letter" and "Letter.Borderless".</p>
+<p>This keyword lists related paper size names that should be grouped together in the Print or Page Setup dialogs. The "name" portion of the keyword specifies the root/default size for the grouping. On macOS the grouped paper sizes are shown in a submenu of the main paper size. When omitted, sizes with the same dimensions are automatically grouped together, for example "Letter" and "Letter.Borderless".</p>
 
 <p>Example:</p>
 
@@ -1416,7 +1543,7 @@ are used to identify options to use for matching.</p>
 
 <h2 class='title'><a name='ATTRIBUTES'>General Attributes</a></h2>
 
-<h3><span class='info'>CUPS 1.3/OS X 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>
 
@@ -1492,7 +1619,7 @@ will be ignored.</p>
 </table>
 </div>
 
-<p><em>* - Not supported in OS X 10.5.x and earlier</em></p>
+<p><em>* - Not supported in macOS 10.5.x and earlier</em></p>
 
 <div class='figure'><table summary='Back side images'>
 <caption>Figure 1: Back side images</caption>
@@ -1512,7 +1639,8 @@ will be ignored.</p>
 <p>Also see the related <a href='#APDuplexRequiresFlippedMargin'><tt>APDuplexRequiresFlippedMargin</tt></a>
 keyword.</p>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
 
@@ -1528,7 +1656,7 @@ by whitespace.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.3/OS X 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>
 
@@ -1543,7 +1671,8 @@ printing is selected. The default value is <code>false</code>.</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>
 
@@ -1555,7 +1684,8 @@ printing is selected. The default value is <code>false</code>.</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>
 
@@ -1577,7 +1707,8 @@ the special filter program "-" may be specified.</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>
 
@@ -1602,25 +1733,45 @@ the special filter program "-" may be specified.</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>
 
-<p>Due to implementation differences between OS X and Ghostscript,
+<p>Due to implementation differences between macOS and Ghostscript,
 the <tt>cupsFlipDuplex</tt> keyword is deprecated. Instead, use
 the <a href='#cupsBackSide'><tt>cupsBackSide</tt></a> keyword to specify
 the coordinate system (pixel layout) of the page data on the back side of
 duplex pages.</p>
 
 <p>The value <code>true</code> maps to a <tt>cupsBackSide</tt> value
-of <code>Rotated</code> on OS X and <code>Flipped</code> with
+of <code>Rotated</code> on macOS and <code>Flipped</code> with
 Ghostscript.</p>
 
 <p>The default value is <code>false</code>.</p>
 
 <blockquote><b>Note:</b>
 
-<p>OS X drivers that previously used
+<p>macOS drivers that previously used
 <tt>cupsFlipDuplex</tt> may wish to provide both the old and
 new keywords for maximum compatibility, for example:</p>
 
@@ -1637,7 +1788,8 @@ Ghostscript can use:</p>
 *cupsFlipDuplex: true
 </pre></blockquote>
 
-<h3><span class='info'>CUPS 1.3/OS X 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>
 
@@ -1653,7 +1805,8 @@ values to PPD options and choices.</p>
 *cupsIPPFinishings 21/staple-bottom-left: "*StapleLocation SingleLandscape"
 </pre>
 
-<h3><span class='info'>CUPS 1.3/OS X 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>
 
@@ -1693,7 +1846,8 @@ http://www.vendor.com/help"
 *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>
 
@@ -1706,7 +1860,63 @@ http://www.vendor.com/help"
 *cupsIPPSupplies: False
 </pre>
 
-<h3><span class='info'>CUPS 1.2/OS X 10.5</span><a name='cupsLanguages'>cupsLanguages</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>
+
+<p>This keyword defines whether the printer accepts the job-account-id IPP attribute.</p>
+
+<p>Example:</p>
+
+<pre class='command'>
+<em>*% Specify the printer accepts the job-account-id IPP attribute.</em>
+*cupsJobAccountId: True
+</pre>
+
+
+<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>
+
+<p>This keyword defines whether the printer accepts the job-accounting-user-id IPP attribute.</p>
+
+<p>Example:</p>
+
+<pre class='command'>
+<em>*% Specify the printer accepts the job-accounting-user-id IPP attribute.</em>
+*cupsJobAccountingUserId: True
+</pre>
+
+
+<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. 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 class='command'>
+<em>*% Specify the printer supports 4-digit PIN codes.</em>
+*cupsJobPassword: "1111"
+</pre>
+
+
+<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>
 
@@ -1721,7 +1931,22 @@ list of locale names ("en", "en_US", "fr_CA", etc.)</p>
 *cupsLanguages: "en_CA en_UK en_US fr_CA fr_FR"
 </pre>
 
-<h3><a name='cupsManualCopies'>cupsManualCopies</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>
+
+<p>This keyword defines a list of IPP attributes that must be provided when submitting a print job creation request.</p>
+
+<p>Example:</p>
+
+<pre class='command'>
+<em>*% Specify that the user must supply a job-password</em>
+*cupsMandatory: "job-password job-password-encryption"
+</pre>
+
+
+<h3 class="title"><a name='cupsManualCopies'>cupsManualCopies</a></h3>
 
 <p class='summary'>*cupsManualCopies: boolean</p>
 
@@ -1736,7 +1961,8 @@ hardware. The default value is <code>false</code>.</p>
 *cupsManualCopies: true
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
 
@@ -1750,7 +1976,8 @@ generated by the driver to human readable text.</p>
 *cupsMarkerName cyanToner/Cyan Toner: ""
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
 
@@ -1764,7 +1991,8 @@ are approximate".</p>
 *cupsMarkerNotice: "Supply levels are approximate."
 </pre>
 
-<h3><span class='info'>CUPS 1.6/OS X 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>
 
@@ -1777,7 +2005,8 @@ are approximate".</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>
 
@@ -1793,7 +2022,7 @@ the output for a specific model of printer.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.3/OS X 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>
 
@@ -1808,7 +2037,8 @@ assumed.</p>
 *cupsPJLCharset: "UTF-8"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
 
@@ -1827,7 +2057,8 @@ to use "@PJL RDYMSG DISPLAY". The default is "job".</p>
 *cupsPJLDisplay: "none"
 </pre>
 
-<h3><span class='info'>CUPS 1.2/OS X 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>
 
@@ -1859,7 +2090,8 @@ to disable the port monitor for the given URI scheme.</p>
 *cupsPortMonitor usb/USB Status Monitor: "epson-usb"
 </pre>
 
-<h3><span class='info'>CUPS 1.3/OS X 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>
 
@@ -1878,7 +2110,7 @@ before the filter that accepts the given MIME type.</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>
 
@@ -1902,7 +2134,8 @@ before the filter that accepts the given MIME type.</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>
 
@@ -1918,7 +2151,8 @@ before the filter that accepts the given MIME type.</p>
 *cupsSingleFile: True
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 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>
 
@@ -1933,7 +2167,8 @@ the standard SNMP Printer MIB OIDs for supply levels. The default value is
 *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>
 
@@ -1949,11 +2184,11 @@ PPD file extensions was used. Currently it must be the string
 </pre>
 
 
-<h3><span class="info">CUPS 1.6/OS X 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>
 
-<p>This keyword provfides the JCL command to insert a PDF job file into a printer-ready data stream. The JCL command is added after the <tt>JCLBegin</tt> value and any commands for JCL options in the PPD file.</p>
+<p>This keyword provides the JCL command to insert a PDF job file into a printer-ready data stream. The JCL command is added after the <tt>JCLBegin</tt> value and any commands for JCL options in the PPD file.</p>
 
 <p>Example:</p>
 
@@ -1963,9 +2198,9 @@ PPD file extensions was used. Currently it must be the string
 </pre>
 
 
-<h2 class='title'><a name='MACOSX'>OS X Attributes</a></h2>
+<h2 class='title'><a name='MACOSX'>macOS Attributes</a></h2>
 
-<h3><span class='info'>OS X 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>
 
@@ -1977,9 +2212,13 @@ plug-ins.</p>
 
 <blockquote><b>Note:</b>
 
-<p>Starting with OS X 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>
 
@@ -1991,7 +2230,8 @@ in order to be usable with all applications.</p>
 *APDialogExtension: "/Library/Printers/vendor/options.plugin"
 </pre>
 
-<h3><span class='info'>OS X 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>
 
@@ -2073,7 +2313,8 @@ and the <tt>Tumble</tt> page attribute.</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>
 
@@ -2088,7 +2329,8 @@ looking up IPP reason codes for this printer driver. The
 *APHelpBook: "file:///Library/Printers/vendor/Help.bundle"
 </pre>
 
-<h3><span class='info'>OS X 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>
 
@@ -2102,7 +2344,8 @@ Architecture (ICA) driver for scanning. The default is <tt>False</tt>.</p>
 *APScanAppBundleID: "com.apple.ImageCaptureApp"
 </pre>
 
-<h3><span class='info'>OS X 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>
 
@@ -2116,7 +2359,8 @@ displaying the printer. The file must be in the Apple icon format.</p>
 *APPrinterIconPath: "/Library/Printers/vendor/Icons/filename.icns"
 </pre>
 
-<h3><span class='info'>OS X 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>
 
@@ -2133,7 +2377,8 @@ Technical Note TN2144</a> for more information.</p>
 *APPrinterLowInkTool: "/Library/Printers/vendor/Tools/lowinktool"
 </pre>
 
-<h3><span class='info'>OS X 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>
 
@@ -2203,7 +2448,8 @@ choice (*MainKeyword OptionKeyword) or a preset identifier and value
 *fr.APPrinterPreset Photo_on_Photo_Paper/Photo sur papier photographique: ""
 </pre>
 
-<h3><span class='info'>OS X 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>
 
@@ -2218,7 +2464,8 @@ information.</p>
 *APPrinterPrinterUtilityPath: "/Library/Printers/vendor/Tools/utility.app"
 </pre>
 
-<h3><span class='info'>OS X 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>
 
@@ -2232,7 +2479,8 @@ capabilities. The default is <tt>False</tt>.</p>
 *APScannerOnly: True
 </pre>
 
-<h3><span class='info'>OS X 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>
 
@@ -2249,11 +2497,32 @@ the device.</p>
 
 <h2 class='title'><a name='HISTORY'>Change History</a></h2>
 
-<h3>Changes in CUPS 1.6</h3>
+<h3 class="title">Changes in CUPS 2.3</h3>
 
 <ul>
 
-    <li>Added <a href="#cupsPageSizeCategory"><tt>cupsPageSizeCategory</tt></a> keyword (originally defined in CUPS 1.4).</li>
+       <li>Added <a href="#cupsFinishingTemplate"><tt>cupsFinishingTemplate</tt></a> option.</li>
+
+</ul>
+
+
+<h3 class="title">Changes in CUPS 1.7</h3>
+
+<ul>
+
+       <li>Added <a href="#cupsJobAccountId"><tt>cupsJobAccountId</tt></a>,
+       <a href="#cupsJobAccountingUserId"><tt>cupsJobAccountingUserId</tt></a>,
+       <a href="#cupsJobPassword"><tt>cupsJobPassword</tt></a>,
+       <a href="#cupsMandatory"><tt>cupsMandatory</tt></a> keywords.</li>
+
+</ul>
+
+
+<h3 class="title">Changes in CUPS 1.6</h3>
+
+<ul>
+
+       <li>Added <a href="#cupsPageSizeCategory"><tt>cupsPageSizeCategory</tt></a> keyword (originally defined in CUPS 1.4).</li>
 
        <li>Added <a href="#cupsMaxCopies"><tt>cupsMaxCopies</tt></a> keyword.</li>
 
@@ -2264,7 +2533,7 @@ the device.</p>
 </ul>
 
 
-<h3>Changes in CUPS 1.5</h3>
+<h3 class="title">Changes in CUPS 1.5</h3>
 
 <ul>
 
@@ -2273,7 +2542,7 @@ the device.</p>
 </ul>
 
 
-<h3>Changes in CUPS 1.4.5</h3>
+<h3 class="title">Changes in CUPS 1.4.5</h3>
 
 <ul>
 
@@ -2284,7 +2553,7 @@ the device.</p>
 </ul>
 
 
-<h3>Changes in CUPS 1.4</h3>
+<h3 class="title">Changes in CUPS 1.4</h3>
 
 <ul>
 
@@ -2319,11 +2588,11 @@ the device.</p>
 </ul>
 
 
-<h3>Changes in CUPS 1.3.1</h3>
+<h3 class="title">Changes in CUPS 1.3.1</h3>
 
 <ul>
 
-       <li>Added missing OS X <tt>AP</tt> keywords.</li>
+       <li>Added missing macOS <tt>AP</tt> keywords.</li>
 
        <li>Added section on auto-configuration including the
        <tt>OID<i>MainKeyword</i></tt> and <tt>?<i>MainKeyword</i></tt>
@@ -2334,7 +2603,7 @@ the device.</p>
 </ul>
 
 
-<h3>Changes in CUPS 1.3</h3>
+<h3 class="title">Changes in CUPS 1.3</h3>
 
 <ul>
 
@@ -2353,7 +2622,8 @@ the device.</p>
 
 </ul>
 
-<h3>Changes in CUPS 1.2.8</h3>
+
+<h3 class="title">Changes in CUPS 1.2.8</h3>
 
 <ul>
 
@@ -2362,7 +2632,8 @@ the device.</p>
 
 </ul>
 
-<h3>Changes in CUPS 1.2</h3>
+
+<h3 class="title">Changes in CUPS 1.2</h3>
 
 <ul>
 
@@ -2387,7 +2658,8 @@ the device.</p>
 
 </ul>
 
-<h3>Changes in CUPS 1.1</h3>
+
+<h3 class="title">Changes in CUPS 1.1</h3>
 
 <ul>
 
@@ -2396,6 +2668,6 @@ the device.</p>
        <li>Added <tt>cupsProtocol</tt> keyword</li>
 
 </ul>
-</div>
-</body>
+    </div>
+  </body>
 </html>