xref: /aosp_15_r20/external/libcups/doc/help/spec-ppd.html (revision 5e7646d21f1134fb0638875d812ef646c12ab91e)
1*5e7646d2SAndroid Build Coastguard Worker<!DOCTYPE html>
2*5e7646d2SAndroid Build Coastguard Worker<html>
3*5e7646d2SAndroid Build Coastguard Worker<!-- SECTION: Specifications -->
4*5e7646d2SAndroid Build Coastguard Worker  <head>
5*5e7646d2SAndroid Build Coastguard Worker    <title>CUPS PPD Extensions</title>
6*5e7646d2SAndroid Build Coastguard Worker    <meta name="keywords" content="Specifications">
7*5e7646d2SAndroid Build Coastguard Worker    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
8*5e7646d2SAndroid Build Coastguard Worker    <meta name="creator" content="codedoc v3.1">
9*5e7646d2SAndroid Build Coastguard Worker    <meta name="author" content="Unknown">
10*5e7646d2SAndroid Build Coastguard Worker    <meta name="copyright" content="Unknown">
11*5e7646d2SAndroid Build Coastguard Worker    <meta name="version" content="0.0">
12*5e7646d2SAndroid Build Coastguard Worker    <style type="text/css"><!--
13*5e7646d2SAndroid Build Coastguard WorkerBODY {
14*5e7646d2SAndroid Build Coastguard Worker  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
15*5e7646d2SAndroid Build Coastguard Worker}
16*5e7646d2SAndroid Build Coastguard Worker
17*5e7646d2SAndroid Build Coastguard WorkerH1, H2, H3, H4, H5, H6, P, TD, TH {
18*5e7646d2SAndroid Build Coastguard Worker  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
19*5e7646d2SAndroid Build Coastguard Worker}
20*5e7646d2SAndroid Build Coastguard Worker
21*5e7646d2SAndroid Build Coastguard WorkerH1 { font-size: 2em; }
22*5e7646d2SAndroid Build Coastguard WorkerH2 { font-size: 1.75em; }
23*5e7646d2SAndroid Build Coastguard WorkerH3 { font-size: 1.5em; }
24*5e7646d2SAndroid Build Coastguard WorkerH4 { font-size: 1.25em; }
25*5e7646d2SAndroid Build Coastguard Worker
26*5e7646d2SAndroid Build Coastguard WorkerKBD {
27*5e7646d2SAndroid Build Coastguard Worker  font-family: monaco, courier, monospace;
28*5e7646d2SAndroid Build Coastguard Worker  font-weight: bold;
29*5e7646d2SAndroid Build Coastguard Worker}
30*5e7646d2SAndroid Build Coastguard Worker
31*5e7646d2SAndroid Build Coastguard WorkerPRE {
32*5e7646d2SAndroid Build Coastguard Worker  font-family: monaco, courier, monospace;
33*5e7646d2SAndroid Build Coastguard Worker}
34*5e7646d2SAndroid Build Coastguard Worker
35*5e7646d2SAndroid Build Coastguard WorkerBLOCKQUOTE {
36*5e7646d2SAndroid Build Coastguard Worker  border-left: solid 2px #777;
37*5e7646d2SAndroid Build Coastguard Worker  margin: 1em 0;
38*5e7646d2SAndroid Build Coastguard Worker  padding: 10px;
39*5e7646d2SAndroid Build Coastguard Worker}
40*5e7646d2SAndroid Build Coastguard Worker
41*5e7646d2SAndroid Build Coastguard WorkerBLOCKQUOTE OL LI {
42*5e7646d2SAndroid Build Coastguard Worker  margin-left: -1em;
43*5e7646d2SAndroid Build Coastguard Worker}
44*5e7646d2SAndroid Build Coastguard Worker
45*5e7646d2SAndroid Build Coastguard WorkerPRE.command, PRE.example {
46*5e7646d2SAndroid Build Coastguard Worker  background: #eee;
47*5e7646d2SAndroid Build Coastguard Worker  margin: 0 36pt;
48*5e7646d2SAndroid Build Coastguard Worker  padding: 10px;
49*5e7646d2SAndroid Build Coastguard Worker}
50*5e7646d2SAndroid Build Coastguard Worker
51*5e7646d2SAndroid Build Coastguard WorkerP.compact {
52*5e7646d2SAndroid Build Coastguard Worker  margin: 0;
53*5e7646d2SAndroid Build Coastguard Worker}
54*5e7646d2SAndroid Build Coastguard Worker
55*5e7646d2SAndroid Build Coastguard WorkerP.example {
56*5e7646d2SAndroid Build Coastguard Worker  font-style: italic;
57*5e7646d2SAndroid Build Coastguard Worker  margin-left: 36pt;
58*5e7646d2SAndroid Build Coastguard Worker}
59*5e7646d2SAndroid Build Coastguard Worker
60*5e7646d2SAndroid Build Coastguard WorkerDL.man DD {
61*5e7646d2SAndroid Build Coastguard Worker  margin-left: 5em;
62*5e7646d2SAndroid Build Coastguard Worker}
63*5e7646d2SAndroid Build Coastguard Worker
64*5e7646d2SAndroid Build Coastguard WorkerDL.man DT {
65*5e7646d2SAndroid Build Coastguard Worker  margin-left: 0;
66*5e7646d2SAndroid Build Coastguard Worker}
67*5e7646d2SAndroid Build Coastguard Worker
68*5e7646d2SAndroid Build Coastguard WorkerPRE.man {
69*5e7646d2SAndroid Build Coastguard Worker  margin: 0;
70*5e7646d2SAndroid Build Coastguard Worker}
71*5e7646d2SAndroid Build Coastguard Worker
72*5e7646d2SAndroid Build Coastguard WorkerPRE.command EM, PRE.example EM {
73*5e7646d2SAndroid Build Coastguard Worker  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
74*5e7646d2SAndroid Build Coastguard Worker}
75*5e7646d2SAndroid Build Coastguard Worker
76*5e7646d2SAndroid Build Coastguard WorkerP.command {
77*5e7646d2SAndroid Build Coastguard Worker  font-family: monaco, courier, monospace;
78*5e7646d2SAndroid Build Coastguard Worker  margin-left: 36pt;
79*5e7646d2SAndroid Build Coastguard Worker}
80*5e7646d2SAndroid Build Coastguard Worker
81*5e7646d2SAndroid Build Coastguard WorkerP.formula {
82*5e7646d2SAndroid Build Coastguard Worker  font-style: italic;
83*5e7646d2SAndroid Build Coastguard Worker  margin-left: 36pt;
84*5e7646d2SAndroid Build Coastguard Worker}
85*5e7646d2SAndroid Build Coastguard Worker
86*5e7646d2SAndroid Build Coastguard WorkerA IMG {
87*5e7646d2SAndroid Build Coastguard Worker  border: none;
88*5e7646d2SAndroid Build Coastguard Worker}
89*5e7646d2SAndroid Build Coastguard Worker
90*5e7646d2SAndroid Build Coastguard WorkerA:link:hover IMG {
91*5e7646d2SAndroid Build Coastguard Worker  background: #f0f0f0;
92*5e7646d2SAndroid Build Coastguard Worker  border-radius: 10px;
93*5e7646d2SAndroid Build Coastguard Worker  -moz-border-radius: 10px;
94*5e7646d2SAndroid Build Coastguard Worker}
95*5e7646d2SAndroid Build Coastguard Worker
96*5e7646d2SAndroid Build Coastguard WorkerA:link, A:visited {
97*5e7646d2SAndroid Build Coastguard Worker  font-weight: inherit;
98*5e7646d2SAndroid Build Coastguard Worker  text-decoration: none;
99*5e7646d2SAndroid Build Coastguard Worker}
100*5e7646d2SAndroid Build Coastguard Worker
101*5e7646d2SAndroid Build Coastguard WorkerA:link:hover, A:visited:hover, A:active {
102*5e7646d2SAndroid Build Coastguard Worker  text-decoration: underline;
103*5e7646d2SAndroid Build Coastguard Worker}
104*5e7646d2SAndroid Build Coastguard Worker
105*5e7646d2SAndroid Build Coastguard WorkerSUB, SUP {
106*5e7646d2SAndroid Build Coastguard Worker  font-size: 50%;
107*5e7646d2SAndroid Build Coastguard Worker}
108*5e7646d2SAndroid Build Coastguard Worker
109*5e7646d2SAndroid Build Coastguard WorkerTR.data, TD.data, TR.data TD {
110*5e7646d2SAndroid Build Coastguard Worker  margin-top: 10pt;
111*5e7646d2SAndroid Build Coastguard Worker  padding: 5pt;
112*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 1pt #999999;
113*5e7646d2SAndroid Build Coastguard Worker}
114*5e7646d2SAndroid Build Coastguard Worker
115*5e7646d2SAndroid Build Coastguard WorkerTR.data TH {
116*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 1pt #999999;
117*5e7646d2SAndroid Build Coastguard Worker  padding-top: 10pt;
118*5e7646d2SAndroid Build Coastguard Worker  padding-left: 5pt;
119*5e7646d2SAndroid Build Coastguard Worker  text-align: left;
120*5e7646d2SAndroid Build Coastguard Worker}
121*5e7646d2SAndroid Build Coastguard Worker
122*5e7646d2SAndroid Build Coastguard WorkerDIV.table TABLE {
123*5e7646d2SAndroid Build Coastguard Worker  border: solid thin #999999;
124*5e7646d2SAndroid Build Coastguard Worker  border-collapse: collapse;
125*5e7646d2SAndroid Build Coastguard Worker  border-spacing: 0;
126*5e7646d2SAndroid Build Coastguard Worker  margin-left: auto;
127*5e7646d2SAndroid Build Coastguard Worker  margin-right: auto;
128*5e7646d2SAndroid Build Coastguard Worker}
129*5e7646d2SAndroid Build Coastguard Worker
130*5e7646d2SAndroid Build Coastguard WorkerDIV.table CAPTION {
131*5e7646d2SAndroid Build Coastguard Worker  caption-side: top;
132*5e7646d2SAndroid Build Coastguard Worker  font-size: 120%;
133*5e7646d2SAndroid Build Coastguard Worker  font-style: italic;
134*5e7646d2SAndroid Build Coastguard Worker  font-weight: bold;
135*5e7646d2SAndroid Build Coastguard Worker  margin-left: auto;
136*5e7646d2SAndroid Build Coastguard Worker  margin-right: auto;
137*5e7646d2SAndroid Build Coastguard Worker}
138*5e7646d2SAndroid Build Coastguard Worker
139*5e7646d2SAndroid Build Coastguard WorkerDIV.table TABLE TD {
140*5e7646d2SAndroid Build Coastguard Worker  border: solid thin #cccccc;
141*5e7646d2SAndroid Build Coastguard Worker  padding: 5pt 10pt 0;
142*5e7646d2SAndroid Build Coastguard Worker}
143*5e7646d2SAndroid Build Coastguard Worker
144*5e7646d2SAndroid Build Coastguard WorkerDIV.table TABLE TH {
145*5e7646d2SAndroid Build Coastguard Worker  background: #cccccc;
146*5e7646d2SAndroid Build Coastguard Worker  border: none;
147*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid thin #999999;
148*5e7646d2SAndroid Build Coastguard Worker}
149*5e7646d2SAndroid Build Coastguard Worker
150*5e7646d2SAndroid Build Coastguard WorkerDIV.figure TABLE {
151*5e7646d2SAndroid Build Coastguard Worker  margin-left: auto;
152*5e7646d2SAndroid Build Coastguard Worker  margin-right: auto;
153*5e7646d2SAndroid Build Coastguard Worker}
154*5e7646d2SAndroid Build Coastguard Worker
155*5e7646d2SAndroid Build Coastguard WorkerDIV.figure CAPTION {
156*5e7646d2SAndroid Build Coastguard Worker  caption-side: bottom;
157*5e7646d2SAndroid Build Coastguard Worker  font-size: 120%;
158*5e7646d2SAndroid Build Coastguard Worker  font-style: italic;
159*5e7646d2SAndroid Build Coastguard Worker  font-weight: bold;
160*5e7646d2SAndroid Build Coastguard Worker  margin-left: auto;
161*5e7646d2SAndroid Build Coastguard Worker  margin-right: auto;
162*5e7646d2SAndroid Build Coastguard Worker}
163*5e7646d2SAndroid Build Coastguard Worker
164*5e7646d2SAndroid Build Coastguard WorkerTH.label {
165*5e7646d2SAndroid Build Coastguard Worker  text-align: right;
166*5e7646d2SAndroid Build Coastguard Worker  vertical-align: top;
167*5e7646d2SAndroid Build Coastguard Worker}
168*5e7646d2SAndroid Build Coastguard Worker
169*5e7646d2SAndroid Build Coastguard WorkerTH.sublabel {
170*5e7646d2SAndroid Build Coastguard Worker  text-align: right;
171*5e7646d2SAndroid Build Coastguard Worker  font-weight: normal;
172*5e7646d2SAndroid Build Coastguard Worker}
173*5e7646d2SAndroid Build Coastguard Worker
174*5e7646d2SAndroid Build Coastguard WorkerHR {
175*5e7646d2SAndroid Build Coastguard Worker  border: solid thin;
176*5e7646d2SAndroid Build Coastguard Worker}
177*5e7646d2SAndroid Build Coastguard Worker
178*5e7646d2SAndroid Build Coastguard WorkerSPAN.info {
179*5e7646d2SAndroid Build Coastguard Worker  background: black;
180*5e7646d2SAndroid Build Coastguard Worker  border: thin solid black;
181*5e7646d2SAndroid Build Coastguard Worker  color: white;
182*5e7646d2SAndroid Build Coastguard Worker  font-size: 80%;
183*5e7646d2SAndroid Build Coastguard Worker  font-style: italic;
184*5e7646d2SAndroid Build Coastguard Worker  font-weight: bold;
185*5e7646d2SAndroid Build Coastguard Worker  white-space: nowrap;
186*5e7646d2SAndroid Build Coastguard Worker}
187*5e7646d2SAndroid Build Coastguard Worker
188*5e7646d2SAndroid Build Coastguard WorkerH2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
189*5e7646d2SAndroid Build Coastguard Worker  float: right;
190*5e7646d2SAndroid Build Coastguard Worker  font-size: 100%;
191*5e7646d2SAndroid Build Coastguard Worker}
192*5e7646d2SAndroid Build Coastguard Worker
193*5e7646d2SAndroid Build Coastguard WorkerH1.title {
194*5e7646d2SAndroid Build Coastguard Worker}
195*5e7646d2SAndroid Build Coastguard Worker
196*5e7646d2SAndroid Build Coastguard WorkerH2.title, H3.title {
197*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2pt #000000;
198*5e7646d2SAndroid Build Coastguard Worker}
199*5e7646d2SAndroid Build Coastguard Worker
200*5e7646d2SAndroid Build Coastguard WorkerDIV.indent, TABLE.indent {
201*5e7646d2SAndroid Build Coastguard Worker  margin-top: 2em;
202*5e7646d2SAndroid Build Coastguard Worker  margin-left: auto;
203*5e7646d2SAndroid Build Coastguard Worker  margin-right: auto;
204*5e7646d2SAndroid Build Coastguard Worker  width: 90%;
205*5e7646d2SAndroid Build Coastguard Worker}
206*5e7646d2SAndroid Build Coastguard Worker
207*5e7646d2SAndroid Build Coastguard WorkerTABLE.indent {
208*5e7646d2SAndroid Build Coastguard Worker  border-collapse: collapse;
209*5e7646d2SAndroid Build Coastguard Worker}
210*5e7646d2SAndroid Build Coastguard Worker
211*5e7646d2SAndroid Build Coastguard WorkerTABLE.indent TD, TABLE.indent TH {
212*5e7646d2SAndroid Build Coastguard Worker  padding: 0;
213*5e7646d2SAndroid Build Coastguard Worker}
214*5e7646d2SAndroid Build Coastguard Worker
215*5e7646d2SAndroid Build Coastguard WorkerTABLE.list {
216*5e7646d2SAndroid Build Coastguard Worker  border-collapse: collapse;
217*5e7646d2SAndroid Build Coastguard Worker  margin-left: auto;
218*5e7646d2SAndroid Build Coastguard Worker  margin-right: auto;
219*5e7646d2SAndroid Build Coastguard Worker  width: 90%;
220*5e7646d2SAndroid Build Coastguard Worker}
221*5e7646d2SAndroid Build Coastguard Worker
222*5e7646d2SAndroid Build Coastguard WorkerTABLE.list TH {
223*5e7646d2SAndroid Build Coastguard Worker  background: white;
224*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid thin #cccccc;
225*5e7646d2SAndroid Build Coastguard Worker  color: #444444;
226*5e7646d2SAndroid Build Coastguard Worker  padding-top: 10pt;
227*5e7646d2SAndroid Build Coastguard Worker  padding-left: 5pt;
228*5e7646d2SAndroid Build Coastguard Worker  text-align: left;
229*5e7646d2SAndroid Build Coastguard Worker  vertical-align: bottom;
230*5e7646d2SAndroid Build Coastguard Worker  white-space: nowrap;
231*5e7646d2SAndroid Build Coastguard Worker}
232*5e7646d2SAndroid Build Coastguard Worker
233*5e7646d2SAndroid Build Coastguard WorkerTABLE.list TH A {
234*5e7646d2SAndroid Build Coastguard Worker  color: #4444cc;
235*5e7646d2SAndroid Build Coastguard Worker}
236*5e7646d2SAndroid Build Coastguard Worker
237*5e7646d2SAndroid Build Coastguard WorkerTABLE.list TD {
238*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid thin #eeeeee;
239*5e7646d2SAndroid Build Coastguard Worker  padding-top: 5pt;
240*5e7646d2SAndroid Build Coastguard Worker  padding-left: 5pt;
241*5e7646d2SAndroid Build Coastguard Worker}
242*5e7646d2SAndroid Build Coastguard Worker
243*5e7646d2SAndroid Build Coastguard WorkerTABLE.list TR:nth-child(even) {
244*5e7646d2SAndroid Build Coastguard Worker  background: #f8f8f8;
245*5e7646d2SAndroid Build Coastguard Worker}
246*5e7646d2SAndroid Build Coastguard Worker
247*5e7646d2SAndroid Build Coastguard WorkerTABLE.list TR:nth-child(odd) {
248*5e7646d2SAndroid Build Coastguard Worker  background: #f4f4f4;
249*5e7646d2SAndroid Build Coastguard Worker}
250*5e7646d2SAndroid Build Coastguard Worker
251*5e7646d2SAndroid Build Coastguard WorkerDT {
252*5e7646d2SAndroid Build Coastguard Worker  margin-left: 36pt;
253*5e7646d2SAndroid Build Coastguard Worker  margin-top: 12pt;
254*5e7646d2SAndroid Build Coastguard Worker}
255*5e7646d2SAndroid Build Coastguard Worker
256*5e7646d2SAndroid Build Coastguard WorkerDD {
257*5e7646d2SAndroid Build Coastguard Worker  margin-left: 54pt;
258*5e7646d2SAndroid Build Coastguard Worker}
259*5e7646d2SAndroid Build Coastguard Worker
260*5e7646d2SAndroid Build Coastguard WorkerDL.category DT {
261*5e7646d2SAndroid Build Coastguard Worker  font-weight: bold;
262*5e7646d2SAndroid Build Coastguard Worker}
263*5e7646d2SAndroid Build Coastguard Worker
264*5e7646d2SAndroid Build Coastguard WorkerP.summary {
265*5e7646d2SAndroid Build Coastguard Worker  margin-left: 36pt;
266*5e7646d2SAndroid Build Coastguard Worker  font-family: monaco, courier, monospace;
267*5e7646d2SAndroid Build Coastguard Worker}
268*5e7646d2SAndroid Build Coastguard Worker
269*5e7646d2SAndroid Build Coastguard WorkerDIV.summary TABLE {
270*5e7646d2SAndroid Build Coastguard Worker  border: solid thin #999999;
271*5e7646d2SAndroid Build Coastguard Worker  border-collapse: collapse;
272*5e7646d2SAndroid Build Coastguard Worker  border-spacing: 0;
273*5e7646d2SAndroid Build Coastguard Worker  margin: 10px;
274*5e7646d2SAndroid Build Coastguard Worker}
275*5e7646d2SAndroid Build Coastguard Worker
276*5e7646d2SAndroid Build Coastguard WorkerDIV.summary TABLE TD, DIV.summary TABLE TH {
277*5e7646d2SAndroid Build Coastguard Worker  border: solid thin #999999;
278*5e7646d2SAndroid Build Coastguard Worker  padding: 5px;
279*5e7646d2SAndroid Build Coastguard Worker  text-align: left;
280*5e7646d2SAndroid Build Coastguard Worker  vertical-align: top;
281*5e7646d2SAndroid Build Coastguard Worker}
282*5e7646d2SAndroid Build Coastguard Worker
283*5e7646d2SAndroid Build Coastguard WorkerDIV.summary TABLE THEAD TH {
284*5e7646d2SAndroid Build Coastguard Worker  background: #eeeeee;
285*5e7646d2SAndroid Build Coastguard Worker}
286*5e7646d2SAndroid Build Coastguard Worker
287*5e7646d2SAndroid Build Coastguard Worker/* API documentation styles... */
288*5e7646d2SAndroid Build Coastguard Workerdiv.body h1 {
289*5e7646d2SAndroid Build Coastguard Worker  font-size: 250%;
290*5e7646d2SAndroid Build Coastguard Worker  font-weight: bold;
291*5e7646d2SAndroid Build Coastguard Worker  margin: 0;
292*5e7646d2SAndroid Build Coastguard Worker}
293*5e7646d2SAndroid Build Coastguard Workerdiv.body h2 {
294*5e7646d2SAndroid Build Coastguard Worker  font-size: 250%;
295*5e7646d2SAndroid Build Coastguard Worker  margin-top: 1.5em;
296*5e7646d2SAndroid Build Coastguard Worker}
297*5e7646d2SAndroid Build Coastguard Workerdiv.body h3 {
298*5e7646d2SAndroid Build Coastguard Worker  font-size: 150%;
299*5e7646d2SAndroid Build Coastguard Worker  margin-bottom: 0.5em;
300*5e7646d2SAndroid Build Coastguard Worker  margin-top: 1.5em;
301*5e7646d2SAndroid Build Coastguard Worker}
302*5e7646d2SAndroid Build Coastguard Workerdiv.body h4 {
303*5e7646d2SAndroid Build Coastguard Worker  font-size: 110%;
304*5e7646d2SAndroid Build Coastguard Worker  margin-bottom: 0.5em;
305*5e7646d2SAndroid Build Coastguard Worker  margin-top: 1.5em;
306*5e7646d2SAndroid Build Coastguard Worker}
307*5e7646d2SAndroid Build Coastguard Workerdiv.body h5 {
308*5e7646d2SAndroid Build Coastguard Worker  font-size: 100%;
309*5e7646d2SAndroid Build Coastguard Worker  margin-bottom: 0.5em;
310*5e7646d2SAndroid Build Coastguard Worker  margin-top: 1.5em;
311*5e7646d2SAndroid Build Coastguard Worker}
312*5e7646d2SAndroid Build Coastguard Workerdiv.contents {
313*5e7646d2SAndroid Build Coastguard Worker  background: #e8e8e8;
314*5e7646d2SAndroid Build Coastguard Worker  border: solid thin black;
315*5e7646d2SAndroid Build Coastguard Worker  padding: 10px;
316*5e7646d2SAndroid Build Coastguard Worker}
317*5e7646d2SAndroid Build Coastguard Workerdiv.contents h1 {
318*5e7646d2SAndroid Build Coastguard Worker  font-size: 110%;
319*5e7646d2SAndroid Build Coastguard Worker}
320*5e7646d2SAndroid Build Coastguard Workerdiv.contents h2 {
321*5e7646d2SAndroid Build Coastguard Worker  font-size: 100%;
322*5e7646d2SAndroid Build Coastguard Worker}
323*5e7646d2SAndroid Build Coastguard Workerdiv.contents ul.contents {
324*5e7646d2SAndroid Build Coastguard Worker  font-size: 80%;
325*5e7646d2SAndroid Build Coastguard Worker}
326*5e7646d2SAndroid Build Coastguard Worker.class {
327*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2px gray;
328*5e7646d2SAndroid Build Coastguard Worker}
329*5e7646d2SAndroid Build Coastguard Worker.constants {
330*5e7646d2SAndroid Build Coastguard Worker}
331*5e7646d2SAndroid Build Coastguard Worker.description {
332*5e7646d2SAndroid Build Coastguard Worker  margin-top: 0.5em;
333*5e7646d2SAndroid Build Coastguard Worker}
334*5e7646d2SAndroid Build Coastguard Worker.discussion {
335*5e7646d2SAndroid Build Coastguard Worker}
336*5e7646d2SAndroid Build Coastguard Worker.enumeration {
337*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2px gray;
338*5e7646d2SAndroid Build Coastguard Worker}
339*5e7646d2SAndroid Build Coastguard Worker.function {
340*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2px gray;
341*5e7646d2SAndroid Build Coastguard Worker  margin-bottom: 0;
342*5e7646d2SAndroid Build Coastguard Worker}
343*5e7646d2SAndroid Build Coastguard Worker.members {
344*5e7646d2SAndroid Build Coastguard Worker}
345*5e7646d2SAndroid Build Coastguard Worker.method {
346*5e7646d2SAndroid Build Coastguard Worker}
347*5e7646d2SAndroid Build Coastguard Worker.parameters {
348*5e7646d2SAndroid Build Coastguard Worker}
349*5e7646d2SAndroid Build Coastguard Worker.returnvalue {
350*5e7646d2SAndroid Build Coastguard Worker}
351*5e7646d2SAndroid Build Coastguard Worker.struct {
352*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2px gray;
353*5e7646d2SAndroid Build Coastguard Worker}
354*5e7646d2SAndroid Build Coastguard Worker.typedef {
355*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2px gray;
356*5e7646d2SAndroid Build Coastguard Worker}
357*5e7646d2SAndroid Build Coastguard Worker.union {
358*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2px gray;
359*5e7646d2SAndroid Build Coastguard Worker}
360*5e7646d2SAndroid Build Coastguard Worker.variable {
361*5e7646d2SAndroid Build Coastguard Worker}
362*5e7646d2SAndroid Build Coastguard Workerh1, h2, h3, h4, h5, h6 {
363*5e7646d2SAndroid Build Coastguard Worker  page-break-inside: avoid;
364*5e7646d2SAndroid Build Coastguard Worker}
365*5e7646d2SAndroid Build Coastguard Workerblockquote {
366*5e7646d2SAndroid Build Coastguard Worker  border: solid thin gray;
367*5e7646d2SAndroid Build Coastguard Worker  box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
368*5e7646d2SAndroid Build Coastguard Worker  padding: 10px 10px 0px;
369*5e7646d2SAndroid Build Coastguard Worker  page-break-inside: avoid;
370*5e7646d2SAndroid Build Coastguard Worker}
371*5e7646d2SAndroid Build Coastguard Workerp code, li code, p.code, pre, ul.code li {
372*5e7646d2SAndroid Build Coastguard Worker  background: rgba(127,127,127,0.1);
373*5e7646d2SAndroid Build Coastguard Worker  border: thin dotted gray;
374*5e7646d2SAndroid Build Coastguard Worker  font-family: monospace;
375*5e7646d2SAndroid Build Coastguard Worker  hyphens: manual;
376*5e7646d2SAndroid Build Coastguard Worker  -webkit-hyphens: manual;
377*5e7646d2SAndroid Build Coastguard Worker  page-break-inside: avoid;
378*5e7646d2SAndroid Build Coastguard Worker}
379*5e7646d2SAndroid Build Coastguard Workerp.code, pre, ul.code li {
380*5e7646d2SAndroid Build Coastguard Worker  padding: 10px;
381*5e7646d2SAndroid Build Coastguard Worker}
382*5e7646d2SAndroid Build Coastguard Workerp code, li code {
383*5e7646d2SAndroid Build Coastguard Worker  padding: 2px 5px;
384*5e7646d2SAndroid Build Coastguard Worker}
385*5e7646d2SAndroid Build Coastguard Workera:link, a:visited {
386*5e7646d2SAndroid Build Coastguard Worker  text-decoration: none;
387*5e7646d2SAndroid Build Coastguard Worker}
388*5e7646d2SAndroid Build Coastguard Workerspan.info {
389*5e7646d2SAndroid Build Coastguard Worker  background: black;
390*5e7646d2SAndroid Build Coastguard Worker  border: solid thin black;
391*5e7646d2SAndroid Build Coastguard Worker  color: white;
392*5e7646d2SAndroid Build Coastguard Worker  font-size: 80%;
393*5e7646d2SAndroid Build Coastguard Worker  font-style: italic;
394*5e7646d2SAndroid Build Coastguard Worker  font-weight: bold;
395*5e7646d2SAndroid Build Coastguard Worker  white-space: nowrap;
396*5e7646d2SAndroid Build Coastguard Worker}
397*5e7646d2SAndroid Build Coastguard Workerh2 span.info, h3 span.info, h4 span.info {
398*5e7646d2SAndroid Build Coastguard Worker  border-radius: 10px;
399*5e7646d2SAndroid Build Coastguard Worker  float: right;
400*5e7646d2SAndroid Build Coastguard Worker  font-size: 80%;
401*5e7646d2SAndroid Build Coastguard Worker  padding: 3px 6px;
402*5e7646d2SAndroid Build Coastguard Worker}
403*5e7646d2SAndroid Build Coastguard Workerh2.title span.info, h3.title span.info, h4.title span.info {
404*5e7646d2SAndroid Build Coastguard Worker  border-bottom-left-radius: 0px;
405*5e7646d2SAndroid Build Coastguard Worker  border-bottom-right-radius: 0px;
406*5e7646d2SAndroid Build Coastguard Worker}
407*5e7646d2SAndroid Build Coastguard Workerh2.title span.info {
408*5e7646d2SAndroid Build Coastguard Worker  padding: 4px 6px;
409*5e7646d2SAndroid Build Coastguard Worker}
410*5e7646d2SAndroid Build Coastguard Workerul.code, ul.contents, ul.subcontents {
411*5e7646d2SAndroid Build Coastguard Worker  list-style-type: none;
412*5e7646d2SAndroid Build Coastguard Worker  margin: 0;
413*5e7646d2SAndroid Build Coastguard Worker  padding-left: 0;
414*5e7646d2SAndroid Build Coastguard Worker}
415*5e7646d2SAndroid Build Coastguard Workerul.code li {
416*5e7646d2SAndroid Build Coastguard Worker  margin: 0;
417*5e7646d2SAndroid Build Coastguard Worker}
418*5e7646d2SAndroid Build Coastguard Workerul.contents > li {
419*5e7646d2SAndroid Build Coastguard Worker  margin-top: 1em;
420*5e7646d2SAndroid Build Coastguard Worker}
421*5e7646d2SAndroid Build Coastguard Workerul.contents li ul.code, ul.contents li ul.subcontents {
422*5e7646d2SAndroid Build Coastguard Worker  padding-left: 2em;
423*5e7646d2SAndroid Build Coastguard Worker}
424*5e7646d2SAndroid Build Coastguard Workertable.list {
425*5e7646d2SAndroid Build Coastguard Worker  border-collapse: collapse;
426*5e7646d2SAndroid Build Coastguard Worker  width: 100%;
427*5e7646d2SAndroid Build Coastguard Worker}
428*5e7646d2SAndroid Build Coastguard Workertable.list tr:nth-child(even) {
429*5e7646d2SAndroid Build Coastguard Worker  background: rgba(127,127,127,0.1);]n}
430*5e7646d2SAndroid Build Coastguard Workertable.list th {
431*5e7646d2SAndroid Build Coastguard Worker  border-right: 2px solid gray;
432*5e7646d2SAndroid Build Coastguard Worker  font-family: monospace;
433*5e7646d2SAndroid Build Coastguard Worker  padding: 5px 10px 5px 2px;
434*5e7646d2SAndroid Build Coastguard Worker  text-align: right;
435*5e7646d2SAndroid Build Coastguard Worker  vertical-align: top;
436*5e7646d2SAndroid Build Coastguard Worker}
437*5e7646d2SAndroid Build Coastguard Workertable.list td {
438*5e7646d2SAndroid Build Coastguard Worker  padding: 5px 2px 5px 10px;
439*5e7646d2SAndroid Build Coastguard Worker  text-align: left;
440*5e7646d2SAndroid Build Coastguard Worker  vertical-align: top;
441*5e7646d2SAndroid Build Coastguard Worker}
442*5e7646d2SAndroid Build Coastguard Workerh1.title {
443*5e7646d2SAndroid Build Coastguard Worker}
444*5e7646d2SAndroid Build Coastguard Workerh2.title {
445*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2px black;
446*5e7646d2SAndroid Build Coastguard Worker}
447*5e7646d2SAndroid Build Coastguard Workerh3.title {
448*5e7646d2SAndroid Build Coastguard Worker  border-bottom: solid 2px black;
449*5e7646d2SAndroid Build Coastguard Worker}
450*5e7646d2SAndroid Build Coastguard Worker--></style>
451*5e7646d2SAndroid Build Coastguard Worker  </head>
452*5e7646d2SAndroid Build Coastguard Worker  <body>
453*5e7646d2SAndroid Build Coastguard Worker<!--
454*5e7646d2SAndroid Build Coastguard Worker  PPD extension documentation for CUPS.
455*5e7646d2SAndroid Build Coastguard Worker
456*5e7646d2SAndroid Build Coastguard Worker  Copyright © 2007-2011 by Apple Inc.
457*5e7646d2SAndroid Build Coastguard Worker  Copyright © 1997-2007 by Easy Software Products.
458*5e7646d2SAndroid Build Coastguard Worker
459*5e7646d2SAndroid Build Coastguard Worker  Licensed under Apache License v2.0.  See the file "LICENSE" for more
460*5e7646d2SAndroid Build Coastguard Worker  information.
461*5e7646d2SAndroid Build Coastguard Worker-->
462*5e7646d2SAndroid Build Coastguard Worker
463*5e7646d2SAndroid Build Coastguard Worker<H1 CLASS="title">CUPS PPD Extensions</H1>
464*5e7646d2SAndroid Build Coastguard Worker
465*5e7646d2SAndroid Build Coastguard Worker<p>This specification describes the attributes and extensions that CUPS adds to <a href="http://partners.adobe.com/public/developer/en/ps/5003.PPD_Spec_v4.3.pdf" target="_blank">Adobe TechNote #5003: PostScript Printer Description File Format Specification Version 4.3</a>. PostScript Printer Description ("PPD") files describe the capabilities of each printer and are used by CUPS to support printer-specific features and intelligent filtering.</p>
466*5e7646d2SAndroid Build Coastguard Worker
467*5e7646d2SAndroid Build Coastguard Worker<div class='summary'><table summary='General Information'>
468*5e7646d2SAndroid Build Coastguard Worker<tbody>
469*5e7646d2SAndroid Build Coastguard Worker<tr>
470*5e7646d2SAndroid Build Coastguard Worker	<th>See Also</th>
471*5e7646d2SAndroid Build Coastguard Worker	<td>Programming: <a href='postscript-driver.html'>Developing PostScript Printer Drivers</a><br>
472*5e7646d2SAndroid Build Coastguard Worker	Programming: <a href='raster-driver.html'>Developing Raster Printer Drivers</a><br>
473*5e7646d2SAndroid Build Coastguard Worker	Programming: <a href='api-filter.html'>Filter and Backend Programming</a><br>
474*5e7646d2SAndroid Build Coastguard Worker	Programming: <a href='ppd-compiler.html'>Introduction to the PPD Compiler</a><br>
475*5e7646d2SAndroid Build Coastguard Worker	Programming: <a href='api-raster.html'>Raster API</a><br>
476*5e7646d2SAndroid Build Coastguard Worker	References: <a href='ref-ppdcfile.html'>PPD Compiler Driver Information File Reference</a></td>
477*5e7646d2SAndroid Build Coastguard Worker</tr>
478*5e7646d2SAndroid Build Coastguard Worker</tbody>
479*5e7646d2SAndroid Build Coastguard Worker</table></div>
480*5e7646d2SAndroid Build Coastguard Worker    <div class="contents">
481*5e7646d2SAndroid Build Coastguard Worker      <h2 class="title">Contents</h2>
482*5e7646d2SAndroid Build Coastguard Worker      <ul class="contents">
483*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#SYNTAX">PPD File Syntax</a></li>
484*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#AUTOCONFIG">Auto-Configuration</a><ul class="subcontents">
485*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APAutoSetupTool">APAutoSetupTool</a></li>
486*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#QUERYKEYWORD">?MainKeyword</a></li>
487*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#OID">OIDMainKeyword</a></li>
488*5e7646d2SAndroid Build Coastguard Worker        </ul></li>
489*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#PROFILES">Color Profiles</a><ul class="subcontents">
490*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsColorProfile">cupsColorProfile</a></li>
491*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsICCProfile">cupsICCProfile</a></li>
492*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APCustom">Custom Color Matching Support</a></li>
493*5e7646d2SAndroid Build Coastguard Worker        </ul></li>
494*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#CONSTRAINTS">Constraints</a><ul class="subcontents">
495*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsUIConstraints">cupsUIConstraints</a></li>
496*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsUIResolver">cupsUIResolver</a></li>
497*5e7646d2SAndroid Build Coastguard Worker        </ul></li>
498*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#I18N">Globalized PPD Support</a></li>
499*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#OPTIONS">&lt;span class=&quot;info&quot;&gt;CUPS 1.3/macOS 10.6&lt;/span&gt;Custom Options</a></li>
500*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#RASTERPS">Writing PostScript Option Commands for Raster Drivers</a></li>
501*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#MEDIA">Media Keywords</a><ul class="subcontents">
502*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsMediaQualifier2">cupsMediaQualifier2</a></li>
503*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsMediaQualifier3">cupsMediaQualifier3</a></li>
504*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsMinSize">cupsMinSize</a></li>
505*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsMaxSize">cupsMaxSize</a></li>
506*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsPageSizeCategory">cupsPageSizeCategory</a></li>
507*5e7646d2SAndroid Build Coastguard Worker        </ul></li>
508*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#ATTRIBUTES">General Attributes</a><ul class="subcontents">
509*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsBackSide">cupsBackSide</a></li>
510*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsCommands">cupsCommands</a></li>
511*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsEvenDuplex">cupsEvenDuplex</a></li>
512*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsFax">cupsFax</a></li>
513*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsFilter">cupsFilter</a></li>
514*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsFilter2">cupsFilter2</a></li>
515*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsFinishingTemplate">cupsFinishingTemplate</a></li>
516*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsFlipDuplex">cupsFlipDuplex</a></li>
517*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsIPPFinishings">cupsIPPFinishings</a></li>
518*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsIPPReason">cupsIPPReason</a></li>
519*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsIPPSupplies">cupsIPPSupplies</a></li>
520*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsJobAccountId">cupsJobAccountId</a></li>
521*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsJobAccountingUserId">cupsJobAccountingUserId</a></li>
522*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsJobPassword">cupsJobPassword</a></li>
523*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsLanguages">cupsLanguages</a></li>
524*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsMandatory">cupsMandatory</a></li>
525*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsManualCopies">cupsManualCopies</a></li>
526*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsMarkerName">cupsMarkerName</a></li>
527*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsMarkerNotice">cupsMarkerNotice</a></li>
528*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsMaxCopies">cupsMaxCopies</a></li>
529*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsModelNumber">cupsModelNumber</a></li>
530*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsPJLCharset">cupsPJLCharset</a></li>
531*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsPJLDisplay">cupsPJLDisplay</a></li>
532*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsPortMonitor">cupsPortMonitor</a></li>
533*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsPreFilter">cupsPreFilter</a></li>
534*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsPrintQuality">cupsPrintQuality</a></li>
535*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsSingleFile">cupsSingleFile</a></li>
536*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsSNMPSupplies">cupsSNMPSupplies</a></li>
537*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#cupsVersion">cupsVersion</a></li>
538*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#JCLToPDFInterpreter">JCLToPDFInterpreter</a></li>
539*5e7646d2SAndroid Build Coastguard Worker        </ul></li>
540*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#MACOSX">macOS Attributes</a><ul class="subcontents">
541*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APDialogExtension">APDialogExtension</a></li>
542*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APDuplexRequiresFlippedMargin">APDuplexRequiresFlippedMargin</a></li>
543*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APHelpBook">APHelpBook</a></li>
544*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APICADriver">APICADriver</a></li>
545*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APPrinterIconPath">APPrinterIconPath</a></li>
546*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APPrinterLowInkTool">APPrinterLowInkTool</a></li>
547*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APPrinterPreset">APPrinterPreset</a></li>
548*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APPrinterUtilityPath">APPrinterUtilityPath</a></li>
549*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APScannerOnly">APScannerOnly</a></li>
550*5e7646d2SAndroid Build Coastguard Worker          <li><a href="#APScanAppBundleID">APScanAppBundleID</a></li>
551*5e7646d2SAndroid Build Coastguard Worker        </ul></li>
552*5e7646d2SAndroid Build Coastguard Worker        <li><a href="#HISTORY">Change History</a></li>
553*5e7646d2SAndroid Build Coastguard Worker      </ul>
554*5e7646d2SAndroid Build Coastguard Worker    </div>
555*5e7646d2SAndroid Build Coastguard Worker    <div class="body">
556*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='SYNTAX'>PPD File Syntax</a></h2>
557*5e7646d2SAndroid Build Coastguard Worker
558*5e7646d2SAndroid Build Coastguard Worker<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>
559*5e7646d2SAndroid Build Coastguard Worker
560*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
561*5e7646d2SAndroid Build Coastguard WorkerPPD-FILE = HEADER +(DATA / COMMENT / LINE-END)
562*5e7646d2SAndroid Build Coastguard Worker
563*5e7646d2SAndroid Build Coastguard WorkerHEADER   = "*PPD-Adobe:" *WSP DQUOTE VERSION DQUOTE LINE-END
564*5e7646d2SAndroid Build Coastguard Worker
565*5e7646d2SAndroid Build Coastguard WorkerVERSION  = "4.0" / "4.1" / "4.2" / "4.3"
566*5e7646d2SAndroid Build Coastguard Worker
567*5e7646d2SAndroid Build Coastguard WorkerCOMMENT  = "*%" *TCHAR LINE-END
568*5e7646d2SAndroid Build Coastguard Worker
569*5e7646d2SAndroid Build Coastguard WorkerDATA     = "*" 1*KCHAR [ WSP 1*KCHAR [ "/" 1*TCHAR ] ] ":"
570*5e7646d2SAndroid Build Coastguard Worker           1*(*WSP VALUE) LINE-END
571*5e7646d2SAndroid Build Coastguard Worker
572*5e7646d2SAndroid Build Coastguard WorkerVALUE    = 1*TCHAR / DQUOTE 1*SCHAR DQUOTE
573*5e7646d2SAndroid Build Coastguard Worker
574*5e7646d2SAndroid Build Coastguard WorkerKCHAR    = ALPHA / DIGIT / "_" / "." / "-"
575*5e7646d2SAndroid Build Coastguard Worker
576*5e7646d2SAndroid Build Coastguard WorkerSCHAR    = LINE-END / WSP / %x21.23-7E.A0-FF
577*5e7646d2SAndroid Build Coastguard Worker
578*5e7646d2SAndroid Build Coastguard WorkerTCHAR    = %x20-7E.A0-FF
579*5e7646d2SAndroid Build Coastguard Worker
580*5e7646d2SAndroid Build Coastguard WorkerLINE-END = CR / LF / CR LF
581*5e7646d2SAndroid Build Coastguard Worker</pre>
582*5e7646d2SAndroid Build Coastguard Worker
583*5e7646d2SAndroid Build Coastguard Worker
584*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='AUTOCONFIG'>Auto-Configuration</a></h2>
585*5e7646d2SAndroid Build Coastguard Worker
586*5e7646d2SAndroid Build Coastguard Worker<p>CUPS supports several methods of auto-configuration via PPD keywords.</p>
587*5e7646d2SAndroid Build Coastguard Worker
588*5e7646d2SAndroid Build Coastguard Worker
589*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.5</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
590*5e7646d2SAndroid Build Coastguard Worker
591*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APAutoSetupTool: "/LibraryPrinters/vendor/filename"</p>
592*5e7646d2SAndroid Build Coastguard Worker
593*5e7646d2SAndroid Build Coastguard Worker<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>
594*5e7646d2SAndroid Build Coastguard Worker
595*5e7646d2SAndroid Build Coastguard Worker<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>
596*5e7646d2SAndroid Build Coastguard Worker
597*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
598*5e7646d2SAndroid Build Coastguard Worker
599*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
600*5e7646d2SAndroid Build Coastguard Worker*% Use our setup tool when adding a printer
601*5e7646d2SAndroid Build Coastguard Worker*APAutoSetupTool: "/Library/Printers/vendor/Tools/autosetuptool"
602*5e7646d2SAndroid Build Coastguard Worker</pre>
603*5e7646d2SAndroid Build Coastguard Worker
604*5e7646d2SAndroid Build Coastguard Worker
605*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.2/CUPS 1.4</span><a name='QUERYKEYWORD'>?MainKeyword</a></h3>
606*5e7646d2SAndroid Build Coastguard Worker
607*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*?<i>MainKeyword</i>: "<br>
608*5e7646d2SAndroid Build Coastguard Worker  PostScript query code that writes a message using the = operator...<br>
609*5e7646d2SAndroid Build Coastguard Worker"<br>
610*5e7646d2SAndroid Build Coastguard Worker*End</p>
611*5e7646d2SAndroid Build Coastguard Worker
612*5e7646d2SAndroid Build Coastguard Worker<p>The <tt>?<i>MainKeyword</i></tt> keyword defines PostScript code that determines the currently selected/enabled option keyword (choice) for the main keyword (option). It is typically used when communicating with USB, serial, Appletalk, and AppSocket (port 9100) printers.</p>
613*5e7646d2SAndroid Build Coastguard Worker
614*5e7646d2SAndroid Build Coastguard Worker<p>The PostScript code typically sends its response back using the <tt>=</tt> operator.</p>
615*5e7646d2SAndroid Build Coastguard Worker
616*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
617*5e7646d2SAndroid Build Coastguard Worker
618*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
619*5e7646d2SAndroid Build Coastguard Worker*OpenUI OptionDuplex/Duplexer Installed: Boolean
620*5e7646d2SAndroid Build Coastguard Worker*DuplexOptionDuplex: False
621*5e7646d2SAndroid Build Coastguard Worker*OptionDuplex False/Not Installed: ""
622*5e7646d2SAndroid Build Coastguard Worker*OptionDuplex True/Installed: ""
623*5e7646d2SAndroid Build Coastguard Worker
624*5e7646d2SAndroid Build Coastguard Worker<em>*% Query the printer for the presence of the duplexer option...</em>
625*5e7646d2SAndroid Build Coastguard Worker*?OptionDuplex: "
626*5e7646d2SAndroid Build Coastguard Worker  currentpagedevice /Duplex known
627*5e7646d2SAndroid Build Coastguard Worker  {(True)} {(False)} ifelse
628*5e7646d2SAndroid Build Coastguard Worker  = flush
629*5e7646d2SAndroid Build Coastguard Worker"
630*5e7646d2SAndroid Build Coastguard Worker*End
631*5e7646d2SAndroid Build Coastguard Worker*CloseUI: OptionDuplex
632*5e7646d2SAndroid Build Coastguard Worker</pre>
633*5e7646d2SAndroid Build Coastguard Worker
634*5e7646d2SAndroid Build Coastguard Worker
635*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.4/CUPS 1.5</span><a name='OID'>OIDMainKeyword</a></h3>
636*5e7646d2SAndroid Build Coastguard Worker
637*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*?OID<i>MainKeyword</i>: ".n.n.n..."<br>
638*5e7646d2SAndroid Build Coastguard Worker*OID<i>MainKeyword</i> <i>OptionKeyword1</i>: "value"<br>
639*5e7646d2SAndroid Build Coastguard Worker...<br>
640*5e7646d2SAndroid Build Coastguard Worker*OID<i>MainKeyword</i> <i>OptionKeywordN</i>: "value"</p>
641*5e7646d2SAndroid Build Coastguard Worker
642*5e7646d2SAndroid Build Coastguard Worker<p>The <tt>OID<i>MainKeyword</i></tt> keyword is used to define SNMP OIDs that map to installable options. The first (query) line defines the OID to lookup on the network device. The second and subsequent keywords define a mapping from OID value to option keyword. Since SNMP is an IP-based network protocol, this method is typically only used to configure AppSocket, IPP, and LPD network printers.</p>
643*5e7646d2SAndroid Build Coastguard Worker
644*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
645*5e7646d2SAndroid Build Coastguard Worker
646*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
647*5e7646d2SAndroid Build Coastguard Worker*% Get the installed memory on the printer...
648*5e7646d2SAndroid Build Coastguard Worker*?OIDInstalledMemory: ".1.3.6.1.2.1.25.2.2.0"
649*5e7646d2SAndroid Build Coastguard Worker*OIDInstalledMemory 16MB: "16384 KBytes"
650*5e7646d2SAndroid Build Coastguard Worker*OIDInstalledMemory 32MB: "32768 KBytes"
651*5e7646d2SAndroid Build Coastguard Worker*OIDInstalledMemory 48MB: "49152 KBytes"
652*5e7646d2SAndroid Build Coastguard Worker*OIDInstalledMemory 72MB: "73728 KBytes"
653*5e7646d2SAndroid Build Coastguard Worker</pre>
654*5e7646d2SAndroid Build Coastguard Worker
655*5e7646d2SAndroid Build Coastguard Worker
656*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='PROFILES'>Color Profiles</a></h2>
657*5e7646d2SAndroid Build Coastguard Worker
658*5e7646d2SAndroid Build Coastguard Worker<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>
659*5e7646d2SAndroid Build Coastguard Worker
660*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
661*5e7646d2SAndroid Build Coastguard Worker
662*5e7646d2SAndroid Build Coastguard Worker<p>At this time, none of the CUPS raster filters support ICC profiles. This will be addressed as time and resources permit.</p>
663*5e7646d2SAndroid Build Coastguard Worker
664*5e7646d2SAndroid Build Coastguard Worker</blockquote>
665*5e7646d2SAndroid Build Coastguard Worker
666*5e7646d2SAndroid Build Coastguard Worker
667*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>Deprecated</span><a name='cupsColorProfile'>cupsColorProfile</a></h3>
668*5e7646d2SAndroid Build Coastguard Worker
669*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsColorProfile Resolution/MediaType: "density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22"</p>
670*5e7646d2SAndroid Build Coastguard Worker
671*5e7646d2SAndroid Build Coastguard Worker<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>
672*5e7646d2SAndroid Build Coastguard Worker
673*5e7646d2SAndroid Build Coastguard Worker<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>
674*5e7646d2SAndroid Build Coastguard Worker
675*5e7646d2SAndroid Build Coastguard Worker<p>The <i>density</i> and <i>gamma</i> values define gamma and
676*5e7646d2SAndroid Build Coastguard Workerdensity adjustment function such that:</p>
677*5e7646d2SAndroid Build Coastguard Worker
678*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
679*5e7646d2SAndroid Build Coastguard Workerf(x) = density * x <sup style='font-size: 100%'>gamma</sup>
680*5e7646d2SAndroid Build Coastguard Worker</pre>
681*5e7646d2SAndroid Build Coastguard Worker
682*5e7646d2SAndroid Build Coastguard Worker<p>The <i>m00</i> through <i>m22</i> values define a 3x3 transformation matrix for the CMY color values. The density function is applied <i>after</i> the CMY transformation:</p>
683*5e7646d2SAndroid Build Coastguard Worker
684*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
685*5e7646d2SAndroid Build Coastguard Worker| m00 m01 m02 |
686*5e7646d2SAndroid Build Coastguard Worker| m10 m11 m12 |
687*5e7646d2SAndroid Build Coastguard Worker| m20 m21 m22 |
688*5e7646d2SAndroid Build Coastguard Worker</pre>
689*5e7646d2SAndroid Build Coastguard Worker
690*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
691*5e7646d2SAndroid Build Coastguard Worker
692*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
693*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a profile for printing at 360dpi on all media types</em>
694*5e7646d2SAndroid Build Coastguard Worker*cupsColorProfile 360dpi/-: "1.0 1.5 1.0 0.0 -0.2 -0.4 1.0 0.0 -0.2 0.0 1.0"
695*5e7646d2SAndroid Build Coastguard Worker
696*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a profile for printing at 720dpi on Glossy media</em>
697*5e7646d2SAndroid Build Coastguard Worker*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"
698*5e7646d2SAndroid Build Coastguard Worker
699*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a default profile for printing at all other resolutions and media types</em>
700*5e7646d2SAndroid Build Coastguard Worker*cupsColorProfile -/-: "0.9 2.0 1.0 0.0 -0.2 -0.4 1.0 0.0 -0.2 0.0 1.0"
701*5e7646d2SAndroid Build Coastguard Worker</pre>
702*5e7646d2SAndroid Build Coastguard Worker
703*5e7646d2SAndroid Build Coastguard Worker
704*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.3/CUPS 1.2</span><a name='cupsICCProfile'>cupsICCProfile</a></h3>
705*5e7646d2SAndroid Build Coastguard Worker
706*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsICCProfile ColorModel.MediaType.Resolution/Description: "filename"</p>
707*5e7646d2SAndroid Build Coastguard Worker
708*5e7646d2SAndroid Build Coastguard Worker<p>This keyword specifies an ICC color profile that is used to convert the document colors to the device colorspace. The <tt>ColorModel</tt>, <tt>MediaType</tt>, and <tt>Resolution</tt> option keywords specify a selector for color profiles. If omitted, the color profile will match any option keyword for the corresponding main keyword.</p>
709*5e7646d2SAndroid Build Coastguard Worker
710*5e7646d2SAndroid Build Coastguard Worker<p>The <tt>Description</tt> specifies human-readable text that is associated with the color profile. The <tt>filename</tt> portion specifies the ICC color profile to use; if the filename is not absolute, it is loaded relative to the <var>/usr/share/cups/profiles</var> directory.</p>
711*5e7646d2SAndroid Build Coastguard Worker
712*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
713*5e7646d2SAndroid Build Coastguard Worker
714*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
715*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a profile for CMYK printing at 360dpi on all media types</em>
716*5e7646d2SAndroid Build Coastguard Worker*cupsICCProfile CMYK..360dpi/360dpi CMYK: "/Library/Printers/vendor/Profiles/foo-360-cmyk.icc"
717*5e7646d2SAndroid Build Coastguard Worker
718*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a profile for RGB printing at 720dpi on Glossy media</em>
719*5e7646d2SAndroid Build Coastguard Worker*cupsColorProfile RGB.Glossy.720dpi/720dpi Glossy: "/Library/Printers/vendor/Profiles/foo-720-glossy-rgb.icc"
720*5e7646d2SAndroid Build Coastguard Worker
721*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a default profile for printing at all other resolutions and media types</em>
722*5e7646d2SAndroid Build Coastguard Worker*cupsICCProfile ../Default: "/Library/Printers/vendor/Profiles/foo-default.icc"
723*5e7646d2SAndroid Build Coastguard Worker</pre>
724*5e7646d2SAndroid Build Coastguard Worker
725*5e7646d2SAndroid Build Coastguard Worker<h4 class="title">Customizing the Profile Selection Keywords</h4>
726*5e7646d2SAndroid Build Coastguard Worker
727*5e7646d2SAndroid Build Coastguard Worker<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>
728*5e7646d2SAndroid Build Coastguard Worker
729*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
730*5e7646d2SAndroid Build Coastguard Worker*cupsICCQualifier1: MainKeyword1
731*5e7646d2SAndroid Build Coastguard Worker*cupsICCQualifier2: MainKeyword2
732*5e7646d2SAndroid Build Coastguard Worker*cupsICCQualifier3: MainKeyword3
733*5e7646d2SAndroid Build Coastguard Worker</pre>
734*5e7646d2SAndroid Build Coastguard Worker
735*5e7646d2SAndroid Build Coastguard Worker<p>The default mapping is as follows:</p>
736*5e7646d2SAndroid Build Coastguard Worker
737*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
738*5e7646d2SAndroid Build Coastguard Worker*cupsICCQualifier1: ColorModel
739*5e7646d2SAndroid Build Coastguard Worker*cupsICCQualifier2: MediaType
740*5e7646d2SAndroid Build Coastguard Worker*cupsICCQualifier3: Resolution
741*5e7646d2SAndroid Build Coastguard Worker</pre>
742*5e7646d2SAndroid Build Coastguard Worker
743*5e7646d2SAndroid Build Coastguard Worker
744*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.4</span><a name='APCustom'>Custom Color Matching Support</a></h3>
745*5e7646d2SAndroid Build Coastguard Worker
746*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*<a href='#APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a>: true<br>
747*5e7646d2SAndroid Build Coastguard Worker*<a href='#APCustomColorMatchingName'>APCustomColorMatchingName</a> name/text: ""<br>
748*5e7646d2SAndroid Build Coastguard Worker*<a href='#APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a>: profile<br>
749*5e7646d2SAndroid Build Coastguard Worker*<a href='#APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a>: profile</p>
750*5e7646d2SAndroid Build Coastguard Worker
751*5e7646d2SAndroid Build Coastguard Worker<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>
752*5e7646d2SAndroid Build Coastguard Worker
753*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
754*5e7646d2SAndroid Build Coastguard Worker
755*5e7646d2SAndroid Build Coastguard Worker<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>
756*5e7646d2SAndroid Build Coastguard Worker
757*5e7646d2SAndroid Build Coastguard Worker</blockquote>
758*5e7646d2SAndroid Build Coastguard Worker
759*5e7646d2SAndroid Build Coastguard Worker<h4 class="title"><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingName'>APCustomColorMatchingName</a></h4>
760*5e7646d2SAndroid Build Coastguard Worker
761*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APCustomColorMatchingName name/text: ""</p>
762*5e7646d2SAndroid Build Coastguard Worker
763*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines an alternate name for the color matching provided by a driver in the <var>Color Matching</var> print panel. The default is to use the name "Vendor Matching" or its localized equivalent.</p>
764*5e7646d2SAndroid Build Coastguard Worker
765*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
766*5e7646d2SAndroid Build Coastguard Worker
767*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
768*5e7646d2SAndroid Build Coastguard Worker*% Define the names for our color matching...
769*5e7646d2SAndroid Build Coastguard Worker*APCustomColorMatchingName name/AcmeColor(tm): ""
770*5e7646d2SAndroid Build Coastguard Worker*fr.APCustomColorMatchingName name/La AcmeColor(tm): ""
771*5e7646d2SAndroid Build Coastguard Worker</pre>
772*5e7646d2SAndroid Build Coastguard Worker
773*5e7646d2SAndroid Build Coastguard Worker<h4 class="title"><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a></h4>
774*5e7646d2SAndroid Build Coastguard Worker
775*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APCustomColorMatchingProfile: name</p>
776*5e7646d2SAndroid Build Coastguard Worker
777*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines a supported RGB color profile that can be used when doing custom color matching. Currently only <tt>sRGB</tt>, <tt>AdobeRGB</tt>, and <tt>GenericRGB</tt> are supported. If not specified, RGB data will use the GenericRGB colorspace.</p>
778*5e7646d2SAndroid Build Coastguard Worker
779*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
780*5e7646d2SAndroid Build Coastguard Worker
781*5e7646d2SAndroid Build Coastguard Worker<p>If you provide multiple <tt>APCustomColorMatchingProfile</tt> keywords, you are responsible for providing the necessary user interface controls to select the profile in a <a href='#APDialogExtension'>print dialog pane</a>. Add the named profile to the print settings using the key <tt>kPMCustomColorMatchingProfileKey</tt>.</p>
782*5e7646d2SAndroid Build Coastguard Worker
783*5e7646d2SAndroid Build Coastguard Worker</blockquote>
784*5e7646d2SAndroid Build Coastguard Worker
785*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
786*5e7646d2SAndroid Build Coastguard Worker
787*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
788*5e7646d2SAndroid Build Coastguard Worker*% Use sRGB for RGB color by default, but support both sRGB and AdobeRGB
789*5e7646d2SAndroid Build Coastguard Worker*APSupportsCustomColorMatching: true
790*5e7646d2SAndroid Build Coastguard Worker*APDefaultCustomColorMatchingProfile: sRGB
791*5e7646d2SAndroid Build Coastguard Worker*APCustomColorMatchingProfile: sRGB
792*5e7646d2SAndroid Build Coastguard Worker*APCustomColorMatchingProfile: AdobeRGB
793*5e7646d2SAndroid Build Coastguard Worker</pre>
794*5e7646d2SAndroid Build Coastguard Worker
795*5e7646d2SAndroid Build Coastguard Worker<h4 class="title"><span class='info'>macOS 10.5</span><a name='APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a></h4>
796*5e7646d2SAndroid Build Coastguard Worker
797*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APDefaultCustomColorMatchingProfile: name</p>
798*5e7646d2SAndroid Build Coastguard Worker
799*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines the default RGB color profile that will be used when doing custom color matching. Currently only <tt>sRGB</tt>, <tt>AdobeRGB</tt>, and <tt>GenericRGB</tt> are supported.</p>
800*5e7646d2SAndroid Build Coastguard Worker
801*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
802*5e7646d2SAndroid Build Coastguard Worker
803*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
804*5e7646d2SAndroid Build Coastguard Worker*% Use sRGB for RGB color by default
805*5e7646d2SAndroid Build Coastguard Worker*APSupportsCustomColorMatching: true
806*5e7646d2SAndroid Build Coastguard Worker*APDefaultCustomColorMatchingProfile: sRGB
807*5e7646d2SAndroid Build Coastguard Worker</pre>
808*5e7646d2SAndroid Build Coastguard Worker
809*5e7646d2SAndroid Build Coastguard Worker<h4 class="title"><span class='info'>macOS 10.4</span><a name='APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a></h4>
810*5e7646d2SAndroid Build Coastguard Worker
811*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APSupportsCustomColorMatching: boolean</p>
812*5e7646d2SAndroid Build Coastguard Worker
813*5e7646d2SAndroid Build Coastguard Worker<p>This keyword specifies that the driver provides its own custom color matching. When <tt>true</tt>, the default hand-off colorspace will be GenericGray, GenericRGB, or GenericCMYK depending on the number of components the driver requests. The <a href='#APDefaultCustomColorMatchingProfile'><tt>APDefaultCustomColorMatchingProfile</tt></a> keyword can be used to override the default 3-component (RGB) colorspace.</p>
814*5e7646d2SAndroid Build Coastguard Worker
815*5e7646d2SAndroid Build Coastguard Worker<p>The default for <tt>APSupportsCustomColorMatching</tt> is <tt>false</tt>.</p>
816*5e7646d2SAndroid Build Coastguard Worker
817*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
818*5e7646d2SAndroid Build Coastguard Worker
819*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
820*5e7646d2SAndroid Build Coastguard Worker*APSupportsCustomColorMatching: true
821*5e7646d2SAndroid Build Coastguard Worker*APDefaultCustomColorMatchingProfile: sRGB
822*5e7646d2SAndroid Build Coastguard Worker</pre>
823*5e7646d2SAndroid Build Coastguard Worker
824*5e7646d2SAndroid Build Coastguard Worker
825*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='CONSTRAINTS'>Constraints</a></h2>
826*5e7646d2SAndroid Build Coastguard Worker
827*5e7646d2SAndroid Build Coastguard Worker<p>Constraints are option choices that are not allowed by the driver or device, for example printing 2-sided transparencies. All versions of CUPS support constraints defined by the legacy Adobe <tt>UIConstraints</tt> and <tt>NonUIConstraints</tt> keywords which support conflicts between any two option choices, for example:</p>
828*5e7646d2SAndroid Build Coastguard Worker
829*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
830*5e7646d2SAndroid Build Coastguard Worker*% Do not allow 2-sided printing on transparency media
831*5e7646d2SAndroid Build Coastguard Worker*UIConstraints: "*Duplex *MediaType Transparency"
832*5e7646d2SAndroid Build Coastguard Worker*UIConstraints: "*MediaType Transparency *Duplex"
833*5e7646d2SAndroid Build Coastguard Worker</pre>
834*5e7646d2SAndroid Build Coastguard Worker
835*5e7646d2SAndroid Build Coastguard Worker<p>While nearly all constraints can be expressed using these keywords, there are valid scenarios requiring constraints between more than two option choices. In addition, resolution of constraints is problematic since users and software have to guess how a particular constraint is best resolved.</p>
836*5e7646d2SAndroid Build Coastguard Worker
837*5e7646d2SAndroid Build Coastguard Worker<p>CUPS 1.4 and higher define two new keywords for constraints, <tt>cupsUIConstraints</tt> and <tt>cupsUIResolver</tt>. Each <tt>cupsUIConstraints</tt> keyword points to a <tt>cupsUIResolver</tt> keyword which specifies alternate options that resolve the conflict condition. The same <tt>cupsUIResolver</tt> can be used by multiple <tt>cupsUIConstraints</tt>.</p>
838*5e7646d2SAndroid Build Coastguard Worker
839*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
840*5e7646d2SAndroid Build Coastguard Worker
841*5e7646d2SAndroid Build Coastguard Worker<p>When developing PPD files that contain constraints, it is very important to use the <a href="man-cupstestppd.html">cupstestppd(1)</a> program to verify that your constraints are accurate and cannot result in unresolvable option selections.</p>
842*5e7646d2SAndroid Build Coastguard Worker
843*5e7646d2SAndroid Build Coastguard Worker</blockquote>
844*5e7646d2SAndroid Build Coastguard Worker
845*5e7646d2SAndroid Build Coastguard Worker
846*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIConstraints'>cupsUIConstraints</a></h3>
847*5e7646d2SAndroid Build Coastguard Worker
848*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsUIConstraints resolver: "*Keyword1 *Keyword2 ..."<br>
849*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints resolver: "*Keyword1 OptionKeyword1 *Keyword2 ..."<br>
850*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints resolver: "*Keyword1 *Keyword2 OptionKeyword2 ..."<br>
851*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints resolver: "*Keyword1 OptionKeyword1 *Keyword2 OptionKeyword2 ..."<br>
852*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints: "*InstallableKeyword1 OptionKeyword1 *Keyword2 OptionKeyword2 ..."</p>
853*5e7646d2SAndroid Build Coastguard Worker
854*5e7646d2SAndroid Build Coastguard Worker<p>Lists two or more options which conflict. The "resolver" string is a (possibly unique) keyword which specifies which options to change when the constraint exists. When no resolver is provided, CUPS first tries the default choice followed by testing each option choice to resolve the conflict.</p>
855*5e7646d2SAndroid Build Coastguard Worker
856*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
857*5e7646d2SAndroid Build Coastguard Worker
858*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
859*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify that 2-sided printing cannot happen on transparencies</em>
860*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints transparency: "*Duplex *MediaType Transparency"
861*5e7646d2SAndroid Build Coastguard Worker
862*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify that envelope printing cannot happen from the paper trays</em>
863*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints envelope: "*PageSize Env10 *InputSlot Tray1"
864*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints envelope: "*PageSize Env10 *InputSlot Tray1"
865*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints envelope: "*PageSize EnvDL *InputSlot Tray2"
866*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints envelope: "*PageSize EnvDL *InputSlot Tray2"
867*5e7646d2SAndroid Build Coastguard Worker
868*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify an installable option constraint for the envelope feeder</em>
869*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints: "*InputSlot EnvFeeder *InstalledEnvFeeder"
870*5e7646d2SAndroid Build Coastguard Worker
871*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify that photo printing cannot happen on plain paper or transparencies at 1200dpi</em>
872*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints photo: "*OutputMode Photo *MediaType Plain *Resolution 1200dpi"
873*5e7646d2SAndroid Build Coastguard Worker*cupsUIConstraints photo: "*OutputMode Photo *MediaType Transparency *Resolution 1200dpi"
874*5e7646d2SAndroid Build Coastguard Worker</pre>
875*5e7646d2SAndroid Build Coastguard Worker
876*5e7646d2SAndroid Build Coastguard Worker
877*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIResolver'>cupsUIResolver</a></h3>
878*5e7646d2SAndroid Build Coastguard Worker
879*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsUIResolver resolver: "*Keyword1 OptionKeyword1 *Keyword2 OptionKeyword2 ..."</p>
880*5e7646d2SAndroid Build Coastguard Worker
881*5e7646d2SAndroid Build Coastguard Worker<p>Specifies two or more options to mark/select to resolve a constraint. The "resolver" string identifies a particular action to take for one or more <a href='#cupsUIConstraints'><tt>cupsUIConstraints</tt></a>. The same action can be used for multiple constraints. The option keyword pairs are treated as an ordered list of option selections to try - only the first N selections will be used, where N is the minimum number of selections required. Because <a href="api-ppd.html#cupsResolveConflicts"><code>cupsResolveConflicts()</code></a> will not change the most recent option selection passed to it, at least two options from the constraints must be listed to avoid situations where conflicts cannot be resolved.</p>
882*5e7646d2SAndroid Build Coastguard Worker
883*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
884*5e7646d2SAndroid Build Coastguard Worker
885*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
886*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify the options to change for the 2-sided transparency constraint</em>
887*5e7646d2SAndroid Build Coastguard Worker*cupsUIResolver transparency: "*Duplex None *MediaType Plain"
888*5e7646d2SAndroid Build Coastguard Worker
889*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify the options to change for the envelope printing constraints.  Notice
890*5e7646d2SAndroid Build Coastguard Worker*% that we try to change the InputSlot to either the envelope feeder or the
891*5e7646d2SAndroid Build Coastguard Worker*% manual feed first, then we change the page size...</em>
892*5e7646d2SAndroid Build Coastguard Worker*cupsUIResolver envelope: "*InputSlot EnvFeeder *InputSlot ManualFeed *PageSize Letter"
893*5e7646d2SAndroid Build Coastguard Worker
894*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify the options to change for the photo printing constraints</em>
895*5e7646d2SAndroid Build Coastguard Worker*cupsUIResolver photo: "*OutputMode Best *Resolution 600dpi"
896*5e7646d2SAndroid Build Coastguard Worker</pre>
897*5e7646d2SAndroid Build Coastguard Worker
898*5e7646d2SAndroid Build Coastguard Worker
899*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='I18N'>Globalized PPD Support</a></h2>
900*5e7646d2SAndroid Build Coastguard Worker
901*5e7646d2SAndroid Build Coastguard Worker<p>CUPS 1.2 and higher adds support for PPD files containing multiple languages by following the following additional rules:</p>
902*5e7646d2SAndroid Build Coastguard Worker
903*5e7646d2SAndroid Build Coastguard Worker<ol>
904*5e7646d2SAndroid Build Coastguard Worker
905*5e7646d2SAndroid Build Coastguard Worker	<li>The <tt>LanguageVersion</tt> MUST be <tt>English</tt></li>
906*5e7646d2SAndroid Build Coastguard Worker
907*5e7646d2SAndroid Build Coastguard Worker	<li>The <tt>LanguageEncoding</tt> MUST be <tt>ISOLatin1</tt></li>
908*5e7646d2SAndroid Build Coastguard Worker
909*5e7646d2SAndroid Build Coastguard Worker	<li>The <tt>cupsLanguages</tt> keyword MUST be provided and list each of the supported locales in the PPD file</li>
910*5e7646d2SAndroid Build Coastguard Worker
911*5e7646d2SAndroid Build Coastguard Worker	<li>Main and option keywords MUST NOT exceed 34 (instead of 40) characters to allow room for the locale prefixes in translation keywords</li>
912*5e7646d2SAndroid Build Coastguard Worker
913*5e7646d2SAndroid Build Coastguard Worker	<li>The main keyword "Translation" MUST NOT be used</li>
914*5e7646d2SAndroid Build Coastguard Worker
915*5e7646d2SAndroid Build Coastguard Worker	<li>Translation strings included with the main and option keywords MUST NOT contain characters outside the ASCII subset of ISOLatin1 and UTF-8; developers wishing to use characters outside ASCII MUST provide a separate set of English localization keywords for the affected keywords.</li>
916*5e7646d2SAndroid Build Coastguard Worker
917*5e7646d2SAndroid Build Coastguard Worker	<li>Localizations are specified using a locale prefix of the form "ll" or "ll_CC." where "ll" is the 2-letter ISO language code and "CC" is the 2-letter ISO country code<ul>
918*5e7646d2SAndroid Build Coastguard Worker		<li>A generic language translation ("ll") SHOULD be provided with country-specific differences ("ll_CC") provided only as needed</li>
919*5e7646d2SAndroid Build Coastguard Worker		<li>For historical reasons, the "zh" and "zh_CN" locales map to Simplified Chinese while the "zh_TW" locale maps to Traditional Chinese</li>
920*5e7646d2SAndroid Build Coastguard Worker	</ul></li>
921*5e7646d2SAndroid Build Coastguard Worker
922*5e7646d2SAndroid Build Coastguard Worker	<li>Locale-specific translation strings MUST be encoded using UTF-8.</li>
923*5e7646d2SAndroid Build Coastguard Worker
924*5e7646d2SAndroid Build Coastguard Worker	<li>Main keywords MUST be localized using one of the following forms:
925*5e7646d2SAndroid Build Coastguard Worker	<p><tt>*ll.Translation MainKeyword/translation text: ""</tt><br />
926*5e7646d2SAndroid Build Coastguard Worker	<tt>*ll_CC.Translation MainKeyword/translation text: ""</tt></p></li>
927*5e7646d2SAndroid Build Coastguard Worker
928*5e7646d2SAndroid Build Coastguard Worker	<li>Option keywords MUST be localized using one of the following forms:
929*5e7646d2SAndroid Build Coastguard Worker	<p><tt>*ll.MainKeyword OptionKeyword/translation text: ""</tt><br>
930*5e7646d2SAndroid Build Coastguard Worker	<tt>*ll_CC.MainKeyword OptionKeyword/translation text: ""</tt></p></li>
931*5e7646d2SAndroid Build Coastguard Worker
932*5e7646d2SAndroid Build Coastguard Worker	<li>Localization keywords MAY appear anywhere after the first line of the PPD file</li>
933*5e7646d2SAndroid Build Coastguard Worker
934*5e7646d2SAndroid Build Coastguard Worker</ol>
935*5e7646d2SAndroid Build Coastguard Worker
936*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
937*5e7646d2SAndroid Build Coastguard Worker
938*5e7646d2SAndroid Build Coastguard Worker<p>We use a <tt>LanguageEncoding</tt> value of <tt>ISOLatin1</tt> and limit the allowed base translation strings to ASCII to avoid character coding issues that would otherwise occur. In addition, requiring the base translation strings to be in English allows for easier fallback translation when no localization is provided in the PPD file for a given locale.</p>
939*5e7646d2SAndroid Build Coastguard Worker
940*5e7646d2SAndroid Build Coastguard Worker</blockquote>
941*5e7646d2SAndroid Build Coastguard Worker
942*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
943*5e7646d2SAndroid Build Coastguard Worker
944*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
945*5e7646d2SAndroid Build Coastguard Worker*LanguageVersion: English
946*5e7646d2SAndroid Build Coastguard Worker*LanguageEncoding: ISOLatin1
947*5e7646d2SAndroid Build Coastguard Worker*cupsLanguages: "de fr_CA"
948*5e7646d2SAndroid Build Coastguard Worker*ModelName: "Foobar Laser 9999"
949*5e7646d2SAndroid Build Coastguard Worker
950*5e7646d2SAndroid Build Coastguard Worker<em>*% Localize ModelName for French and German</em>
951*5e7646d2SAndroid Build Coastguard Worker*fr_CA.Translation ModelName/La Foobar Laser 9999: ""
952*5e7646d2SAndroid Build Coastguard Worker*de.Translation ModelName/Foobar LaserDrucken 9999: ""
953*5e7646d2SAndroid Build Coastguard Worker
954*5e7646d2SAndroid Build Coastguard Worker*cupsIPPReason com.vendor-error/A serious error occurred: "/help/com.vendor/error.html"
955*5e7646d2SAndroid Build Coastguard Worker<em>*% Localize printer-state-reason for French and German</em>
956*5e7646d2SAndroid Build Coastguard Worker*fr_CA.cupsIPPReason com.vendor-error/Une erreur s&egrave;rieuse s'est produite: "/help/com.vendor/error.html"
957*5e7646d2SAndroid Build Coastguard Worker*de.cupsIPPReason com.vendor-error/Eine ernste St&ouml;rung trat: "/help/com.vendor/error.html"
958*5e7646d2SAndroid Build Coastguard Worker
959*5e7646d2SAndroid Build Coastguard Worker...
960*5e7646d2SAndroid Build Coastguard Worker
961*5e7646d2SAndroid Build Coastguard Worker*OpenUI *InputSlot/Paper Source: PickOne
962*5e7646d2SAndroid Build Coastguard Worker*OrderDependency: 10 AnySetup *InputSlot
963*5e7646d2SAndroid Build Coastguard Worker*DefaultInputSlot: Auto
964*5e7646d2SAndroid Build Coastguard Worker<em>*% Localize InputSlot for French and German</em>
965*5e7646d2SAndroid Build Coastguard Worker*fr_CA.Translation InputSlot/Papier source: ""
966*5e7646d2SAndroid Build Coastguard Worker*de.Translation InputSlot/Papiereinzug: ""
967*5e7646d2SAndroid Build Coastguard Worker*InputSlot Auto/Default: "&lt;&lt;/ManualFeed false&gt;&gt;setpagedevice"
968*5e7646d2SAndroid Build Coastguard Worker<em>*% Localize InputSlot=Auto for French and German</em>
969*5e7646d2SAndroid Build Coastguard Worker*fr_CA.InputSlot Auto/Par Defaut: ""
970*5e7646d2SAndroid Build Coastguard Worker*de.InputSlot Auto/Standard: ""
971*5e7646d2SAndroid Build Coastguard Worker*InputSlot Manual/Manual Feed: "&lt;&lt;/ManualFeed true&gt;&gt;setpagedevice"
972*5e7646d2SAndroid Build Coastguard Worker<em>*% Localize InputSlot=Manual for French and German</em>
973*5e7646d2SAndroid Build Coastguard Worker*fr_CA.InputSlot Manual/Manuel mecanisme de alimentation: ""
974*5e7646d2SAndroid Build Coastguard Worker*de.InputSlot Manual/Manueller Einzug: ""
975*5e7646d2SAndroid Build Coastguard Worker*CloseUI: *InputSlot
976*5e7646d2SAndroid Build Coastguard Worker</pre>
977*5e7646d2SAndroid Build Coastguard Worker
978*5e7646d2SAndroid Build Coastguard Worker
979*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='OPTIONS'><span class="info">CUPS 1.3/macOS 10.6</span>Custom Options</a></h2>
980*5e7646d2SAndroid Build Coastguard Worker
981*5e7646d2SAndroid Build Coastguard Worker<p>CUPS supports custom options using an extension of the <tt>CustomPageSize</tt> and <tt>ParamCustomPageSize</tt> syntax:</p>
982*5e7646d2SAndroid Build Coastguard Worker
983*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
984*5e7646d2SAndroid Build Coastguard Worker*CustomFoo True: "command"
985*5e7646d2SAndroid Build Coastguard Worker*ParamCustomFoo Name1/Text 1: order type minimum maximum
986*5e7646d2SAndroid Build Coastguard Worker*ParamCustomFoo Name2/Text 2: order type minimum maximum
987*5e7646d2SAndroid Build Coastguard Worker...
988*5e7646d2SAndroid Build Coastguard Worker*ParamCustomFoo NameN/Text N: order type minimum maximum
989*5e7646d2SAndroid Build Coastguard Worker</pre>
990*5e7646d2SAndroid Build Coastguard Worker
991*5e7646d2SAndroid Build Coastguard Worker<p>When the base option is part of the <tt>JCLSetup</tt> section, the "command" string contains JCL commands with "\order" placeholders for each numbered parameter. The CUPS API handles any necessary value quoting for HP-PJL commands. For example, if the JCL command string is "@PJL SET PASSCODE=\1" and the first
992*5e7646d2SAndroid Build Coastguard Workeroption value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234".</p>
993*5e7646d2SAndroid Build Coastguard Worker
994*5e7646d2SAndroid Build Coastguard Worker<p>For non-<tt>JCLSetup</tt> options, the "order" value is a number from 1 to N and specifies the order of values as they are placed on the stack before the command. For example, if the PostScript command string is "&lt;&lt;/cupsReal1 2 1 roll&gt;&gt;setpagedevice" and the option value is "2.0" then CUPS will output the string "2.0 &lt;&lt;/cupsReal1 2 1 roll&gt;&gt;setpagedevice".</p>
995*5e7646d2SAndroid Build Coastguard Worker
996*5e7646d2SAndroid Build Coastguard Worker<p>The "type" is one of the following keywords:</p>
997*5e7646d2SAndroid Build Coastguard Worker
998*5e7646d2SAndroid Build Coastguard Worker<ul>
999*5e7646d2SAndroid Build Coastguard Worker
1000*5e7646d2SAndroid Build Coastguard Worker	<li><tt>curve</tt> - a real value from "minimum" to "maximum" representing a gamma correction curve using the function: f(x) = x <sup>value</sup></li>
1001*5e7646d2SAndroid Build Coastguard Worker
1002*5e7646d2SAndroid Build Coastguard Worker	<li><tt>int</tt> - an integer value from "minimum" to "maximum"</li>
1003*5e7646d2SAndroid Build Coastguard Worker
1004*5e7646d2SAndroid Build Coastguard Worker	<li><tt>invcurve</tt> - a real value from "minimum" to "maximum" representing a gamma correction curve using the function: f(x) = x <sup>1 / value</sup></li>
1005*5e7646d2SAndroid Build Coastguard Worker
1006*5e7646d2SAndroid Build Coastguard Worker	<li><tt>passcode</tt> - a string of numbers value with a minimum of "minimum" numbers and a maximum of "maximum" numbers ("minimum" and "maximum" are numbers and passcode strings are not displayed in the user interface)</li>
1007*5e7646d2SAndroid Build Coastguard Worker
1008*5e7646d2SAndroid Build Coastguard Worker	<li><tt>password</tt> - a string value with a minimum of "minimum" characters and a maximum of "maximum" characters ("minimum" and "maximum" are numbers and password strings are not displayed in the user interface)</li>
1009*5e7646d2SAndroid Build Coastguard Worker
1010*5e7646d2SAndroid Build Coastguard Worker	<li><tt>points</tt> - a measurement value in points from "minimum" to "maximum"</li>
1011*5e7646d2SAndroid Build Coastguard Worker
1012*5e7646d2SAndroid Build Coastguard Worker	<li><tt>real</tt> - a real value from "minimum" to "maximum"</li>
1013*5e7646d2SAndroid Build Coastguard Worker
1014*5e7646d2SAndroid Build Coastguard Worker	<li><tt>string</tt> - a string value with a minimum of "minimum" characters and a maximum of "maximum" characters ("minimum" and "maximum" are numbers)</li>
1015*5e7646d2SAndroid Build Coastguard Worker
1016*5e7646d2SAndroid Build Coastguard Worker</ul>
1017*5e7646d2SAndroid Build Coastguard Worker
1018*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1019*5e7646d2SAndroid Build Coastguard Worker
1020*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1021*5e7646d2SAndroid Build Coastguard Worker<em>*% Base JCL key code option</em>
1022*5e7646d2SAndroid Build Coastguard Worker*JCLOpenUI JCLPasscode/Key Code: PickOne
1023*5e7646d2SAndroid Build Coastguard Worker*OrderDependency: 10 JCLSetup *JCLPasscode
1024*5e7646d2SAndroid Build Coastguard Worker*DefaultJCLPasscode: None
1025*5e7646d2SAndroid Build Coastguard Worker*JCLPasscode None/No Code: ""
1026*5e7646d2SAndroid Build Coastguard Worker*JCLPasscode 1111: "@PJL SET PASSCODE = 1111&lt;0A&gt;"
1027*5e7646d2SAndroid Build Coastguard Worker*JCLPasscode 2222: "@PJL SET PASSCODE = 2222&lt;0A&gt;"
1028*5e7646d2SAndroid Build Coastguard Worker*JCLPasscode 3333: "@PJL SET PASSCODE = 3333&lt;0A&gt;"
1029*5e7646d2SAndroid Build Coastguard Worker*JCLCloseUI: *JCLPasscode
1030*5e7646d2SAndroid Build Coastguard Worker
1031*5e7646d2SAndroid Build Coastguard Worker<em>*% Custom JCL key code option</em>
1032*5e7646d2SAndroid Build Coastguard Worker*CustomJCLPasscode True: "@PJL SET PASSCODE = \1&lt;0A&gt;"
1033*5e7646d2SAndroid Build Coastguard Worker*ParamCustomJCLPasscode Code/Key Code: 1 passcode 4 4
1034*5e7646d2SAndroid Build Coastguard Worker
1035*5e7646d2SAndroid Build Coastguard Worker
1036*5e7646d2SAndroid Build Coastguard Worker<em>*% Base PostScript watermark option</em>
1037*5e7646d2SAndroid Build Coastguard Worker*OpenUI WatermarkText/Watermark Text: PickOne
1038*5e7646d2SAndroid Build Coastguard Worker*OrderDependency: 10 AnySetup *WatermarkText
1039*5e7646d2SAndroid Build Coastguard Worker*DefaultWatermarkText: None
1040*5e7646d2SAndroid Build Coastguard Worker*WatermarkText None: ""
1041*5e7646d2SAndroid Build Coastguard Worker*WatermarkText Draft: "&lt;&lt;/cupsString1(Draft)&gt;&gt;setpagedevice"
1042*5e7646d2SAndroid Build Coastguard Worker*CloseUI: *WatermarkText
1043*5e7646d2SAndroid Build Coastguard Worker
1044*5e7646d2SAndroid Build Coastguard Worker<em>*% Custom PostScript watermark option</em>
1045*5e7646d2SAndroid Build Coastguard Worker*CustomWatermarkText True: "&lt;&lt;/cupsString1 3 -1 roll&gt;&gt;setpagedevice"
1046*5e7646d2SAndroid Build Coastguard Worker*ParamCustomWatermarkText Text: 1 string 0 32
1047*5e7646d2SAndroid Build Coastguard Worker
1048*5e7646d2SAndroid Build Coastguard Worker
1049*5e7646d2SAndroid Build Coastguard Worker<em>*% Base PostScript gamma/density option</em>
1050*5e7646d2SAndroid Build Coastguard Worker*OpenUI GammaDensity/Gamma and Density: PickOne
1051*5e7646d2SAndroid Build Coastguard Worker*OrderDependency: 10 AnySetup *GammaDensity
1052*5e7646d2SAndroid Build Coastguard Worker*DefaultGammaDensity: Normal
1053*5e7646d2SAndroid Build Coastguard Worker*GammaDensity Normal/Normal: "&lt;&lt;/cupsReal1 1.0/cupsReal2 1.0&gt;&gt;setpagedevice"
1054*5e7646d2SAndroid Build Coastguard Worker*GammaDensity Light/Lighter: "&lt;&lt;/cupsReal1 0.9/cupsReal2 0.67&gt;&gt;setpagedevice"
1055*5e7646d2SAndroid Build Coastguard Worker*GammaDensity Dark/Darker: "&lt;&lt;/cupsReal1 1.1/cupsReal2 1.5&gt;&gt;setpagedevice"
1056*5e7646d2SAndroid Build Coastguard Worker*CloseUI: *GammaDensity
1057*5e7646d2SAndroid Build Coastguard Worker
1058*5e7646d2SAndroid Build Coastguard Worker<em>*% Custom PostScript gamma/density option</em>
1059*5e7646d2SAndroid Build Coastguard Worker*CustomGammaDensity True: "&lt;&lt;/cupsReal1 3 -1 roll/cupsReal2 5 -1&gt;&gt;setpagedevice"
1060*5e7646d2SAndroid Build Coastguard Worker*ParamCustomGammaDensity Gamma: 1 curve 0.1 10
1061*5e7646d2SAndroid Build Coastguard Worker*ParamCustomGammaDensity Density: 2 real 0 2
1062*5e7646d2SAndroid Build Coastguard Worker</pre>
1063*5e7646d2SAndroid Build Coastguard Worker
1064*5e7646d2SAndroid Build Coastguard Worker
1065*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='RASTERPS'>Writing PostScript Option Commands for Raster Drivers</a></h2>
1066*5e7646d2SAndroid Build Coastguard Worker
1067*5e7646d2SAndroid Build Coastguard Worker<p>PPD files are used for both PostScript and non-PostScript printers. For CUPS raster drivers, you use a subset of the PostScript language to set page device keywords such as page size, resolution, and so forth. For example, the following code sets the page size to A4 size:</p>
1068*5e7646d2SAndroid Build Coastguard Worker
1069*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1070*5e7646d2SAndroid Build Coastguard Worker*PageSize A4: "&lt;&lt;/PageSize[595 842]&gt;&gt;setpagedevice"
1071*5e7646d2SAndroid Build Coastguard Worker</pre>
1072*5e7646d2SAndroid Build Coastguard Worker
1073*5e7646d2SAndroid Build Coastguard Worker<p>Custom options typically use other operators to organize the values into a key/value dictionary for <tt>setpagedevice</tt>. For example, our previous <tt>CustomWatermarkText</tt> option code uses the <tt>roll</tt> operator to move the custom string value into the dictionary for <tt>setpagedevice</tt>:</p>
1074*5e7646d2SAndroid Build Coastguard Worker
1075*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1076*5e7646d2SAndroid Build Coastguard Worker*CustomWatermarkText True: "&lt;&lt;/cupsString1 3 -1 roll&gt;&gt;setpagedevice"
1077*5e7646d2SAndroid Build Coastguard Worker</pre>
1078*5e7646d2SAndroid Build Coastguard Worker
1079*5e7646d2SAndroid Build Coastguard Worker<p>For a custom string value of "My Watermark", CUPS will produce the following PostScript code for the option:</p>
1080*5e7646d2SAndroid Build Coastguard Worker
1081*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1082*5e7646d2SAndroid Build Coastguard Worker(My Watermark)
1083*5e7646d2SAndroid Build Coastguard Worker&lt;&lt;/cupsString1 3 -1 roll&gt;&gt;setpagedevice
1084*5e7646d2SAndroid Build Coastguard Worker</pre>
1085*5e7646d2SAndroid Build Coastguard Worker
1086*5e7646d2SAndroid Build Coastguard Worker<p>The code moves the string value ("My Watermark") from the bottom of the stack to the top, creating a dictionary that looks like:</p>
1087*5e7646d2SAndroid Build Coastguard Worker
1088*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1089*5e7646d2SAndroid Build Coastguard Worker&lt;&lt;/cupsString1(My Watermark)&gt;&gt;setpagedevice
1090*5e7646d2SAndroid Build Coastguard Worker</pre>
1091*5e7646d2SAndroid Build Coastguard Worker
1092*5e7646d2SAndroid Build Coastguard Worker<p>The resulting dictionary sets the page device attributes that are sent to your raster driver in the page header.</p>
1093*5e7646d2SAndroid Build Coastguard Worker
1094*5e7646d2SAndroid Build Coastguard Worker
1095*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Custom Page Size Code</h3>
1096*5e7646d2SAndroid Build Coastguard Worker
1097*5e7646d2SAndroid Build Coastguard Worker<p>There are many possible implementations of the <tt>CustomPageSize</tt> code. For CUPS raster drivers, the following code is recommended:</p>
1098*5e7646d2SAndroid Build Coastguard Worker
1099*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1100*5e7646d2SAndroid Build Coastguard Worker*ParamCustomPageSize Width:        1 points <i>min-width max-width</i>
1101*5e7646d2SAndroid Build Coastguard Worker*ParamCustomPageSize Height:       2 points <i>min-height max-height</i>
1102*5e7646d2SAndroid Build Coastguard Worker*ParamCustomPageSize WidthOffset:  3 points 0 0
1103*5e7646d2SAndroid Build Coastguard Worker*ParamCustomPageSize HeightOffset: 4 points 0 0
1104*5e7646d2SAndroid Build Coastguard Worker*ParamCustomPageSize Orientation:  5 int 0 0
1105*5e7646d2SAndroid Build Coastguard Worker*CustomPageSize True: "pop pop pop &lt;&lt;/PageSize[5 -2 roll]/ImagingBBox null&gt;&gt;setpagedevice"
1106*5e7646d2SAndroid Build Coastguard Worker</pre>
1107*5e7646d2SAndroid Build Coastguard Worker
1108*5e7646d2SAndroid Build Coastguard Worker
1109*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Supported PostScript Operators</h3>
1110*5e7646d2SAndroid Build Coastguard Worker
1111*5e7646d2SAndroid Build Coastguard Worker<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>
1112*5e7646d2SAndroid Build Coastguard Worker
1113*5e7646d2SAndroid Build Coastguard Worker<ul>
1114*5e7646d2SAndroid Build Coastguard Worker
1115*5e7646d2SAndroid Build Coastguard Worker	<li><tt>&lt;&lt;</tt> - Start a dictionary.</li>
1116*5e7646d2SAndroid Build Coastguard Worker
1117*5e7646d2SAndroid Build Coastguard Worker	<li><tt>&gt;&gt;</tt> - End a dictionary.</li>
1118*5e7646d2SAndroid Build Coastguard Worker
1119*5e7646d2SAndroid Build Coastguard Worker	<li><tt>[</tt> - Start an array.</li>
1120*5e7646d2SAndroid Build Coastguard Worker
1121*5e7646d2SAndroid Build Coastguard Worker	<li><tt>]</tt> - End an array.</li>
1122*5e7646d2SAndroid Build Coastguard Worker
1123*5e7646d2SAndroid Build Coastguard Worker	<li><tt>copy</tt> - Copy the top N objects on the stack.</li>
1124*5e7646d2SAndroid Build Coastguard Worker
1125*5e7646d2SAndroid Build Coastguard Worker	<li><tt>dup</tt> - Copy the top object on the stack.</li>
1126*5e7646d2SAndroid Build Coastguard Worker
1127*5e7646d2SAndroid Build Coastguard Worker	<li><tt>index</tt> - Copy the Nth from the top object on the stack.</li>
1128*5e7646d2SAndroid Build Coastguard Worker
1129*5e7646d2SAndroid Build Coastguard Worker	<li><tt>pop</tt> - Pop the top object on the stack.</li>
1130*5e7646d2SAndroid Build Coastguard Worker
1131*5e7646d2SAndroid Build Coastguard Worker	<li><tt>roll</tt> - Shift the top N objects on the stack.</li>
1132*5e7646d2SAndroid Build Coastguard Worker
1133*5e7646d2SAndroid Build Coastguard Worker	<li><tt>setpagedevice</tt> - Set the page header values according to the key/value dictionary on the stack.</li>
1134*5e7646d2SAndroid Build Coastguard Worker
1135*5e7646d2SAndroid Build Coastguard Worker</ul>
1136*5e7646d2SAndroid Build Coastguard Worker
1137*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
1138*5e7646d2SAndroid Build Coastguard Worker
1139*5e7646d2SAndroid Build Coastguard Worker<p><em>Never</em> use the unsupported <tt>dict</tt> or <tt>put</tt>
1140*5e7646d2SAndroid Build Coastguard Workeroperators in your option code. These operators are typically used in
1141*5e7646d2SAndroid Build Coastguard Workeroption code dating back to Level 1 PostScript printers, which did not
1142*5e7646d2SAndroid Build Coastguard Workersupport the simpler <tt>&lt;&lt;</tt> or <tt>&gt;&gt;</tt> operators.
1143*5e7646d2SAndroid Build Coastguard WorkerIf you have old option code using <tt>dict</tt> or <tt>put</tt>, you can
1144*5e7646d2SAndroid Build Coastguard Workerrewrite it very easily to use the newer <tt>&lt;&lt;</tt> and
1145*5e7646d2SAndroid Build Coastguard Worker<tt>&gt;&gt;</tt> operators instead. For example, the following code
1146*5e7646d2SAndroid Build Coastguard Workerto set the page size:</p>
1147*5e7646d2SAndroid Build Coastguard Worker
1148*5e7646d2SAndroid Build Coastguard Worker<style type='text/css'><!--
1149*5e7646d2SAndroid Build Coastguard WorkerPRE B {
1150*5e7646d2SAndroid Build Coastguard Worker  background: #000000;
1151*5e7646d2SAndroid Build Coastguard Worker  color: #ffffff;
1152*5e7646d2SAndroid Build Coastguard Worker  padding: 2px 5px;
1153*5e7646d2SAndroid Build Coastguard Worker}
1154*5e7646d2SAndroid Build Coastguard Worker--></style>
1155*5e7646d2SAndroid Build Coastguard Worker
1156*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1157*5e7646d2SAndroid Build Coastguard Worker<b>1 dict dup</b> /PageSize [612 792] <b>put</b> setpagedevice
1158*5e7646d2SAndroid Build Coastguard Worker</pre>
1159*5e7646d2SAndroid Build Coastguard Worker
1160*5e7646d2SAndroid Build Coastguard Worker<p>can be rewritten as:</p>
1161*5e7646d2SAndroid Build Coastguard Worker
1162*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1163*5e7646d2SAndroid Build Coastguard Worker<b>&lt;&lt;</b> /PageSize [612 792] <b>&gt;&gt;</b> setpagedevice
1164*5e7646d2SAndroid Build Coastguard Worker</pre>
1165*5e7646d2SAndroid Build Coastguard Worker
1166*5e7646d2SAndroid Build Coastguard Worker</blockquote>
1167*5e7646d2SAndroid Build Coastguard Worker
1168*5e7646d2SAndroid Build Coastguard Worker
1169*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Supported Page Device Attributes</h3>
1170*5e7646d2SAndroid Build Coastguard Worker
1171*5e7646d2SAndroid Build Coastguard Worker<p>Table 2 shows the supported page device attributes along with PostScript code examples.</p>
1172*5e7646d2SAndroid Build Coastguard Worker
1173*5e7646d2SAndroid Build Coastguard Worker<div class='table'>
1174*5e7646d2SAndroid Build Coastguard Worker<table summary='Supported Page Device Attributes'>
1175*5e7646d2SAndroid Build Coastguard Worker<caption>Table 2: <a name='TABLE_2'>Supported Page Device Attributes</a></caption>
1176*5e7646d2SAndroid Build Coastguard Worker<thead>
1177*5e7646d2SAndroid Build Coastguard Worker<tr>
1178*5e7646d2SAndroid Build Coastguard Worker	<th>Name(s)</th>
1179*5e7646d2SAndroid Build Coastguard Worker	<th>Type</th>
1180*5e7646d2SAndroid Build Coastguard Worker	<th>Description</th>
1181*5e7646d2SAndroid Build Coastguard Worker	<th>Example(s)</th>
1182*5e7646d2SAndroid Build Coastguard Worker</tr>
1183*5e7646d2SAndroid Build Coastguard Worker</thead>
1184*5e7646d2SAndroid Build Coastguard Worker<tbody>
1185*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1186*5e7646d2SAndroid Build Coastguard Worker	<td><tt>AdvanceDistance</tt></td>
1187*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1188*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the number of points to advance roll media after printing.</td>
1189*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/AdvanceDistance 18&gt;&gt;setpagedevice</tt></td>
1190*5e7646d2SAndroid Build Coastguard Worker</tr>
1191*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1192*5e7646d2SAndroid Build Coastguard Worker	<td><tt>AdvanceMedia</tt></td>
1193*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1194*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies when to advance the media: 0 = never, 1 = after the file, 2 = after the job, 3 = after the set, and 4 = after the page.</td>
1195*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/AdvanceMedia 4&gt;&gt;setpagedevice</tt></td>
1196*5e7646d2SAndroid Build Coastguard Worker</tr>
1197*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1198*5e7646d2SAndroid Build Coastguard Worker	<td><tt>Collate</tt></td>
1199*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1200*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether collated copies are required.</td>
1201*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/Collate true&gt;&gt;setpagedevice</tt></td>
1202*5e7646d2SAndroid Build Coastguard Worker</tr>
1203*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1204*5e7646d2SAndroid Build Coastguard Worker	<td><tt>CutMedia</tt></td>
1205*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1206*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies when to cut the media: 0 = never, 1 = after the file, 2 = after the job, 3 = after the set, and 4 = after the page.</td>
1207*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/CutMedia 1&gt;&gt;setpagedevice</tt></td>
1208*5e7646d2SAndroid Build Coastguard Worker</tr>
1209*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1210*5e7646d2SAndroid Build Coastguard Worker	<td><tt>Duplex</tt></td>
1211*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1212*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether 2-sided printing is required.</td>
1213*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/Duplex true&gt;&gt;setpagedevice</tt></td>
1214*5e7646d2SAndroid Build Coastguard Worker</tr>
1215*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1216*5e7646d2SAndroid Build Coastguard Worker	<td><tt>HWResolution</tt></td>
1217*5e7646d2SAndroid Build Coastguard Worker	<td>Integer Array</td>
1218*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the resolution of the page image in pixels per inch.</td>
1219*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/HWResolution[1200 1200]&gt;&gt;setpagedevice</tt></td>
1220*5e7646d2SAndroid Build Coastguard Worker</tr>
1221*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1222*5e7646d2SAndroid Build Coastguard Worker	<td><tt>InsertSheet</tt></td>
1223*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1224*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether to insert a blank sheet before the job.</td>
1225*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/InsertSheet true&gt;&gt;setpagedevice</tt></td>
1226*5e7646d2SAndroid Build Coastguard Worker</tr>
1227*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1228*5e7646d2SAndroid Build Coastguard Worker	<td><tt>Jog</tt></td>
1229*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1230*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies when to shift the media in the output bin: 0 = never, 1 = after the file, 2 = after the job, 3 = after the set, and 4 = after the page.</td>
1231*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/Jog 2&gt;&gt;setpagedevice</tt></td>
1232*5e7646d2SAndroid Build Coastguard Worker</tr>
1233*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1234*5e7646d2SAndroid Build Coastguard Worker	<td><tt>LeadingEdge</tt></td>
1235*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1236*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the leading edge of the media: 0 = top, 1 = right, 2 = bottom, 3 = left.</td>
1237*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/LeadingEdge 0&gt;&gt;setpagedevice</tt></td>
1238*5e7646d2SAndroid Build Coastguard Worker</tr>
1239*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1240*5e7646d2SAndroid Build Coastguard Worker	<td><tt>ManualFeed</tt></td>
1241*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1242*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether media should be drawn from the manual feed tray. Note: The <tt>MediaPosition</tt> attribute is preferred over the <tt>ManualFeed</tt> attribute.</td>
1243*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/ManualFeed true&gt;&gt;setpagedevice</tt></td>
1244*5e7646d2SAndroid Build Coastguard Worker</tr>
1245*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1246*5e7646d2SAndroid Build Coastguard Worker	<td><tt>MediaClass</tt></td>
1247*5e7646d2SAndroid Build Coastguard Worker	<td>String</td>
1248*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies a named media.</td>
1249*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/MediaClass (Invoices)&gt;&gt;setpagedevice</tt></td>
1250*5e7646d2SAndroid Build Coastguard Worker</tr>
1251*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1252*5e7646d2SAndroid Build Coastguard Worker	<td><tt>MediaColor</tt></td>
1253*5e7646d2SAndroid Build Coastguard Worker	<td>String</td>
1254*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the color of the media.</td>
1255*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/MediaColor &gt;&gt;setpagedevice</tt></td>
1256*5e7646d2SAndroid Build Coastguard Worker</tr>
1257*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1258*5e7646d2SAndroid Build Coastguard Worker	<td><tt>MediaPosition</tt></td>
1259*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1260*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the tray or source of the media.</td>
1261*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/MediaPosition 12&gt;&gt;setpagedevice</tt></td>
1262*5e7646d2SAndroid Build Coastguard Worker</tr>
1263*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1264*5e7646d2SAndroid Build Coastguard Worker	<td><tt>MediaType</tt></td>
1265*5e7646d2SAndroid Build Coastguard Worker	<td>String</td>
1266*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the general media type.</td>
1267*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/MediaType (Glossy)&gt;&gt;setpagedevice</tt></td>
1268*5e7646d2SAndroid Build Coastguard Worker</tr>
1269*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1270*5e7646d2SAndroid Build Coastguard Worker	<td><tt>MediaWeight</tt></td>
1271*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1272*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the media weight in grams per meter<sup>2</sup>.</td>
1273*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/MediaWeight 100&gt;&gt;setpagedevice</tt></td>
1274*5e7646d2SAndroid Build Coastguard Worker</tr>
1275*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1276*5e7646d2SAndroid Build Coastguard Worker	<td><tt>MirrorPrint</tt></td>
1277*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1278*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether to flip the output image horizontally.</td>
1279*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/MirrorPrint true&gt;&gt;setpagedevice</tt></td>
1280*5e7646d2SAndroid Build Coastguard Worker</tr>
1281*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1282*5e7646d2SAndroid Build Coastguard Worker	<td><tt>NegativePrint</tt></td>
1283*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1284*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether to invert the output image.</td>
1285*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/NegativePrint true&gt;&gt;setpagedevice</tt></td>
1286*5e7646d2SAndroid Build Coastguard Worker</tr>
1287*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1288*5e7646d2SAndroid Build Coastguard Worker	<td><tt>NumCopies</tt></td>
1289*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1290*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the number of copies to produce of each page.</td>
1291*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/NumCopies 100&gt;&gt;setpagedevice</tt></td>
1292*5e7646d2SAndroid Build Coastguard Worker</tr>
1293*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1294*5e7646d2SAndroid Build Coastguard Worker	<td><tt>Orientation</tt></td>
1295*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1296*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the orientation of the output: 0 = portrait, 1 = landscape rotated counter-clockwise, 2 = upside-down, 3 = landscape rotated clockwise.</td>
1297*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/Orientation 3&gt;&gt;setpagedevice</tt></td>
1298*5e7646d2SAndroid Build Coastguard Worker</tr>
1299*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1300*5e7646d2SAndroid Build Coastguard Worker	<td><tt>OutputFaceUp</tt></td>
1301*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1302*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether to place the media face-up in the output bin/tray.</td>
1303*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/OutputFaceUp true&gt;&gt;setpagedevice</tt></td>
1304*5e7646d2SAndroid Build Coastguard Worker</tr>
1305*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1306*5e7646d2SAndroid Build Coastguard Worker	<td><tt>OutputType</tt></td>
1307*5e7646d2SAndroid Build Coastguard Worker	<td>String</td>
1308*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the output type name.</td>
1309*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/OutputType (Photo)&gt;&gt;setpagedevice</tt></td>
1310*5e7646d2SAndroid Build Coastguard Worker</tr>
1311*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1312*5e7646d2SAndroid Build Coastguard Worker	<td><tt>PageSize</tt></td>
1313*5e7646d2SAndroid Build Coastguard Worker	<td>Integer/Real Array</td>
1314*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the width and length/height of the page in points.</td>
1315*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/PageSize[595 842]&gt;&gt;setpagedevice</tt></td>
1316*5e7646d2SAndroid Build Coastguard Worker</tr>
1317*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1318*5e7646d2SAndroid Build Coastguard Worker	<td><tt>Separations</tt></td>
1319*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1320*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether to produce color separations.</td>
1321*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/Separations true&gt;&gt;setpagedevice</tt></td>
1322*5e7646d2SAndroid Build Coastguard Worker</tr>
1323*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1324*5e7646d2SAndroid Build Coastguard Worker	<td><tt>TraySwitch</tt></td>
1325*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1326*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether to switch trays automatically.</td>
1327*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/TraySwitch true&gt;&gt;setpagedevice</tt></td>
1328*5e7646d2SAndroid Build Coastguard Worker</tr>
1329*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1330*5e7646d2SAndroid Build Coastguard Worker	<td><tt>Tumble</tt></td>
1331*5e7646d2SAndroid Build Coastguard Worker	<td>Boolean</td>
1332*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies whether the back sides of pages are rotated 180 degrees.</td>
1333*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/Tumble true&gt;&gt;setpagedevice</tt></td>
1334*5e7646d2SAndroid Build Coastguard Worker</tr>
1335*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1336*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsBorderlessScalingFactor</tt></td>
1337*5e7646d2SAndroid Build Coastguard Worker	<td>Real</td>
1338*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the amount to scale the page image dimensions.</td>
1339*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsBorderlessScalingFactor 1.01&gt;&gt;setpagedevice</tt></td>
1340*5e7646d2SAndroid Build Coastguard Worker</tr>
1341*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1342*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsColorOrder</tt></td>
1343*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1344*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the order of colors: 0 = chunked, 1 = banded, 2 = planar.</td>
1345*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsColorOrder 0&gt;&gt;setpagedevice</tt></td>
1346*5e7646d2SAndroid Build Coastguard Worker</tr>
1347*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1348*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsColorSpace</tt></td>
1349*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1350*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the page image colorspace: 0 = W, 1 = RGB, 2 = RGBA, 3 = K, 4 = CMY, 5 = YMC, 6 = CMYK, 7 = YMCK, 8 = KCMY, 9 = KCMYcm, 10 = GMCK, 11 = GMCS, 12 = White, 13 = Gold, 14 = Silver, 15 = CIE XYZ, 16 = CIE Lab, 17 = RGBW, 32 to 46 = CIE Lab (1 to 15 inks)</td>
1351*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsColorSpace 1 &gt;&gt;setpagedevice</tt></td>
1352*5e7646d2SAndroid Build Coastguard Worker</tr>
1353*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1354*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsCompression</tt></td>
1355*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1356*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies a driver compression type/mode.</td>
1357*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsCompression 2&gt;&gt;setpagedevice</tt></td>
1358*5e7646d2SAndroid Build Coastguard Worker</tr>
1359*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1360*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsInteger0<br>
1361*5e7646d2SAndroid Build Coastguard Worker	...<br>
1362*5e7646d2SAndroid Build Coastguard Worker	cupsInteger15</tt></td>
1363*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1364*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies driver integer values.</td>
1365*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsInteger11 1234&gt;&gt;setpagedevice</tt></td>
1366*5e7646d2SAndroid Build Coastguard Worker</tr>
1367*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1368*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsMarkerType</tt></td>
1369*5e7646d2SAndroid Build Coastguard Worker	<td>String</td>
1370*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the type of ink/toner to use.</td>
1371*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsMarkerType (Black+Color)&gt;&gt;setpagedevice</tt></td>
1372*5e7646d2SAndroid Build Coastguard Worker</tr>
1373*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1374*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsMediaType</tt></td>
1375*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1376*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies a numeric media type.</td>
1377*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsMediaType 999&gt;&gt;setpagedevice</tt></td>
1378*5e7646d2SAndroid Build Coastguard Worker</tr>
1379*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1380*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsPageSizeName</tt></td>
1381*5e7646d2SAndroid Build Coastguard Worker	<td>String</td>
1382*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the name of the page size.</td>
1383*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsPageSizeName (A4.Full)&gt;&gt;setpagedevice</tt></td>
1384*5e7646d2SAndroid Build Coastguard Worker</tr>
1385*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1386*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsPreferredBitsPerColor</tt></td>
1387*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1388*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the preferred number of bits per color, typically 8 or 16.</td>
1389*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsPreferredBitsPerColor 16&gt;&gt;setpagedevice</tt></td>
1390*5e7646d2SAndroid Build Coastguard Worker</tr>
1391*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1392*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsReal0<br>
1393*5e7646d2SAndroid Build Coastguard Worker	...<br>
1394*5e7646d2SAndroid Build Coastguard Worker	cupsReal15</tt></td>
1395*5e7646d2SAndroid Build Coastguard Worker	<td>Real</td>
1396*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies driver real number values.</td>
1397*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsReal15 1.234&gt;&gt;setpagedevice</tt></td>
1398*5e7646d2SAndroid Build Coastguard Worker</tr>
1399*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1400*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsRenderingIntent</tt></td>
1401*5e7646d2SAndroid Build Coastguard Worker	<td>String</td>
1402*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the color rendering intent.</td>
1403*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsRenderingIntent (AbsoluteColorimetric)&gt;&gt;setpagedevice</tt></td>
1404*5e7646d2SAndroid Build Coastguard Worker</tr>
1405*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1406*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsRowCount</tt></td>
1407*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1408*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the number of rows of raster data to print on each line for some drivers.</td>
1409*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsRowCount 24&gt;&gt;setpagedevice</tt></td>
1410*5e7646d2SAndroid Build Coastguard Worker</tr>
1411*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1412*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsRowFeed</tt></td>
1413*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1414*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the number of rows to feed between passes for some drivers.</td>
1415*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsRowFeed 17&gt;&gt;setpagedevice</tt></td>
1416*5e7646d2SAndroid Build Coastguard Worker</tr>
1417*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1418*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsRowStep</tt></td>
1419*5e7646d2SAndroid Build Coastguard Worker	<td>Integer</td>
1420*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies the number of lines between columns/rows on the print head for some drivers.</td>
1421*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsRowStep 2&gt;&gt;setpagedevice</tt></td>
1422*5e7646d2SAndroid Build Coastguard Worker</tr>
1423*5e7646d2SAndroid Build Coastguard Worker<tr valign='top'>
1424*5e7646d2SAndroid Build Coastguard Worker	<td><tt>cupsString0<br>
1425*5e7646d2SAndroid Build Coastguard Worker	...<br>
1426*5e7646d2SAndroid Build Coastguard Worker	cupsString15</tt></td>
1427*5e7646d2SAndroid Build Coastguard Worker	<td>String</td>
1428*5e7646d2SAndroid Build Coastguard Worker	<td>Specifies driver string values.</td>
1429*5e7646d2SAndroid Build Coastguard Worker	<td><tt>&lt;&lt;/cupsString0(String Value)&gt;&gt;setpagedevice</tt></td>
1430*5e7646d2SAndroid Build Coastguard Worker</tr>
1431*5e7646d2SAndroid Build Coastguard Worker</tbody>
1432*5e7646d2SAndroid Build Coastguard Worker</table></div>
1433*5e7646d2SAndroid Build Coastguard Worker
1434*5e7646d2SAndroid Build Coastguard Worker
1435*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='MEDIA'>Media Keywords</a></h2>
1436*5e7646d2SAndroid Build Coastguard Worker
1437*5e7646d2SAndroid Build Coastguard Worker<p>The CUPS media keywords allow drivers to specify alternate custom page
1438*5e7646d2SAndroid Build Coastguard Workersize limits based on up to two options.</p>
1439*5e7646d2SAndroid Build Coastguard Worker
1440*5e7646d2SAndroid Build Coastguard Worker
1441*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier2'>cupsMediaQualifier2</a></h3>
1442*5e7646d2SAndroid Build Coastguard Worker
1443*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsMediaQualifier2: MainKeyword</p>
1444*5e7646d2SAndroid Build Coastguard Worker
1445*5e7646d2SAndroid Build Coastguard Worker<p>This keyword specifies the second option to use for overriding the
1446*5e7646d2SAndroid Build Coastguard Workercustom page size limits.</p>
1447*5e7646d2SAndroid Build Coastguard Worker
1448*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1449*5e7646d2SAndroid Build Coastguard Worker
1450*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1451*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify alternate custom page size limits based on InputSlot and Quality</em>
1452*5e7646d2SAndroid Build Coastguard Worker*cupsMediaQualifier2: InputSlot
1453*5e7646d2SAndroid Build Coastguard Worker*cupsMediaQualifier3: Quality
1454*5e7646d2SAndroid Build Coastguard Worker*cupsMaxSize .Manual.: "1000 1000"
1455*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Manual.: "100 100"
1456*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Manual.Photo: "200 200"
1457*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize ..Photo: "300 300"
1458*5e7646d2SAndroid Build Coastguard Worker</pre>
1459*5e7646d2SAndroid Build Coastguard Worker
1460*5e7646d2SAndroid Build Coastguard Worker
1461*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier3'>cupsMediaQualifier3</a></h3>
1462*5e7646d2SAndroid Build Coastguard Worker
1463*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsMediaQualifier3: MainKeyword</p>
1464*5e7646d2SAndroid Build Coastguard Worker
1465*5e7646d2SAndroid Build Coastguard Worker<p>This keyword specifies the third option to use for overriding the
1466*5e7646d2SAndroid Build Coastguard Workercustom page size limits.</p>
1467*5e7646d2SAndroid Build Coastguard Worker
1468*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1469*5e7646d2SAndroid Build Coastguard Worker
1470*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1471*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify alternate custom page size limits based on InputSlot and Quality</em>
1472*5e7646d2SAndroid Build Coastguard Worker*cupsMediaQualifier2: InputSlot
1473*5e7646d2SAndroid Build Coastguard Worker*cupsMediaQualifier3: Quality
1474*5e7646d2SAndroid Build Coastguard Worker*cupsMaxSize .Manual.: "1000 1000"
1475*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Manual.: "100 100"
1476*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Manual.Photo: "200 200"
1477*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize ..Photo: "300 300"
1478*5e7646d2SAndroid Build Coastguard Worker</pre>
1479*5e7646d2SAndroid Build Coastguard Worker
1480*5e7646d2SAndroid Build Coastguard Worker
1481*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMinSize'>cupsMinSize</a></h3>
1482*5e7646d2SAndroid Build Coastguard Worker
1483*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsMinSize .Qualifier2.Qualifier3: "width length"<br>
1484*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Qualifier2.: "width length"<br>
1485*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize ..Qualifier3: "width length"</p>
1486*5e7646d2SAndroid Build Coastguard Worker
1487*5e7646d2SAndroid Build Coastguard Worker<p>This keyword specifies alternate minimum custom page sizes in points.
1488*5e7646d2SAndroid Build Coastguard WorkerThe <a href='#cupsMediaQualifier2'><tt>cupsMediaQualifier2</tt></a> and
1489*5e7646d2SAndroid Build Coastguard Worker<a href='#cupsMediaQualifier3'><tt>cupsMediaQualifier3</tt></a> keywords
1490*5e7646d2SAndroid Build Coastguard Workerare used to identify options to use for matching.</p>
1491*5e7646d2SAndroid Build Coastguard Worker
1492*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1493*5e7646d2SAndroid Build Coastguard Worker
1494*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1495*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify alternate custom page size limits based on InputSlot and Quality</em>
1496*5e7646d2SAndroid Build Coastguard Worker*cupsMediaQualifier2: InputSlot
1497*5e7646d2SAndroid Build Coastguard Worker*cupsMediaQualifier3: Quality
1498*5e7646d2SAndroid Build Coastguard Worker*cupsMaxSize .Manual.: "1000 1000"
1499*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Manual.: "100 100"
1500*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Manual.Photo: "200 200"
1501*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize ..Photo: "300 300"
1502*5e7646d2SAndroid Build Coastguard Worker</pre>
1503*5e7646d2SAndroid Build Coastguard Worker
1504*5e7646d2SAndroid Build Coastguard Worker
1505*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMaxSize'>cupsMaxSize</a></h3>
1506*5e7646d2SAndroid Build Coastguard Worker
1507*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsMaxSize .Qualifier2.Qualifier3: "width length"<br>
1508*5e7646d2SAndroid Build Coastguard Worker*cupsMaxSize .Qualifier2.: "width length"<br>
1509*5e7646d2SAndroid Build Coastguard Worker*cupsMaxSize ..Qualifier3: "width length"</p>
1510*5e7646d2SAndroid Build Coastguard Worker
1511*5e7646d2SAndroid Build Coastguard Worker<p>This keyword specifies alternate maximum custom page sizes in points.
1512*5e7646d2SAndroid Build Coastguard WorkerThe <a href='#cupsMediaQualifier2'><tt>cupsMediaQualifier2</tt></a> and
1513*5e7646d2SAndroid Build Coastguard Worker<a href='#cupsMediaQualifier3'><tt>cupsMediaQualifier3</tt></a> keywords
1514*5e7646d2SAndroid Build Coastguard Workerare used to identify options to use for matching.</p>
1515*5e7646d2SAndroid Build Coastguard Worker
1516*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1517*5e7646d2SAndroid Build Coastguard Worker
1518*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1519*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify alternate custom page size limits based on InputSlot and Quality</em>
1520*5e7646d2SAndroid Build Coastguard Worker*cupsMediaQualifier2: InputSlot
1521*5e7646d2SAndroid Build Coastguard Worker*cupsMediaQualifier3: Quality
1522*5e7646d2SAndroid Build Coastguard Worker*cupsMaxSize .Manual.: "1000 1000"
1523*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Manual.: "100 100"
1524*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize .Manual.Photo: "200 200"
1525*5e7646d2SAndroid Build Coastguard Worker*cupsMinSize ..Photo: "300 300"
1526*5e7646d2SAndroid Build Coastguard Worker</pre>
1527*5e7646d2SAndroid Build Coastguard Worker
1528*5e7646d2SAndroid Build Coastguard Worker
1529*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPageSizeCategory'>cupsPageSizeCategory</a></h3>
1530*5e7646d2SAndroid Build Coastguard Worker
1531*5e7646d2SAndroid Build Coastguard Worker<p class="summary">*cupsPageSizeCategory name/text: "name name2 ... nameN"</p>
1532*5e7646d2SAndroid Build Coastguard Worker
1533*5e7646d2SAndroid Build Coastguard Worker<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>
1534*5e7646d2SAndroid Build Coastguard Worker
1535*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1536*5e7646d2SAndroid Build Coastguard Worker
1537*5e7646d2SAndroid Build Coastguard Worker<pre class="command">
1538*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify grouping of borderless/non-borderless sizes</em>
1539*5e7646d2SAndroid Build Coastguard Worker*cupsPageSizeCategory Letter/US Letter: "Letter Letter.Borderless"
1540*5e7646d2SAndroid Build Coastguard Worker*cupsPageSizeCategory A4/A4: "A4 A4.Borderless"
1541*5e7646d2SAndroid Build Coastguard Worker</pre>
1542*5e7646d2SAndroid Build Coastguard Worker
1543*5e7646d2SAndroid Build Coastguard Worker
1544*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='ATTRIBUTES'>General Attributes</a></h2>
1545*5e7646d2SAndroid Build Coastguard Worker
1546*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsBackSide'>cupsBackSide</a></h3>
1547*5e7646d2SAndroid Build Coastguard Worker
1548*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsBackSide: keyword</p>
1549*5e7646d2SAndroid Build Coastguard Worker
1550*5e7646d2SAndroid Build Coastguard Worker<p>This keyword requests special handling of the back side of pages
1551*5e7646d2SAndroid Build Coastguard Workerwhen doing duplexed (2-sided) output. <a href='#TABLE_1'>Table 1</a>
1552*5e7646d2SAndroid Build Coastguard Workershows the supported keyword values for this keyword and their effect
1553*5e7646d2SAndroid Build Coastguard Workeron the raster data sent to your driver. For example, when <tt>cupsBackSide</tt>
1554*5e7646d2SAndroid Build Coastguard Workeris <code>Rotated</code> and <tt>Tumble</tt> is <tt>false</tt>, your driver
1555*5e7646d2SAndroid Build Coastguard Workerwill receive print data starting at the bottom right corner of the page, with
1556*5e7646d2SAndroid Build Coastguard Workereach line going right-to-left instead of left-to-right. The default value is
1557*5e7646d2SAndroid Build Coastguard Worker<code>Normal</code>.</p>
1558*5e7646d2SAndroid Build Coastguard Worker
1559*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
1560*5e7646d2SAndroid Build Coastguard Worker
1561*5e7646d2SAndroid Build Coastguard Worker<p><tt>cupsBackSide</tt> replaces the older <tt>cupsFlipDuplex</tt>
1562*5e7646d2SAndroid Build Coastguard Workerkeyword - if <tt>cupsBackSide</tt> is specified, <tt>cupsFlipDuplex</tt>
1563*5e7646d2SAndroid Build Coastguard Workerwill be ignored.</p>
1564*5e7646d2SAndroid Build Coastguard Worker
1565*5e7646d2SAndroid Build Coastguard Worker</blockquote>
1566*5e7646d2SAndroid Build Coastguard Worker
1567*5e7646d2SAndroid Build Coastguard Worker<div class='table'>
1568*5e7646d2SAndroid Build Coastguard Worker<table width='80%' summary='Back Side Raster Coordinate System'>
1569*5e7646d2SAndroid Build Coastguard Worker<caption>Table 1: <a name='TABLE_1'>Back Side Raster Coordinate System</a></caption>
1570*5e7646d2SAndroid Build Coastguard Worker<thead>
1571*5e7646d2SAndroid Build Coastguard Worker<tr>
1572*5e7646d2SAndroid Build Coastguard Worker	<th>cupsBackSide</th>
1573*5e7646d2SAndroid Build Coastguard Worker	<th>Tumble Value</th>
1574*5e7646d2SAndroid Build Coastguard Worker	<th>Image Presentation</th>
1575*5e7646d2SAndroid Build Coastguard Worker</tr>
1576*5e7646d2SAndroid Build Coastguard Worker</thead>
1577*5e7646d2SAndroid Build Coastguard Worker<tbody>
1578*5e7646d2SAndroid Build Coastguard Worker<tr>
1579*5e7646d2SAndroid Build Coastguard Worker	<td><code>Normal</code></td>
1580*5e7646d2SAndroid Build Coastguard Worker	<td><code>false</code></td>
1581*5e7646d2SAndroid Build Coastguard Worker	<td>Left-to-right, top-to-bottom</td>
1582*5e7646d2SAndroid Build Coastguard Worker</tr>
1583*5e7646d2SAndroid Build Coastguard Worker<tr>
1584*5e7646d2SAndroid Build Coastguard Worker	<td><code>Normal</code></td>
1585*5e7646d2SAndroid Build Coastguard Worker	<td><code>true</code></td>
1586*5e7646d2SAndroid Build Coastguard Worker	<td>Left-to-right, top-to-bottom</td>
1587*5e7646d2SAndroid Build Coastguard Worker</tr>
1588*5e7646d2SAndroid Build Coastguard Worker<tr>
1589*5e7646d2SAndroid Build Coastguard Worker	<td><code>ManualTumble</code></td>
1590*5e7646d2SAndroid Build Coastguard Worker	<td><code>false</code></td>
1591*5e7646d2SAndroid Build Coastguard Worker	<td>Left-to-right, top-to-bottom</td>
1592*5e7646d2SAndroid Build Coastguard Worker</tr>
1593*5e7646d2SAndroid Build Coastguard Worker<tr>
1594*5e7646d2SAndroid Build Coastguard Worker	<td><code>ManualTumble</code></td>
1595*5e7646d2SAndroid Build Coastguard Worker	<td><code>true</code></td>
1596*5e7646d2SAndroid Build Coastguard Worker	<td>Right-to-left, bottom-to-top</td>
1597*5e7646d2SAndroid Build Coastguard Worker</tr>
1598*5e7646d2SAndroid Build Coastguard Worker<tr>
1599*5e7646d2SAndroid Build Coastguard Worker	<td><code>Rotated</code></td>
1600*5e7646d2SAndroid Build Coastguard Worker	<td><code>false</code></td>
1601*5e7646d2SAndroid Build Coastguard Worker	<td>Right-to-left, bottom-to-top</td>
1602*5e7646d2SAndroid Build Coastguard Worker</tr>
1603*5e7646d2SAndroid Build Coastguard Worker<tr>
1604*5e7646d2SAndroid Build Coastguard Worker	<td><code>Rotated</code></td>
1605*5e7646d2SAndroid Build Coastguard Worker	<td><code>true</code></td>
1606*5e7646d2SAndroid Build Coastguard Worker	<td>Right-to-left, top-to-bottom</td>
1607*5e7646d2SAndroid Build Coastguard Worker</tr>
1608*5e7646d2SAndroid Build Coastguard Worker<tr>
1609*5e7646d2SAndroid Build Coastguard Worker	<td><code>Flipped</code> *</td>
1610*5e7646d2SAndroid Build Coastguard Worker	<td><code>false</code></td>
1611*5e7646d2SAndroid Build Coastguard Worker	<td>Left-to-right, bottom-to-top</td>
1612*5e7646d2SAndroid Build Coastguard Worker</tr>
1613*5e7646d2SAndroid Build Coastguard Worker<tr>
1614*5e7646d2SAndroid Build Coastguard Worker	<td><code>Flipped</code> *</td>
1615*5e7646d2SAndroid Build Coastguard Worker	<td><code>true</code></td>
1616*5e7646d2SAndroid Build Coastguard Worker	<td>Right-to-left, top-to-bottom</td>
1617*5e7646d2SAndroid Build Coastguard Worker</tr>
1618*5e7646d2SAndroid Build Coastguard Worker</tbody>
1619*5e7646d2SAndroid Build Coastguard Worker</table>
1620*5e7646d2SAndroid Build Coastguard Worker</div>
1621*5e7646d2SAndroid Build Coastguard Worker
1622*5e7646d2SAndroid Build Coastguard Worker<p><em>* - Not supported in macOS 10.5.x and earlier</em></p>
1623*5e7646d2SAndroid Build Coastguard Worker
1624*5e7646d2SAndroid Build Coastguard Worker<div class='figure'><table summary='Back side images'>
1625*5e7646d2SAndroid Build Coastguard Worker<caption>Figure 1: Back side images</caption>
1626*5e7646d2SAndroid Build Coastguard Worker<tr><td><img src='../images/raster.png' width='624' height='448' alt='Back side images'></td></tr>
1627*5e7646d2SAndroid Build Coastguard Worker</table></div>
1628*5e7646d2SAndroid Build Coastguard Worker
1629*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1630*5e7646d2SAndroid Build Coastguard Worker
1631*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1632*5e7646d2SAndroid Build Coastguard Worker<em>*% Flip the page image for the back side of duplexed output</em>
1633*5e7646d2SAndroid Build Coastguard Worker*cupsBackSide: Flipped
1634*5e7646d2SAndroid Build Coastguard Worker
1635*5e7646d2SAndroid Build Coastguard Worker<em>*% Rotate the page image for the back side of duplexed output</em>
1636*5e7646d2SAndroid Build Coastguard Worker*cupsBackSide: Rotated
1637*5e7646d2SAndroid Build Coastguard Worker</pre>
1638*5e7646d2SAndroid Build Coastguard Worker
1639*5e7646d2SAndroid Build Coastguard Worker<p>Also see the related <a href='#APDuplexRequiresFlippedMargin'><tt>APDuplexRequiresFlippedMargin</tt></a>
1640*5e7646d2SAndroid Build Coastguard Workerkeyword.</p>
1641*5e7646d2SAndroid Build Coastguard Worker
1642*5e7646d2SAndroid Build Coastguard Worker
1643*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsCommands'>cupsCommands</a></h3>
1644*5e7646d2SAndroid Build Coastguard Worker
1645*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsCommands: "name name2 ... nameN"</p>
1646*5e7646d2SAndroid Build Coastguard Worker
1647*5e7646d2SAndroid Build Coastguard Worker<p>This string keyword specifies the commands that are supported by the
1648*5e7646d2SAndroid Build Coastguard WorkerCUPS command file filter for this device. The command names are separated
1649*5e7646d2SAndroid Build Coastguard Workerby whitespace.</p>
1650*5e7646d2SAndroid Build Coastguard Worker
1651*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1652*5e7646d2SAndroid Build Coastguard Worker
1653*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1654*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify the list of commands we support</em>
1655*5e7646d2SAndroid Build Coastguard Worker*cupsCommands: "AutoConfigure Clean PrintSelfTestPage ReportLevels com.vendor.foo"
1656*5e7646d2SAndroid Build Coastguard Worker</pre>
1657*5e7646d2SAndroid Build Coastguard Worker
1658*5e7646d2SAndroid Build Coastguard Worker
1659*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsEvenDuplex'>cupsEvenDuplex</a></h3>
1660*5e7646d2SAndroid Build Coastguard Worker
1661*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsEvenDuplex: boolean</p>
1662*5e7646d2SAndroid Build Coastguard Worker
1663*5e7646d2SAndroid Build Coastguard Worker<p>This boolean keyword notifies the RIP filters that the
1664*5e7646d2SAndroid Build Coastguard Workerdestination printer requires an even number of pages when 2-sided
1665*5e7646d2SAndroid Build Coastguard Workerprinting is selected. The default value is <code>false</code>.</p>
1666*5e7646d2SAndroid Build Coastguard Worker
1667*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1668*5e7646d2SAndroid Build Coastguard Worker
1669*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1670*5e7646d2SAndroid Build Coastguard Worker<em>*% Always send an even number of pages when duplexing</em>
1671*5e7646d2SAndroid Build Coastguard Worker*cupsEvenDuplex: true
1672*5e7646d2SAndroid Build Coastguard Worker</pre>
1673*5e7646d2SAndroid Build Coastguard Worker
1674*5e7646d2SAndroid Build Coastguard Worker
1675*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><a name='cupsFax'>cupsFax</a></h3>
1676*5e7646d2SAndroid Build Coastguard Worker
1677*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsFax: boolean</p>
1678*5e7646d2SAndroid Build Coastguard Worker
1679*5e7646d2SAndroid Build Coastguard Worker<p>This boolean keyword specifies whether the PPD defines a facsimile device. The default is <tt>false</tt>.</p>
1680*5e7646d2SAndroid Build Coastguard Worker
1681*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1682*5e7646d2SAndroid Build Coastguard Worker
1683*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1684*5e7646d2SAndroid Build Coastguard Worker*cupsFax: true
1685*5e7646d2SAndroid Build Coastguard Worker</pre>
1686*5e7646d2SAndroid Build Coastguard Worker
1687*5e7646d2SAndroid Build Coastguard Worker
1688*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><a name='cupsFilter'>cupsFilter</a></h3>
1689*5e7646d2SAndroid Build Coastguard Worker
1690*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsFilter: "source/type cost program"</p>
1691*5e7646d2SAndroid Build Coastguard Worker
1692*5e7646d2SAndroid Build Coastguard Worker<p>This string keyword provides a conversion rule from the
1693*5e7646d2SAndroid Build Coastguard Workergiven source type to the printer's native format using the
1694*5e7646d2SAndroid Build Coastguard Workerfilter "program". If a printer supports the source type directly,
1695*5e7646d2SAndroid Build Coastguard Workerthe special filter program "-" may be specified.</p>
1696*5e7646d2SAndroid Build Coastguard Worker
1697*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1698*5e7646d2SAndroid Build Coastguard Worker
1699*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1700*5e7646d2SAndroid Build Coastguard Worker<em>*% Standard raster printer driver filter</em>
1701*5e7646d2SAndroid Build Coastguard Worker*cupsFilter: "application/vnd.cups-raster 100 rastertofoo"
1702*5e7646d2SAndroid Build Coastguard Worker
1703*5e7646d2SAndroid Build Coastguard Worker<em>*% Plain text filter</em>
1704*5e7646d2SAndroid Build Coastguard Worker*cupsFilter: "text/plain 10 texttofoo"
1705*5e7646d2SAndroid Build Coastguard Worker
1706*5e7646d2SAndroid Build Coastguard Worker<em>*% Pass-through filter for PostScript printers</em>
1707*5e7646d2SAndroid Build Coastguard Worker*cupsFilter: "application/vnd.cups-postscript 0 -"
1708*5e7646d2SAndroid Build Coastguard Worker</pre>
1709*5e7646d2SAndroid Build Coastguard Worker
1710*5e7646d2SAndroid Build Coastguard Worker
1711*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.5</span><a name='cupsFilter2'>cupsFilter2</a></h3>
1712*5e7646d2SAndroid Build Coastguard Worker
1713*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsFilter2: "source/type destination/type cost program"</p>
1714*5e7646d2SAndroid Build Coastguard Worker
1715*5e7646d2SAndroid Build Coastguard Worker<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>
1716*5e7646d2SAndroid Build Coastguard Worker
1717*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
1718*5e7646d2SAndroid Build Coastguard Worker
1719*5e7646d2SAndroid Build Coastguard Worker<p>The presence of a single <code>cupsFilter2</code> keyword in the PPD file will hide any <code>cupsFilter</code> keywords from the CUPS scheduler. When using <code>cupsFilter2</code> to provide filters specific for CUPS 1.5 and later, provide a <code>cupsFilter2</code> line for every filter and a <code>cupsFilter</code> line for each filter that is compatible with older versions of CUPS.</p>
1720*5e7646d2SAndroid Build Coastguard Worker
1721*5e7646d2SAndroid Build Coastguard Worker</blockquote>
1722*5e7646d2SAndroid Build Coastguard Worker
1723*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1724*5e7646d2SAndroid Build Coastguard Worker
1725*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1726*5e7646d2SAndroid Build Coastguard Worker<em>*% Standard raster printer driver filter</em>
1727*5e7646d2SAndroid Build Coastguard Worker*cupsFilter2: "application/vnd.cups-raster application/vnd.foo 100 rastertofoo"
1728*5e7646d2SAndroid Build Coastguard Worker
1729*5e7646d2SAndroid Build Coastguard Worker<em>*% Plain text filter</em>
1730*5e7646d2SAndroid Build Coastguard Worker*cupsFilter2: "text/plain application/vnd.foo 10 texttofoo"
1731*5e7646d2SAndroid Build Coastguard Worker
1732*5e7646d2SAndroid Build Coastguard Worker<em>*% Pass-through filter for PostScript printers</em>
1733*5e7646d2SAndroid Build Coastguard Worker*cupsFilter2: "application/vnd.cups-postscript application/postscript 0 -"
1734*5e7646d2SAndroid Build Coastguard Worker</pre>
1735*5e7646d2SAndroid Build Coastguard Worker
1736*5e7646d2SAndroid Build Coastguard Worker
1737*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 2.3</span><a name='cupsFinishingTemplate'>cupsFinishingTemplate</a></h3>
1738*5e7646d2SAndroid Build Coastguard Worker
1739*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsFinishingTemplate name/text: ""</p>
1740*5e7646d2SAndroid Build Coastguard Worker
1741*5e7646d2SAndroid Build Coastguard Worker<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>
1742*5e7646d2SAndroid Build Coastguard Worker
1743*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1744*5e7646d2SAndroid Build Coastguard Worker
1745*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1746*5e7646d2SAndroid Build Coastguard Worker*cupsFinishingTemplate none/None: ""
1747*5e7646d2SAndroid Build Coastguard Worker*cupsFinishingTemplate fold/Letter Fold: ""
1748*5e7646d2SAndroid Build Coastguard Worker*cupsFinishingTemplate punch/2/3-Hole Punch: ""
1749*5e7646d2SAndroid Build Coastguard Worker*cupsFinishingTemplate staple/Corner Staple: ""
1750*5e7646d2SAndroid Build Coastguard Worker*cupsFinishingTemplate staple-dual/Double Staple: ""
1751*5e7646d2SAndroid Build Coastguard Worker*cupsFinishingTemplate staple-and-fold/Corner Staple and Letter Fold: ""
1752*5e7646d2SAndroid Build Coastguard Worker*cupsFinishingTemplate staple-and-punch/Corner Staple and 2/3-Hole Punch: ""
1753*5e7646d2SAndroid Build Coastguard Worker</pre>
1754*5e7646d2SAndroid Build Coastguard Worker
1755*5e7646d2SAndroid Build Coastguard Worker
1756*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>Deprecated</span><a name='cupsFlipDuplex'>cupsFlipDuplex</a></h3>
1757*5e7646d2SAndroid Build Coastguard Worker
1758*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsFlipDuplex: boolean</p>
1759*5e7646d2SAndroid Build Coastguard Worker
1760*5e7646d2SAndroid Build Coastguard Worker<p>Due to implementation differences between macOS and Ghostscript,
1761*5e7646d2SAndroid Build Coastguard Workerthe <tt>cupsFlipDuplex</tt> keyword is deprecated. Instead, use
1762*5e7646d2SAndroid Build Coastguard Workerthe <a href='#cupsBackSide'><tt>cupsBackSide</tt></a> keyword to specify
1763*5e7646d2SAndroid Build Coastguard Workerthe coordinate system (pixel layout) of the page data on the back side of
1764*5e7646d2SAndroid Build Coastguard Workerduplex pages.</p>
1765*5e7646d2SAndroid Build Coastguard Worker
1766*5e7646d2SAndroid Build Coastguard Worker<p>The value <code>true</code> maps to a <tt>cupsBackSide</tt> value
1767*5e7646d2SAndroid Build Coastguard Workerof <code>Rotated</code> on macOS and <code>Flipped</code> with
1768*5e7646d2SAndroid Build Coastguard WorkerGhostscript.</p>
1769*5e7646d2SAndroid Build Coastguard Worker
1770*5e7646d2SAndroid Build Coastguard Worker<p>The default value is <code>false</code>.</p>
1771*5e7646d2SAndroid Build Coastguard Worker
1772*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
1773*5e7646d2SAndroid Build Coastguard Worker
1774*5e7646d2SAndroid Build Coastguard Worker<p>macOS drivers that previously used
1775*5e7646d2SAndroid Build Coastguard Worker<tt>cupsFlipDuplex</tt> may wish to provide both the old and
1776*5e7646d2SAndroid Build Coastguard Workernew keywords for maximum compatibility, for example:</p>
1777*5e7646d2SAndroid Build Coastguard Worker
1778*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1779*5e7646d2SAndroid Build Coastguard Worker*cupsBackSide: Rotated
1780*5e7646d2SAndroid Build Coastguard Worker*cupsFlipDuplex: true
1781*5e7646d2SAndroid Build Coastguard Worker</pre>
1782*5e7646d2SAndroid Build Coastguard Worker
1783*5e7646d2SAndroid Build Coastguard Worker<p>Similarly, drivers written for other operating systems using
1784*5e7646d2SAndroid Build Coastguard WorkerGhostscript can use:</p>
1785*5e7646d2SAndroid Build Coastguard Worker
1786*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1787*5e7646d2SAndroid Build Coastguard Worker*cupsBackSide: Flipped
1788*5e7646d2SAndroid Build Coastguard Worker*cupsFlipDuplex: true
1789*5e7646d2SAndroid Build Coastguard Worker</pre></blockquote>
1790*5e7646d2SAndroid Build Coastguard Worker
1791*5e7646d2SAndroid Build Coastguard Worker
1792*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPFinishings'>cupsIPPFinishings</a></h3>
1793*5e7646d2SAndroid Build Coastguard Worker
1794*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsIPPFinishings number/text: "*Option Choice ..."</p>
1795*5e7646d2SAndroid Build Coastguard Worker
1796*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines a mapping from IPP <code>finishings</code>
1797*5e7646d2SAndroid Build Coastguard Workervalues to PPD options and choices.</p>
1798*5e7646d2SAndroid Build Coastguard Worker
1799*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1800*5e7646d2SAndroid Build Coastguard Worker
1801*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1802*5e7646d2SAndroid Build Coastguard Worker*cupsIPPFinishings 4/staple: "*StapleLocation SinglePortrait"
1803*5e7646d2SAndroid Build Coastguard Worker*cupsIPPFinishings 5/punch: "*PunchMedia Yes *PunchLocation LeftSide"
1804*5e7646d2SAndroid Build Coastguard Worker*cupsIPPFinishings 20/staple-top-left: "*StapleLocation SinglePortrait"
1805*5e7646d2SAndroid Build Coastguard Worker*cupsIPPFinishings 21/staple-bottom-left: "*StapleLocation SingleLandscape"
1806*5e7646d2SAndroid Build Coastguard Worker</pre>
1807*5e7646d2SAndroid Build Coastguard Worker
1808*5e7646d2SAndroid Build Coastguard Worker
1809*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPReason'>cupsIPPReason</a></h3>
1810*5e7646d2SAndroid Build Coastguard Worker
1811*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsIPPReason reason/Reason Text: "optional URIs"</p>
1812*5e7646d2SAndroid Build Coastguard Worker
1813*5e7646d2SAndroid Build Coastguard Worker<p>This optional keyword maps custom
1814*5e7646d2SAndroid Build Coastguard Worker<code>printer-state-reasons</code> keywords that are generated by
1815*5e7646d2SAndroid Build Coastguard Workerthe driver to human readable text. The optional URIs string
1816*5e7646d2SAndroid Build Coastguard Workercontains zero or more URIs separated by a newline. Each URI can
1817*5e7646d2SAndroid Build Coastguard Workerbe a CUPS server absolute path to a help file under the
1818*5e7646d2SAndroid Build Coastguard Workerscheduler's <code>DocumentRoot</code> directory, a full HTTP URL
1819*5e7646d2SAndroid Build Coastguard Worker("http://www.domain.com/path/to/help/page.html"), or any other
1820*5e7646d2SAndroid Build Coastguard Workervalid URI which directs the user at additional information
1821*5e7646d2SAndroid Build Coastguard Workerconcerning the condition that is being reported.</p>
1822*5e7646d2SAndroid Build Coastguard Worker
1823*5e7646d2SAndroid Build Coastguard Worker<p>Since the reason text is limited to 80 characters by the PPD specification, longer text strings can be included by URI-encoding the text with the "text" scheme, for example "text:some%20text". Multiple <code>text</code> URIs are combined by the <tt>ppdLocalizeIPPReason</tt> into a single string that can be displayed to the user.</p>
1824*5e7646d2SAndroid Build Coastguard Worker
1825*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1826*5e7646d2SAndroid Build Coastguard Worker
1827*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1828*5e7646d2SAndroid Build Coastguard Worker<em>*% Map com.vendor-error to text but no page</em>
1829*5e7646d2SAndroid Build Coastguard Worker*cupsIPPReason com.vendor-error/A serious error occurred: ""
1830*5e7646d2SAndroid Build Coastguard Worker
1831*5e7646d2SAndroid Build Coastguard Worker<em>*% Map com.vendor-error to more than 80 characters of text but no page</em>
1832*5e7646d2SAndroid Build Coastguard Worker*cupsIPPReason com.vendor-error/A serious error occurred: "text:Now%20is%20the%20time
1833*5e7646d2SAndroid Build Coastguard Workertext:for%20all%20good%20men%20to%20come%20to%20the%20aid%20of%20their%20country."
1834*5e7646d2SAndroid Build Coastguard Worker
1835*5e7646d2SAndroid Build Coastguard Worker<em>*% Map com.vendor-error to text and a local page</em>
1836*5e7646d2SAndroid Build Coastguard Worker*cupsIPPReason com.vendor-error/A serious error occurred: "/help/com.vendor/error.html"
1837*5e7646d2SAndroid Build Coastguard Worker
1838*5e7646d2SAndroid Build Coastguard Worker<em>*% Map com.vendor-error to text and a remote page</em>
1839*5e7646d2SAndroid Build Coastguard Worker*cupsIPPReason com.vendor-error/A serious error occurred: "http://www.vendor.com/help"
1840*5e7646d2SAndroid Build Coastguard Worker
1841*5e7646d2SAndroid Build Coastguard Worker<em>*% Map com.vendor-error to text and a local, Apple help book, and remote page</em>
1842*5e7646d2SAndroid Build Coastguard Worker*APHelpBook: "file:///Library/Printers/vendor/Help.bundle"
1843*5e7646d2SAndroid Build Coastguard Worker*cupsIPPReason com.vendor-error/A serious error occurred: "/help/com.vendor/error.html
1844*5e7646d2SAndroid Build Coastguard Workerhelp:anchor='com.vendor-error'%20bookID=Vendor%20Help
1845*5e7646d2SAndroid Build Coastguard Workerhttp://www.vendor.com/help"
1846*5e7646d2SAndroid Build Coastguard Worker*End
1847*5e7646d2SAndroid Build Coastguard Worker</pre>
1848*5e7646d2SAndroid Build Coastguard Worker
1849*5e7646d2SAndroid Build Coastguard Worker
1850*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.5</span><a name='cupsIPPSupplies'>cupsIPPSupplies</a></h3>
1851*5e7646d2SAndroid Build Coastguard Worker
1852*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsIPPSupplies: boolean</p>
1853*5e7646d2SAndroid Build Coastguard Worker
1854*5e7646d2SAndroid Build Coastguard Worker<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>.
1855*5e7646d2SAndroid Build Coastguard Worker
1856*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1857*5e7646d2SAndroid Build Coastguard Worker
1858*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1859*5e7646d2SAndroid Build Coastguard Worker<em>*% Do not use IPP marker-xxx attributes to report supply levels</em>
1860*5e7646d2SAndroid Build Coastguard Worker*cupsIPPSupplies: False
1861*5e7646d2SAndroid Build Coastguard Worker</pre>
1862*5e7646d2SAndroid Build Coastguard Worker
1863*5e7646d2SAndroid Build Coastguard Worker
1864*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountId'>cupsJobAccountId</a></h3>
1865*5e7646d2SAndroid Build Coastguard Worker
1866*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsJobAccountId: boolean</p>
1867*5e7646d2SAndroid Build Coastguard Worker
1868*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines whether the printer accepts the job-account-id IPP attribute.</p>
1869*5e7646d2SAndroid Build Coastguard Worker
1870*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1871*5e7646d2SAndroid Build Coastguard Worker
1872*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1873*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify the printer accepts the job-account-id IPP attribute.</em>
1874*5e7646d2SAndroid Build Coastguard Worker*cupsJobAccountId: True
1875*5e7646d2SAndroid Build Coastguard Worker</pre>
1876*5e7646d2SAndroid Build Coastguard Worker
1877*5e7646d2SAndroid Build Coastguard Worker
1878*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountingUserId'>cupsJobAccountingUserId</a></h3>
1879*5e7646d2SAndroid Build Coastguard Worker
1880*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsJobAccountingUserId: boolean</p>
1881*5e7646d2SAndroid Build Coastguard Worker
1882*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines whether the printer accepts the job-accounting-user-id IPP attribute.</p>
1883*5e7646d2SAndroid Build Coastguard Worker
1884*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1885*5e7646d2SAndroid Build Coastguard Worker
1886*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1887*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify the printer accepts the job-accounting-user-id IPP attribute.</em>
1888*5e7646d2SAndroid Build Coastguard Worker*cupsJobAccountingUserId: True
1889*5e7646d2SAndroid Build Coastguard Worker</pre>
1890*5e7646d2SAndroid Build Coastguard Worker
1891*5e7646d2SAndroid Build Coastguard Worker
1892*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobPassword'>cupsJobPassword</a></h3>
1893*5e7646d2SAndroid Build Coastguard Worker
1894*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsJobPassword: "format"</p>
1895*5e7646d2SAndroid Build Coastguard Worker
1896*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines the format of the "job-password" IPP attribute, if supported by the printer. The following format characters are supported:</p>
1897*5e7646d2SAndroid Build Coastguard Worker
1898*5e7646d2SAndroid Build Coastguard Worker<ul>
1899*5e7646d2SAndroid Build Coastguard Worker	<li><code>1</code>: US ASCII digits.</li>
1900*5e7646d2SAndroid Build Coastguard Worker	<li><code>A</code>: US ASCII letters.</li>
1901*5e7646d2SAndroid Build Coastguard Worker	<li><code>C</code>: US ASCII letters, numbers, and punctuation.</li>
1902*5e7646d2SAndroid Build Coastguard Worker	<li><code>.</code>: Any US ASCII printable character (0x20 to 0x7e).</li>
1903*5e7646d2SAndroid Build Coastguard Worker	<li><code>N</code>: Any Unicode digit character.</li>
1904*5e7646d2SAndroid Build Coastguard Worker	<li><code>U</code>: Any Unicode letter character.</li>
1905*5e7646d2SAndroid Build Coastguard Worker	<li><code>*</code>: Any Unicode (utf-8) character.</li>
1906*5e7646d2SAndroid Build Coastguard Worker</ul>
1907*5e7646d2SAndroid Build Coastguard Worker
1908*5e7646d2SAndroid Build Coastguard Worker<p>The format characters are repeated to indicate the length of the
1909*5e7646d2SAndroid Build Coastguard Workerpassword string.  For example, "1111" indicated a 4-digit US ASCII PIN code.</p>
1910*5e7646d2SAndroid Build Coastguard Worker
1911*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1912*5e7646d2SAndroid Build Coastguard Worker
1913*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1914*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify the printer supports 4-digit PIN codes.</em>
1915*5e7646d2SAndroid Build Coastguard Worker*cupsJobPassword: "1111"
1916*5e7646d2SAndroid Build Coastguard Worker</pre>
1917*5e7646d2SAndroid Build Coastguard Worker
1918*5e7646d2SAndroid Build Coastguard Worker
1919*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsLanguages'>cupsLanguages</a></h3>
1920*5e7646d2SAndroid Build Coastguard Worker
1921*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsLanguages: "locale list"</p>
1922*5e7646d2SAndroid Build Coastguard Worker
1923*5e7646d2SAndroid Build Coastguard Worker<p>This keyword describes which language localizations are
1924*5e7646d2SAndroid Build Coastguard Workerincluded in the PPD. The "locale list" string is a space-delimited
1925*5e7646d2SAndroid Build Coastguard Workerlist of locale names ("en", "en_US", "fr_CA", etc.)</p>
1926*5e7646d2SAndroid Build Coastguard Worker
1927*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1928*5e7646d2SAndroid Build Coastguard Worker
1929*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1930*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify Canadian, UK, and US English, and Canadian and French French</em>
1931*5e7646d2SAndroid Build Coastguard Worker*cupsLanguages: "en_CA en_UK en_US fr_CA fr_FR"
1932*5e7646d2SAndroid Build Coastguard Worker</pre>
1933*5e7646d2SAndroid Build Coastguard Worker
1934*5e7646d2SAndroid Build Coastguard Worker
1935*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsMandatory'>cupsMandatory</a></h3>
1936*5e7646d2SAndroid Build Coastguard Worker
1937*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsMandatory: "attribute1 attribute2 ... attributeN"</p>
1938*5e7646d2SAndroid Build Coastguard Worker
1939*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines a list of IPP attributes that must be provided when submitting a print job creation request.</p>
1940*5e7646d2SAndroid Build Coastguard Worker
1941*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1942*5e7646d2SAndroid Build Coastguard Worker
1943*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1944*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify that the user must supply a job-password</em>
1945*5e7646d2SAndroid Build Coastguard Worker*cupsMandatory: "job-password job-password-encryption"
1946*5e7646d2SAndroid Build Coastguard Worker</pre>
1947*5e7646d2SAndroid Build Coastguard Worker
1948*5e7646d2SAndroid Build Coastguard Worker
1949*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><a name='cupsManualCopies'>cupsManualCopies</a></h3>
1950*5e7646d2SAndroid Build Coastguard Worker
1951*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsManualCopies: boolean</p>
1952*5e7646d2SAndroid Build Coastguard Worker
1953*5e7646d2SAndroid Build Coastguard Worker<p>This boolean keyword notifies the RIP filters that the
1954*5e7646d2SAndroid Build Coastguard Workerdestination printer does not support copy generation in
1955*5e7646d2SAndroid Build Coastguard Workerhardware. The default value is <code>false</code>.</p>
1956*5e7646d2SAndroid Build Coastguard Worker
1957*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
1958*5e7646d2SAndroid Build Coastguard Worker
1959*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1960*5e7646d2SAndroid Build Coastguard Worker<em>*% Tell the RIP filters to generate the copies for us</em>
1961*5e7646d2SAndroid Build Coastguard Worker*cupsManualCopies: true
1962*5e7646d2SAndroid Build Coastguard Worker</pre>
1963*5e7646d2SAndroid Build Coastguard Worker
1964*5e7646d2SAndroid Build Coastguard Worker
1965*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerName'>cupsMarkerName</a></h3>
1966*5e7646d2SAndroid Build Coastguard Worker
1967*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsMarkerName/Name Text: ""</p>
1968*5e7646d2SAndroid Build Coastguard Worker
1969*5e7646d2SAndroid Build Coastguard Worker<p>This optional keyword maps <code>marker-names</code> strings that are
1970*5e7646d2SAndroid Build Coastguard Workergenerated by the driver to human readable text.</p>
1971*5e7646d2SAndroid Build Coastguard Worker
1972*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1973*5e7646d2SAndroid Build Coastguard Worker
1974*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1975*5e7646d2SAndroid Build Coastguard Worker<em>*% Map cyanToner to "Cyan Toner"</em>
1976*5e7646d2SAndroid Build Coastguard Worker*cupsMarkerName cyanToner/Cyan Toner: ""
1977*5e7646d2SAndroid Build Coastguard Worker</pre>
1978*5e7646d2SAndroid Build Coastguard Worker
1979*5e7646d2SAndroid Build Coastguard Worker
1980*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerNotice'>cupsMarkerNotice</a></h3>
1981*5e7646d2SAndroid Build Coastguard Worker
1982*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsMarkerNotice: "disclaimer text"</p>
1983*5e7646d2SAndroid Build Coastguard Worker
1984*5e7646d2SAndroid Build Coastguard Worker<p>This optional keyword provides disclaimer text for the supply level
1985*5e7646d2SAndroid Build Coastguard Workerinformation provided by the driver, typically something like "supply levels
1986*5e7646d2SAndroid Build Coastguard Workerare approximate".</p>
1987*5e7646d2SAndroid Build Coastguard Worker
1988*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
1989*5e7646d2SAndroid Build Coastguard Worker
1990*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
1991*5e7646d2SAndroid Build Coastguard Worker*cupsMarkerNotice: "Supply levels are approximate."
1992*5e7646d2SAndroid Build Coastguard Worker</pre>
1993*5e7646d2SAndroid Build Coastguard Worker
1994*5e7646d2SAndroid Build Coastguard Worker
1995*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.6/macOS 10.8</span><a name='cupsMaxCopies'>cupsMaxCopies</a></h3>
1996*5e7646d2SAndroid Build Coastguard Worker
1997*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsMaxCopies: integer</p>
1998*5e7646d2SAndroid Build Coastguard Worker
1999*5e7646d2SAndroid Build Coastguard Worker<p>This integer keyword notifies the filters that the destination printer supports up to N copies in hardware. The default value is <code>9999</code>.</p>
2000*5e7646d2SAndroid Build Coastguard Worker
2001*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
2002*5e7646d2SAndroid Build Coastguard Worker
2003*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2004*5e7646d2SAndroid Build Coastguard Worker<em>*% Tell the RIP filters we can do up to 99 copies</em>
2005*5e7646d2SAndroid Build Coastguard Worker*cupsMaxCopies: 99
2006*5e7646d2SAndroid Build Coastguard Worker</pre>
2007*5e7646d2SAndroid Build Coastguard Worker
2008*5e7646d2SAndroid Build Coastguard Worker
2009*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><a name='cupsModelNumber'>cupsModelNumber</a></h3>
2010*5e7646d2SAndroid Build Coastguard Worker
2011*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsModelNumber: number</p>
2012*5e7646d2SAndroid Build Coastguard Worker
2013*5e7646d2SAndroid Build Coastguard Worker<p>This integer keyword specifies a printer-specific model
2014*5e7646d2SAndroid Build Coastguard Workernumber. This number can be used by a filter program to adjust
2015*5e7646d2SAndroid Build Coastguard Workerthe output for a specific model of printer.</p>
2016*5e7646d2SAndroid Build Coastguard Worker
2017*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
2018*5e7646d2SAndroid Build Coastguard Worker
2019*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2020*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify an integer for a driver-specific model number</em>
2021*5e7646d2SAndroid Build Coastguard Worker*cupsModelNumber: 1234
2022*5e7646d2SAndroid Build Coastguard Worker</pre>
2023*5e7646d2SAndroid Build Coastguard Worker
2024*5e7646d2SAndroid Build Coastguard Worker
2025*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPJLCharset'>cupsPJLCharset</a></h3>
2026*5e7646d2SAndroid Build Coastguard Worker
2027*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsPJLCharset: "ISO character set name"</p>
2028*5e7646d2SAndroid Build Coastguard Worker
2029*5e7646d2SAndroid Build Coastguard Worker<p>This string keyword specifies the character set that is used
2030*5e7646d2SAndroid Build Coastguard Workerfor strings in PJL commands. If not specified, US-ASCII is
2031*5e7646d2SAndroid Build Coastguard Workerassumed.</p>
2032*5e7646d2SAndroid Build Coastguard Worker
2033*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
2034*5e7646d2SAndroid Build Coastguard Worker
2035*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2036*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify UTF-8 is used in PJL strings</em>
2037*5e7646d2SAndroid Build Coastguard Worker*cupsPJLCharset: "UTF-8"
2038*5e7646d2SAndroid Build Coastguard Worker</pre>
2039*5e7646d2SAndroid Build Coastguard Worker
2040*5e7646d2SAndroid Build Coastguard Worker
2041*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPJLDisplay'>cupsPJLDisplay</a></h3>
2042*5e7646d2SAndroid Build Coastguard Worker
2043*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsPJLDisplay: "what"</p>
2044*5e7646d2SAndroid Build Coastguard Worker
2045*5e7646d2SAndroid Build Coastguard Worker<p>This optional keyword specifies which command is used to display the
2046*5e7646d2SAndroid Build Coastguard Workerjob ID, name, and user on the printer's control panel. "What" is either "none"
2047*5e7646d2SAndroid Build Coastguard Workerto disable this functionality, "job" to use "@PJL JOB DISPLAY", or "rdymsg"
2048*5e7646d2SAndroid Build Coastguard Workerto use "@PJL RDYMSG DISPLAY". The default is "job".</p>
2049*5e7646d2SAndroid Build Coastguard Worker
2050*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2051*5e7646d2SAndroid Build Coastguard Worker
2052*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2053*5e7646d2SAndroid Build Coastguard Worker<em>*% Display job information using @PJL SET RDYMSG DISPLAY="foo"</em>
2054*5e7646d2SAndroid Build Coastguard Worker*cupsPJLDisplay: "rdymsg"
2055*5e7646d2SAndroid Build Coastguard Worker
2056*5e7646d2SAndroid Build Coastguard Worker<em>*% Display job information display</em>
2057*5e7646d2SAndroid Build Coastguard Worker*cupsPJLDisplay: "none"
2058*5e7646d2SAndroid Build Coastguard Worker</pre>
2059*5e7646d2SAndroid Build Coastguard Worker
2060*5e7646d2SAndroid Build Coastguard Worker
2061*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsPortMonitor'>cupsPortMonitor</a></h3>
2062*5e7646d2SAndroid Build Coastguard Worker
2063*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsPortMonitor urischeme/Descriptive Text: "port monitor"</p>
2064*5e7646d2SAndroid Build Coastguard Worker
2065*5e7646d2SAndroid Build Coastguard Worker<p>This string keyword specifies printer-specific "port
2066*5e7646d2SAndroid Build Coastguard Workermonitor" filters that may be used with the printer. The CUPS
2067*5e7646d2SAndroid Build Coastguard Workerscheduler also looks for the <tt>Protocols</tt> keyword to see
2068*5e7646d2SAndroid Build Coastguard Workerif the <tt>BCP</tt> or <tt>TBCP</tt> protocols are supported. If
2069*5e7646d2SAndroid Build Coastguard Workerso, the corresponding port monitor ("bcp" and "tbcp",
2070*5e7646d2SAndroid Build Coastguard Workerrespectively) is listed in the printer's
2071*5e7646d2SAndroid Build Coastguard Worker<tt>port-monitor-supported</tt> keyword.</p>
2072*5e7646d2SAndroid Build Coastguard Worker
2073*5e7646d2SAndroid Build Coastguard Worker<p>The "urischeme" portion of the keyword specifies the URI scheme
2074*5e7646d2SAndroid Build Coastguard Workerthat this port monitor should be used for. Typically this is used to
2075*5e7646d2SAndroid Build Coastguard Workerpre-select a particular port monitor for each type of connection that
2076*5e7646d2SAndroid Build Coastguard Workeris supported by the printer. The "port monitor" string can be "none"
2077*5e7646d2SAndroid Build Coastguard Workerto disable the port monitor for the given URI scheme.</p>
2078*5e7646d2SAndroid Build Coastguard Worker
2079*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2080*5e7646d2SAndroid Build Coastguard Worker
2081*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2082*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a PostScript printer that supports the TBCP protocol</em>
2083*5e7646d2SAndroid Build Coastguard Worker*Protocols: TBCP PJL
2084*5e7646d2SAndroid Build Coastguard Worker
2085*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify that TBCP should be used for socket connections but not USB</em>
2086*5e7646d2SAndroid Build Coastguard Worker*cupsPortMonitor socket/AppSocket Printing: "tbcp"
2087*5e7646d2SAndroid Build Coastguard Worker*cupsPortMonitor usb/USB Printing: "none"
2088*5e7646d2SAndroid Build Coastguard Worker
2089*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a printer-specific port monitor for an Epson USB printer</em>
2090*5e7646d2SAndroid Build Coastguard Worker*cupsPortMonitor usb/USB Status Monitor: "epson-usb"
2091*5e7646d2SAndroid Build Coastguard Worker</pre>
2092*5e7646d2SAndroid Build Coastguard Worker
2093*5e7646d2SAndroid Build Coastguard Worker
2094*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPreFilter'>cupsPreFilter</a></h3>
2095*5e7646d2SAndroid Build Coastguard Worker
2096*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsPreFilter: "source/type cost program"</p>
2097*5e7646d2SAndroid Build Coastguard Worker
2098*5e7646d2SAndroid Build Coastguard Worker<p>This string keyword provides a pre-filter rule. The pre-filter
2099*5e7646d2SAndroid Build Coastguard Workerprogram will be inserted in the conversion chain immediately
2100*5e7646d2SAndroid Build Coastguard Workerbefore the filter that accepts the given MIME type.</p>
2101*5e7646d2SAndroid Build Coastguard Worker
2102*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2103*5e7646d2SAndroid Build Coastguard Worker
2104*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2105*5e7646d2SAndroid Build Coastguard Worker<em>*% PDF pre-filter</em>
2106*5e7646d2SAndroid Build Coastguard Worker*cupsPreFilter: "application/pdf 100 mypdfprefilter"
2107*5e7646d2SAndroid Build Coastguard Worker
2108*5e7646d2SAndroid Build Coastguard Worker<em>*% PNG pre-filter</em>
2109*5e7646d2SAndroid Build Coastguard Worker*cupsPreFilter: "image/png 0 mypngprefilter"
2110*5e7646d2SAndroid Build Coastguard Worker</pre>
2111*5e7646d2SAndroid Build Coastguard Worker
2112*5e7646d2SAndroid Build Coastguard Worker
2113*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.5</span><a name='cupsPrintQuality'>cupsPrintQuality</a></h3>
2114*5e7646d2SAndroid Build Coastguard Worker
2115*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsPrintQuality keyword/text: "code"</p>
2116*5e7646d2SAndroid Build Coastguard Worker
2117*5e7646d2SAndroid Build Coastguard Worker<p>This UI keyword defines standard print qualities that directly map from the IPP "print-quality" job template keyword. Standard keyword values are "Draft", "Normal", and "High" which are mapped from the IPP "print-quality" values 3, 4, and 5 respectively. Each <code>cupsPrintQuality</code> option typically sets output mode and resolution parameters in the page device dictionary, eliminating the need for separate (and sometimes confusing) output mode and resolution options.</p>
2118*5e7646d2SAndroid Build Coastguard Worker
2119*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
2120*5e7646d2SAndroid Build Coastguard Worker
2121*5e7646d2SAndroid Build Coastguard Worker<p>Unlike all of the other keywords defined in this document, <code>cupsPrintQuality</code> is a UI keyword that MUST be enclosed inside the PPD <code>OpenUI</code> and <code>CloseUI</code> keywords.</p>
2122*5e7646d2SAndroid Build Coastguard Worker
2123*5e7646d2SAndroid Build Coastguard Worker</blockquote>
2124*5e7646d2SAndroid Build Coastguard Worker
2125*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2126*5e7646d2SAndroid Build Coastguard Worker
2127*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2128*5e7646d2SAndroid Build Coastguard Worker*OpenUI *cupsPrintQuality/Print Quality: PickOne
2129*5e7646d2SAndroid Build Coastguard Worker*OrderDependency: 10 AnySetup *cupsPrintQuality
2130*5e7646d2SAndroid Build Coastguard Worker*DefaultcupsPrintQuality: Normal
2131*5e7646d2SAndroid Build Coastguard Worker*cupsPrintQuality Draft/Draft: "code"
2132*5e7646d2SAndroid Build Coastguard Worker*cupsPrintQuality Normal/Normal: "code"
2133*5e7646d2SAndroid Build Coastguard Worker*cupsPrintQuality High/Photo: "code"
2134*5e7646d2SAndroid Build Coastguard Worker*CloseUI: *cupsPrintQuality
2135*5e7646d2SAndroid Build Coastguard Worker</pre>
2136*5e7646d2SAndroid Build Coastguard Worker
2137*5e7646d2SAndroid Build Coastguard Worker
2138*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.5</span><a name='cupsSingleFile'>cupsSingleFile</a></h3>
2139*5e7646d2SAndroid Build Coastguard Worker
2140*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsSingleFile: Boolean</p>
2141*5e7646d2SAndroid Build Coastguard Worker
2142*5e7646d2SAndroid Build Coastguard Worker<p>This boolean keyword tells the scheduler whether to print multiple files in a job together or singly. The default is "False" which uses a single instance of the backend for all files in the print job. Setting this keyword to "True" will result in separate instances of the backend for each file in the print job.</p>
2143*5e7646d2SAndroid Build Coastguard Worker
2144*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2145*5e7646d2SAndroid Build Coastguard Worker
2146*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2147*5e7646d2SAndroid Build Coastguard Worker<em>*% Send all print data to a single backend</em>
2148*5e7646d2SAndroid Build Coastguard Worker*cupsSingleFile: False
2149*5e7646d2SAndroid Build Coastguard Worker
2150*5e7646d2SAndroid Build Coastguard Worker<em>*% Send each file using a separate backend</em>
2151*5e7646d2SAndroid Build Coastguard Worker*cupsSingleFile: True
2152*5e7646d2SAndroid Build Coastguard Worker</pre>
2153*5e7646d2SAndroid Build Coastguard Worker
2154*5e7646d2SAndroid Build Coastguard Worker
2155*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsSNMPSupplies'>cupsSNMPSupplies</a></h3>
2156*5e7646d2SAndroid Build Coastguard Worker
2157*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsSNMPSupplies: boolean</p>
2158*5e7646d2SAndroid Build Coastguard Worker
2159*5e7646d2SAndroid Build Coastguard Worker<p>This keyword tells the standard network backends whether they should query
2160*5e7646d2SAndroid Build Coastguard Workerthe standard SNMP Printer MIB OIDs for supply levels. The default value is
2161*5e7646d2SAndroid Build Coastguard Worker<code>True</code>.
2162*5e7646d2SAndroid Build Coastguard Worker
2163*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
2164*5e7646d2SAndroid Build Coastguard Worker
2165*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2166*5e7646d2SAndroid Build Coastguard Worker<em>*% Do not use SNMP queries to report supply levels</em>
2167*5e7646d2SAndroid Build Coastguard Worker*cupsSNMPSupplies: False
2168*5e7646d2SAndroid Build Coastguard Worker</pre>
2169*5e7646d2SAndroid Build Coastguard Worker
2170*5e7646d2SAndroid Build Coastguard Worker
2171*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><a name='cupsVersion'>cupsVersion</a></h3>
2172*5e7646d2SAndroid Build Coastguard Worker
2173*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*cupsVersion: major.minor</p>
2174*5e7646d2SAndroid Build Coastguard Worker
2175*5e7646d2SAndroid Build Coastguard Worker<p>This required keyword describes which version of the CUPS
2176*5e7646d2SAndroid Build Coastguard WorkerPPD file extensions was used. Currently it must be the string
2177*5e7646d2SAndroid Build Coastguard Worker"1.0", "1.1", "1.2", "1.3", "1.4", "1.5", or "1.6".</p>
2178*5e7646d2SAndroid Build Coastguard Worker
2179*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
2180*5e7646d2SAndroid Build Coastguard Worker
2181*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2182*5e7646d2SAndroid Build Coastguard Worker<em>*% Specify a CUPS 1.2 driver</em>
2183*5e7646d2SAndroid Build Coastguard Worker*cupsVersion: "1.2"
2184*5e7646d2SAndroid Build Coastguard Worker</pre>
2185*5e7646d2SAndroid Build Coastguard Worker
2186*5e7646d2SAndroid Build Coastguard Worker
2187*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class="info">CUPS 1.6/macOS 10.8</span><a name="JCLToPDFInterpreter">JCLToPDFInterpreter</a></h3>
2188*5e7646d2SAndroid Build Coastguard Worker
2189*5e7646d2SAndroid Build Coastguard Worker<p class="summary">*JCLToPDFInterpreter: "JCL"</p>
2190*5e7646d2SAndroid Build Coastguard Worker
2191*5e7646d2SAndroid Build Coastguard Worker<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>
2192*5e7646d2SAndroid Build Coastguard Worker
2193*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
2194*5e7646d2SAndroid Build Coastguard Worker
2195*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2196*5e7646d2SAndroid Build Coastguard Worker<em>*% PJL command to start the PDF interpreter</em>
2197*5e7646d2SAndroid Build Coastguard Worker*JCLToPDFInterpreter: "@PJL ENTER LANGUAGE = PDF&lt;0A&gt;"
2198*5e7646d2SAndroid Build Coastguard Worker</pre>
2199*5e7646d2SAndroid Build Coastguard Worker
2200*5e7646d2SAndroid Build Coastguard Worker
2201*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='MACOSX'>macOS Attributes</a></h2>
2202*5e7646d2SAndroid Build Coastguard Worker
2203*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>Deprecated</span><a name='APDialogExtension'>APDialogExtension</a></h3>
2204*5e7646d2SAndroid Build Coastguard Worker
2205*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APDialogExtension: "/Library/Printers/vendor/filename.plugin"</p>
2206*5e7646d2SAndroid Build Coastguard Worker
2207*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines additional option panes that are displayed in the
2208*5e7646d2SAndroid Build Coastguard Workerprint dialog. Each keyword adds one or more option panes. See the "OutputBinsPDE"
2209*5e7646d2SAndroid Build Coastguard Workerexample and <a href='http://developer.apple.com/qa/qa2004/qa1352.html'>Apple
2210*5e7646d2SAndroid Build Coastguard WorkerTechnical Q&amp;A QA1352</a> for information on writing your own print dialog
2211*5e7646d2SAndroid Build Coastguard Workerplug-ins.</p>
2212*5e7646d2SAndroid Build Coastguard Worker
2213*5e7646d2SAndroid Build Coastguard Worker<blockquote><b>Note:</b>
2214*5e7646d2SAndroid Build Coastguard Worker
2215*5e7646d2SAndroid Build Coastguard Worker<p>Since 2010, AirPrint has enabled the printing of full quality photos and
2216*5e7646d2SAndroid Build Coastguard Workerdocuments from the Mac without requiring driver software. Starting with macOS
2217*5e7646d2SAndroid Build Coastguard Worker10.12, system level security features prevent print dialog plug-ins from being
2218*5e7646d2SAndroid Build Coastguard Workerloaded into applications that have enabled the library validation security
2219*5e7646d2SAndroid Build Coastguard Workerfeature. As of macOS 10.14 the <code>APDialogExtension</code> attribute used to
2220*5e7646d2SAndroid Build Coastguard Workercreate macOS print drivers is deprecated. All new printer models should support
2221*5e7646d2SAndroid Build Coastguard WorkerAirPrint moving forward.</p>
2222*5e7646d2SAndroid Build Coastguard Worker
2223*5e7646d2SAndroid Build Coastguard Worker</blockquote>
2224*5e7646d2SAndroid Build Coastguard Worker
2225*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2226*5e7646d2SAndroid Build Coastguard Worker
2227*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2228*5e7646d2SAndroid Build Coastguard Worker*% Add two panes for finishing and driver options
2229*5e7646d2SAndroid Build Coastguard Worker*APDialogExtension: "/Library/Printers/vendor/finishing.plugin"
2230*5e7646d2SAndroid Build Coastguard Worker*APDialogExtension: "/Library/Printers/vendor/options.plugin"
2231*5e7646d2SAndroid Build Coastguard Worker</pre>
2232*5e7646d2SAndroid Build Coastguard Worker
2233*5e7646d2SAndroid Build Coastguard Worker
2234*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.4</span><a name='APDuplexRequiresFlippedMargin'>APDuplexRequiresFlippedMargin</a></h3>
2235*5e7646d2SAndroid Build Coastguard Worker
2236*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APDuplexRequiresFlippedMargin: boolean</p>
2237*5e7646d2SAndroid Build Coastguard Worker
2238*5e7646d2SAndroid Build Coastguard Worker<p>This boolean keyword notifies the RIP filters that the
2239*5e7646d2SAndroid Build Coastguard Workerdestination printer requires the top and bottom margins of the
2240*5e7646d2SAndroid Build Coastguard Worker<tt>ImageableArea</tt> to be swapped for the back page. The
2241*5e7646d2SAndroid Build Coastguard Workerdefault is <tt>true</tt> when <tt>cupsBackSide</tt> is <tt>Flipped</tt>
2242*5e7646d2SAndroid Build Coastguard Workerand <tt>false</tt> otherwise. <a href='#TABLE_2'>Table 2</a> shows how
2243*5e7646d2SAndroid Build Coastguard Worker<tt>APDuplexRequiresFlippedMargin</tt> interacts with <tt>cupsBackSide</tt>
2244*5e7646d2SAndroid Build Coastguard Workerand the <tt>Tumble</tt> page attribute.</p>
2245*5e7646d2SAndroid Build Coastguard Worker
2246*5e7646d2SAndroid Build Coastguard Worker<div class='table'>
2247*5e7646d2SAndroid Build Coastguard Worker<table width='80%' summary='Margin Flipping Modes'>
2248*5e7646d2SAndroid Build Coastguard Worker<caption>Table 2: <a name='TABLE_2'>Margin Flipping Modes</a></caption>
2249*5e7646d2SAndroid Build Coastguard Worker<thead>
2250*5e7646d2SAndroid Build Coastguard Worker<tr>
2251*5e7646d2SAndroid Build Coastguard Worker	<th>APDuplexRequiresFlippedMargin</th>
2252*5e7646d2SAndroid Build Coastguard Worker	<th>cupsBackSide</th>
2253*5e7646d2SAndroid Build Coastguard Worker	<th>Tumble Value</th>
2254*5e7646d2SAndroid Build Coastguard Worker	<th>Margins</th>
2255*5e7646d2SAndroid Build Coastguard Worker</tr>
2256*5e7646d2SAndroid Build Coastguard Worker</thead>
2257*5e7646d2SAndroid Build Coastguard Worker<tbody>
2258*5e7646d2SAndroid Build Coastguard Worker<tr>
2259*5e7646d2SAndroid Build Coastguard Worker	<td>false</td>
2260*5e7646d2SAndroid Build Coastguard Worker	<td>any</td>
2261*5e7646d2SAndroid Build Coastguard Worker	<td>any</td>
2262*5e7646d2SAndroid Build Coastguard Worker	<td>Normal</td>
2263*5e7646d2SAndroid Build Coastguard Worker</tr>
2264*5e7646d2SAndroid Build Coastguard Worker<tr>
2265*5e7646d2SAndroid Build Coastguard Worker	<td>any</td>
2266*5e7646d2SAndroid Build Coastguard Worker	<td>Normal</td>
2267*5e7646d2SAndroid Build Coastguard Worker	<td>any</td>
2268*5e7646d2SAndroid Build Coastguard Worker	<td>Normal</td>
2269*5e7646d2SAndroid Build Coastguard Worker</tr>
2270*5e7646d2SAndroid Build Coastguard Worker<tr>
2271*5e7646d2SAndroid Build Coastguard Worker	<td>true</td>
2272*5e7646d2SAndroid Build Coastguard Worker	<td>ManualDuplex</td>
2273*5e7646d2SAndroid Build Coastguard Worker	<td>false</td>
2274*5e7646d2SAndroid Build Coastguard Worker	<td>Normal</td>
2275*5e7646d2SAndroid Build Coastguard Worker</tr>
2276*5e7646d2SAndroid Build Coastguard Worker<tr>
2277*5e7646d2SAndroid Build Coastguard Worker	<td>true</td>
2278*5e7646d2SAndroid Build Coastguard Worker	<td>ManualDuplex</td>
2279*5e7646d2SAndroid Build Coastguard Worker	<td>true</td>
2280*5e7646d2SAndroid Build Coastguard Worker	<td>Flipped</td>
2281*5e7646d2SAndroid Build Coastguard Worker</tr>
2282*5e7646d2SAndroid Build Coastguard Worker<tr>
2283*5e7646d2SAndroid Build Coastguard Worker	<td>true</td>
2284*5e7646d2SAndroid Build Coastguard Worker	<td>Rotated</td>
2285*5e7646d2SAndroid Build Coastguard Worker	<td>false</td>
2286*5e7646d2SAndroid Build Coastguard Worker	<td>Flipped</td>
2287*5e7646d2SAndroid Build Coastguard Worker</tr>
2288*5e7646d2SAndroid Build Coastguard Worker<tr>
2289*5e7646d2SAndroid Build Coastguard Worker	<td>true</td>
2290*5e7646d2SAndroid Build Coastguard Worker	<td>Rotated</td>
2291*5e7646d2SAndroid Build Coastguard Worker	<td>true</td>
2292*5e7646d2SAndroid Build Coastguard Worker	<td>Normal</td>
2293*5e7646d2SAndroid Build Coastguard Worker</tr>
2294*5e7646d2SAndroid Build Coastguard Worker<tr>
2295*5e7646d2SAndroid Build Coastguard Worker	<td>true or unspecified</td>
2296*5e7646d2SAndroid Build Coastguard Worker	<td>Flipped</td>
2297*5e7646d2SAndroid Build Coastguard Worker	<td>any</td>
2298*5e7646d2SAndroid Build Coastguard Worker	<td>Flipped</td>
2299*5e7646d2SAndroid Build Coastguard Worker</tr>
2300*5e7646d2SAndroid Build Coastguard Worker</tbody>
2301*5e7646d2SAndroid Build Coastguard Worker</table></div>
2302*5e7646d2SAndroid Build Coastguard Worker
2303*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
2304*5e7646d2SAndroid Build Coastguard Worker
2305*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2306*5e7646d2SAndroid Build Coastguard Worker<em>*% Rotate the back side images</em>
2307*5e7646d2SAndroid Build Coastguard Worker*cupsBackSide: Rotated
2308*5e7646d2SAndroid Build Coastguard Worker
2309*5e7646d2SAndroid Build Coastguard Worker<em>*% Don't swap the top and bottom margins for the back side</em>
2310*5e7646d2SAndroid Build Coastguard Worker*APDuplexRequiresFlippedMargin: false
2311*5e7646d2SAndroid Build Coastguard Worker</pre>
2312*5e7646d2SAndroid Build Coastguard Worker
2313*5e7646d2SAndroid Build Coastguard Worker<p>Also see the related <a href='#cupsBackSide'><tt>cupsBackSide</tt></a>
2314*5e7646d2SAndroid Build Coastguard Workerkeyword.</p>
2315*5e7646d2SAndroid Build Coastguard Worker
2316*5e7646d2SAndroid Build Coastguard Worker
2317*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><a name='APHelpBook'>APHelpBook</a></h3>
2318*5e7646d2SAndroid Build Coastguard Worker
2319*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APHelpBook: "bundle URL"</p>
2320*5e7646d2SAndroid Build Coastguard Worker
2321*5e7646d2SAndroid Build Coastguard Worker<p>This string keyword specifies the Apple help book bundle to use when
2322*5e7646d2SAndroid Build Coastguard Workerlooking up IPP reason codes for this printer driver. The
2323*5e7646d2SAndroid Build Coastguard Worker<a href='#cupsIPPReason'><tt>cupsIPPReason</tt></a> keyword maps
2324*5e7646d2SAndroid Build Coastguard Worker"help" URIs to this file.</p>
2325*5e7646d2SAndroid Build Coastguard Worker
2326*5e7646d2SAndroid Build Coastguard Worker<p>Example:</p>
2327*5e7646d2SAndroid Build Coastguard Worker
2328*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2329*5e7646d2SAndroid Build Coastguard Worker*APHelpBook: "file:///Library/Printers/vendor/Help.bundle"
2330*5e7646d2SAndroid Build Coastguard Worker</pre>
2331*5e7646d2SAndroid Build Coastguard Worker
2332*5e7646d2SAndroid Build Coastguard Worker
2333*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.6</span><a name='APICADriver'>APICADriver</a></h3>
2334*5e7646d2SAndroid Build Coastguard Worker
2335*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APICADriver: boolean</p>
2336*5e7646d2SAndroid Build Coastguard Worker
2337*5e7646d2SAndroid Build Coastguard Worker<p>This keyword specifies whether the device has a matching Image Capture
2338*5e7646d2SAndroid Build Coastguard WorkerArchitecture (ICA) driver for scanning. The default is <tt>False</tt>.</p>
2339*5e7646d2SAndroid Build Coastguard Worker
2340*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2341*5e7646d2SAndroid Build Coastguard Worker
2342*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2343*5e7646d2SAndroid Build Coastguard Worker*APICADriver: True
2344*5e7646d2SAndroid Build Coastguard Worker*APScanAppBundleID: "com.apple.ImageCaptureApp"
2345*5e7646d2SAndroid Build Coastguard Worker</pre>
2346*5e7646d2SAndroid Build Coastguard Worker
2347*5e7646d2SAndroid Build Coastguard Worker
2348*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.3</span><a name='APPrinterIconPath'>APPrinterIconPath</a></h3>
2349*5e7646d2SAndroid Build Coastguard Worker
2350*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APPrinterIconPath: "/Library/Printers/vendor/filename.icns"</p>
2351*5e7646d2SAndroid Build Coastguard Worker
2352*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines the location of a printer icon file to use when
2353*5e7646d2SAndroid Build Coastguard Workerdisplaying the printer. The file must be in the Apple icon format.</p>
2354*5e7646d2SAndroid Build Coastguard Worker
2355*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2356*5e7646d2SAndroid Build Coastguard Worker
2357*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2358*5e7646d2SAndroid Build Coastguard Worker*% Apple icon file
2359*5e7646d2SAndroid Build Coastguard Worker*APPrinterIconPath: "/Library/Printers/vendor/Icons/filename.icns"
2360*5e7646d2SAndroid Build Coastguard Worker</pre>
2361*5e7646d2SAndroid Build Coastguard Worker
2362*5e7646d2SAndroid Build Coastguard Worker
2363*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.4</span><a name='APPrinterLowInkTool'>APPrinterLowInkTool</a></h3>
2364*5e7646d2SAndroid Build Coastguard Worker
2365*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APPrinterLowInkTool: "/Library/Printers/vendor/program"</p>
2366*5e7646d2SAndroid Build Coastguard Worker
2367*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines an program that checks the ink/toner/marker levels
2368*5e7646d2SAndroid Build Coastguard Workeron a printer, returning an XML document with those levels. See the "InkTool"
2369*5e7646d2SAndroid Build Coastguard Workerexample and
2370*5e7646d2SAndroid Build Coastguard Worker<a href='http://developer.apple.com/technotes/tn2005/tn2144.html'>Apple
2371*5e7646d2SAndroid Build Coastguard WorkerTechnical Note TN2144</a> for more information.</p>
2372*5e7646d2SAndroid Build Coastguard Worker
2373*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2374*5e7646d2SAndroid Build Coastguard Worker
2375*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2376*5e7646d2SAndroid Build Coastguard Worker*% Use a vendor monitoring program
2377*5e7646d2SAndroid Build Coastguard Worker*APPrinterLowInkTool: "/Library/Printers/vendor/Tools/lowinktool"
2378*5e7646d2SAndroid Build Coastguard Worker</pre>
2379*5e7646d2SAndroid Build Coastguard Worker
2380*5e7646d2SAndroid Build Coastguard Worker
2381*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.5</span><a name='APPrinterPreset'>APPrinterPreset</a></h3>
2382*5e7646d2SAndroid Build Coastguard Worker
2383*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APPrinterPreset name/text: "*Option Choice ..."</p>
2384*5e7646d2SAndroid Build Coastguard Worker
2385*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines presets for multiple options that show up
2386*5e7646d2SAndroid Build Coastguard Workerin the print dialog of applications (such as iPhoto) that set the job
2387*5e7646d2SAndroid Build Coastguard Workerstyle hint to <tt>NSPrintPhotoJobStyleHint</tt>. Each preset maps to one or
2388*5e7646d2SAndroid Build Coastguard Workermore pairs of PPD options and choices as well as providing key/value data for
2389*5e7646d2SAndroid Build Coastguard Workerthe application. The following standard preset names are currently defined:</p>
2390*5e7646d2SAndroid Build Coastguard Worker
2391*5e7646d2SAndroid Build Coastguard Worker<ul>
2392*5e7646d2SAndroid Build Coastguard Worker
2393*5e7646d2SAndroid Build Coastguard Worker	<li><code>General_with_Paper_Auto-Detect</code>; Normal quality general printing with auto-detected media.</li>
2394*5e7646d2SAndroid Build Coastguard Worker
2395*5e7646d2SAndroid Build Coastguard Worker	<li><code>General_with_Paper_Auto-Detect_-_Draft</code>; Draft quality general printing with auto-detected media.</li>
2396*5e7646d2SAndroid Build Coastguard Worker
2397*5e7646d2SAndroid Build Coastguard Worker	<li><code>General_on_Plain_Paper</code>; Normal quality general printing on plain paper.</li>
2398*5e7646d2SAndroid Build Coastguard Worker
2399*5e7646d2SAndroid Build Coastguard Worker	<li><code>General_on_Plain_Paper_-_Draft</code>; Draft quality general printing on plain paper.</li>
2400*5e7646d2SAndroid Build Coastguard Worker
2401*5e7646d2SAndroid Build Coastguard Worker	<li><code>Photo_with_Paper_Auto-Detect</code>; Normal quality photo printing with auto-detected media.</li>
2402*5e7646d2SAndroid Build Coastguard Worker
2403*5e7646d2SAndroid Build Coastguard Worker	<li><code>Photo_with_Paper_Auto-Detect_-_Fine</code>; High quality photo printing with auto-detected media.</li>
2404*5e7646d2SAndroid Build Coastguard Worker
2405*5e7646d2SAndroid Build Coastguard Worker	<li><code>Photo_on_Plain_Paper</code>; Normal quality photo printing on plain paper.</li>
2406*5e7646d2SAndroid Build Coastguard Worker
2407*5e7646d2SAndroid Build Coastguard Worker	<li><code>Photo_on_Plain_Paper_-_Fine</code>; High quality photo printing on plain paper.</li>
2408*5e7646d2SAndroid Build Coastguard Worker
2409*5e7646d2SAndroid Build Coastguard Worker	<li><code>Photo_on_Photo_Paper</code>; Normal quality photo printing on glossy photo paper.</li>
2410*5e7646d2SAndroid Build Coastguard Worker
2411*5e7646d2SAndroid Build Coastguard Worker	<li><code>Photo_on_Photo_Paper_-_Fine</code>; High quality photo printing on glossy photo paper.</li>
2412*5e7646d2SAndroid Build Coastguard Worker
2413*5e7646d2SAndroid Build Coastguard Worker	<li><code>Photo_on_Matte_Paper</code>; Normal quality photo printing on matte paper.</li>
2414*5e7646d2SAndroid Build Coastguard Worker
2415*5e7646d2SAndroid Build Coastguard Worker	<li><code>Photo_on_Matte_Paper_-_Fine</code>; High quality photo printing on matte paper.</li>
2416*5e7646d2SAndroid Build Coastguard Worker
2417*5e7646d2SAndroid Build Coastguard Worker</ul>
2418*5e7646d2SAndroid Build Coastguard Worker
2419*5e7646d2SAndroid Build Coastguard Worker<p>The value string consists of pairs of keywords, either an option name and
2420*5e7646d2SAndroid Build Coastguard Workerchoice (*MainKeyword OptionKeyword) or a preset identifier and value
2421*5e7646d2SAndroid Build Coastguard Worker(com.apple.print.preset.foo value). The following preset identifiers are currently used:</p>
2422*5e7646d2SAndroid Build Coastguard Worker
2423*5e7646d2SAndroid Build Coastguard Worker<ul>
2424*5e7646d2SAndroid Build Coastguard Worker
2425*5e7646d2SAndroid Build Coastguard Worker	<li><code>com.apple.print.preset.graphicsType</code>; specifies the type of printing used for this printing - "General" for general purpose printing and "Photo" for photo printing.</li>
2426*5e7646d2SAndroid Build Coastguard Worker
2427*5e7646d2SAndroid Build Coastguard Worker	<li><code>com.apple.print.preset.media-front-coating</code>; specifies the media type selected by this preset - "none" (plain paper), "glossy", "high-gloss", "semi-gloss", "satin", "matte", and "autodetect".</li>
2428*5e7646d2SAndroid Build Coastguard Worker
2429*5e7646d2SAndroid Build Coastguard Worker	<li><code>com.apple.print.preset.output-mode</code>; specifies the output mode for this preset - "color" (default for color printers) or "monochrome" (grayscale, default for B&amp;W printers).</li>
2430*5e7646d2SAndroid Build Coastguard Worker
2431*5e7646d2SAndroid Build Coastguard Worker	<li><code>com.apple.print.preset.quality</code>; specifies the overall print quality selected by this preset - "low" (draft), "mid" (normal), or "high".</li>
2432*5e7646d2SAndroid Build Coastguard Worker
2433*5e7646d2SAndroid Build Coastguard Worker</ul>
2434*5e7646d2SAndroid Build Coastguard Worker
2435*5e7646d2SAndroid Build Coastguard Worker<p>Presets, like options, can also be localized in multiple languages.</p>
2436*5e7646d2SAndroid Build Coastguard Worker
2437*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2438*5e7646d2SAndroid Build Coastguard Worker
2439*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2440*5e7646d2SAndroid Build Coastguard Worker*APPrinterPreset Photo_on_Photo_Paper/Photo on Photo Paper: "
2441*5e7646d2SAndroid Build Coastguard Worker  *MediaType Glossy
2442*5e7646d2SAndroid Build Coastguard Worker  *ColorModel RGB
2443*5e7646d2SAndroid Build Coastguard Worker  *Resolution 300dpi
2444*5e7646d2SAndroid Build Coastguard Worker  com.apple.print.preset.graphicsType Photo
2445*5e7646d2SAndroid Build Coastguard Worker  com.apple.print.preset.quality mid
2446*5e7646d2SAndroid Build Coastguard Worker  com.apple.print.preset.media-front-coating glossy"
2447*5e7646d2SAndroid Build Coastguard Worker*End
2448*5e7646d2SAndroid Build Coastguard Worker*fr.APPrinterPreset Photo_on_Photo_Paper/Photo sur papier photographique: ""
2449*5e7646d2SAndroid Build Coastguard Worker</pre>
2450*5e7646d2SAndroid Build Coastguard Worker
2451*5e7646d2SAndroid Build Coastguard Worker
2452*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.3</span><a name='APPrinterUtilityPath'>APPrinterUtilityPath</a></h3>
2453*5e7646d2SAndroid Build Coastguard Worker
2454*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APPrinterPrinterUtilityPath: "/Library/Printers/vendor/filename.app"</p>
2455*5e7646d2SAndroid Build Coastguard Worker
2456*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines a GUI application that can be used to do printer
2457*5e7646d2SAndroid Build Coastguard Workermaintenance functions such as cleaning the print head(s). See ... for more
2458*5e7646d2SAndroid Build Coastguard Workerinformation.</p>
2459*5e7646d2SAndroid Build Coastguard Worker
2460*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2461*5e7646d2SAndroid Build Coastguard Worker
2462*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2463*5e7646d2SAndroid Build Coastguard Worker*% Define the printer utility application
2464*5e7646d2SAndroid Build Coastguard Worker*APPrinterPrinterUtilityPath: "/Library/Printers/vendor/Tools/utility.app"
2465*5e7646d2SAndroid Build Coastguard Worker</pre>
2466*5e7646d2SAndroid Build Coastguard Worker
2467*5e7646d2SAndroid Build Coastguard Worker
2468*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.6</span><a name='APScannerOnly'>APScannerOnly</a></h3>
2469*5e7646d2SAndroid Build Coastguard Worker
2470*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APScannerOnly: boolean</p>
2471*5e7646d2SAndroid Build Coastguard Worker
2472*5e7646d2SAndroid Build Coastguard Worker<p>This keyword specifies whether the device has scanning but no printing
2473*5e7646d2SAndroid Build Coastguard Workercapabilities. The default is <tt>False</tt>.</p>
2474*5e7646d2SAndroid Build Coastguard Worker
2475*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2476*5e7646d2SAndroid Build Coastguard Worker
2477*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2478*5e7646d2SAndroid Build Coastguard Worker*APICADriver: True
2479*5e7646d2SAndroid Build Coastguard Worker*APScannerOnly: True
2480*5e7646d2SAndroid Build Coastguard Worker</pre>
2481*5e7646d2SAndroid Build Coastguard Worker
2482*5e7646d2SAndroid Build Coastguard Worker
2483*5e7646d2SAndroid Build Coastguard Worker<h3 class="title"><span class='info'>macOS 10.3</span><a name='APScanAppBundleID'>APScanAppBundleID</a></h3>
2484*5e7646d2SAndroid Build Coastguard Worker
2485*5e7646d2SAndroid Build Coastguard Worker<p class='summary'>*APScanAppBundleID: "bundle ID"</p>
2486*5e7646d2SAndroid Build Coastguard Worker
2487*5e7646d2SAndroid Build Coastguard Worker<p>This keyword defines the application to use when scanning pages from
2488*5e7646d2SAndroid Build Coastguard Workerthe device.</p>
2489*5e7646d2SAndroid Build Coastguard Worker
2490*5e7646d2SAndroid Build Coastguard Worker<p>Examples:</p>
2491*5e7646d2SAndroid Build Coastguard Worker
2492*5e7646d2SAndroid Build Coastguard Worker<pre class='command'>
2493*5e7646d2SAndroid Build Coastguard Worker*APICADriver: True
2494*5e7646d2SAndroid Build Coastguard Worker*APScanAppBundleID: "com.apple.ImageCaptureApp"
2495*5e7646d2SAndroid Build Coastguard Worker</pre>
2496*5e7646d2SAndroid Build Coastguard Worker
2497*5e7646d2SAndroid Build Coastguard Worker
2498*5e7646d2SAndroid Build Coastguard Worker<h2 class='title'><a name='HISTORY'>Change History</a></h2>
2499*5e7646d2SAndroid Build Coastguard Worker
2500*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 2.3</h3>
2501*5e7646d2SAndroid Build Coastguard Worker
2502*5e7646d2SAndroid Build Coastguard Worker<ul>
2503*5e7646d2SAndroid Build Coastguard Worker
2504*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href="#cupsFinishingTemplate"><tt>cupsFinishingTemplate</tt></a> option.</li>
2505*5e7646d2SAndroid Build Coastguard Worker
2506*5e7646d2SAndroid Build Coastguard Worker</ul>
2507*5e7646d2SAndroid Build Coastguard Worker
2508*5e7646d2SAndroid Build Coastguard Worker
2509*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.7</h3>
2510*5e7646d2SAndroid Build Coastguard Worker
2511*5e7646d2SAndroid Build Coastguard Worker<ul>
2512*5e7646d2SAndroid Build Coastguard Worker
2513*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href="#cupsJobAccountId"><tt>cupsJobAccountId</tt></a>,
2514*5e7646d2SAndroid Build Coastguard Worker	<a href="#cupsJobAccountingUserId"><tt>cupsJobAccountingUserId</tt></a>,
2515*5e7646d2SAndroid Build Coastguard Worker	<a href="#cupsJobPassword"><tt>cupsJobPassword</tt></a>,
2516*5e7646d2SAndroid Build Coastguard Worker	<a href="#cupsMandatory"><tt>cupsMandatory</tt></a> keywords.</li>
2517*5e7646d2SAndroid Build Coastguard Worker
2518*5e7646d2SAndroid Build Coastguard Worker</ul>
2519*5e7646d2SAndroid Build Coastguard Worker
2520*5e7646d2SAndroid Build Coastguard Worker
2521*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.6</h3>
2522*5e7646d2SAndroid Build Coastguard Worker
2523*5e7646d2SAndroid Build Coastguard Worker<ul>
2524*5e7646d2SAndroid Build Coastguard Worker
2525*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href="#cupsPageSizeCategory"><tt>cupsPageSizeCategory</tt></a> keyword (originally defined in CUPS 1.4).</li>
2526*5e7646d2SAndroid Build Coastguard Worker
2527*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href="#cupsMaxCopies"><tt>cupsMaxCopies</tt></a> keyword.</li>
2528*5e7646d2SAndroid Build Coastguard Worker
2529*5e7646d2SAndroid Build Coastguard Worker	<li>Documented <a href="#JCLToPDFInterpreter"><tt>JCLToPDFInterpreter</tt></a> keyword.</li>
2530*5e7646d2SAndroid Build Coastguard Worker
2531*5e7646d2SAndroid Build Coastguard Worker	<li>Updated <a href="#cupsVersion"><tt>cupsVersion</tt></a> keyword documentation to list all current releases of CUPS.</li>
2532*5e7646d2SAndroid Build Coastguard Worker
2533*5e7646d2SAndroid Build Coastguard Worker</ul>
2534*5e7646d2SAndroid Build Coastguard Worker
2535*5e7646d2SAndroid Build Coastguard Worker
2536*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.5</h3>
2537*5e7646d2SAndroid Build Coastguard Worker
2538*5e7646d2SAndroid Build Coastguard Worker<ul>
2539*5e7646d2SAndroid Build Coastguard Worker
2540*5e7646d2SAndroid Build Coastguard Worker	<li>Changes all instances of PPD attributes to PPD keywords, to be consistent with the parent specification from Adobe.</li>
2541*5e7646d2SAndroid Build Coastguard Worker
2542*5e7646d2SAndroid Build Coastguard Worker</ul>
2543*5e7646d2SAndroid Build Coastguard Worker
2544*5e7646d2SAndroid Build Coastguard Worker
2545*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.4.5</h3>
2546*5e7646d2SAndroid Build Coastguard Worker
2547*5e7646d2SAndroid Build Coastguard Worker<ul>
2548*5e7646d2SAndroid Build Coastguard Worker
2549*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsPrintQuality'><tt>cupsPrintQuality</tt></a> UI keyword.</li>
2550*5e7646d2SAndroid Build Coastguard Worker
2551*5e7646d2SAndroid Build Coastguard Worker	<li>Added new properties and values for the <a href='#APPrinterPreset'><tt>APPrinterPreset</tt></a> keyword.</li>
2552*5e7646d2SAndroid Build Coastguard Worker
2553*5e7646d2SAndroid Build Coastguard Worker</ul>
2554*5e7646d2SAndroid Build Coastguard Worker
2555*5e7646d2SAndroid Build Coastguard Worker
2556*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.4</h3>
2557*5e7646d2SAndroid Build Coastguard Worker
2558*5e7646d2SAndroid Build Coastguard Worker<ul>
2559*5e7646d2SAndroid Build Coastguard Worker
2560*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#APICADriver'><tt>APICADriver</tt></a>
2561*5e7646d2SAndroid Build Coastguard Worker	keyword.</li>
2562*5e7646d2SAndroid Build Coastguard Worker
2563*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsCommands'><tt>cupsCommands</tt></a>
2564*5e7646d2SAndroid Build Coastguard Worker	keyword.</li>
2565*5e7646d2SAndroid Build Coastguard Worker
2566*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsMarkerName'><tt>cupsMarkerName</tt></a>
2567*5e7646d2SAndroid Build Coastguard Worker	keyword.</li>
2568*5e7646d2SAndroid Build Coastguard Worker
2569*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsMarkerNotice'><tt>cupsMarkerNotice</tt></a>
2570*5e7646d2SAndroid Build Coastguard Worker	keyword.</li>
2571*5e7646d2SAndroid Build Coastguard Worker
2572*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsPJLDisplay'><tt>cupsPJLDisplay</tt></a>
2573*5e7646d2SAndroid Build Coastguard Worker	keyword.</li>
2574*5e7646d2SAndroid Build Coastguard Worker
2575*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsSNMPSupplies'><tt>cupsSNMPSupplies</tt></a>
2576*5e7646d2SAndroid Build Coastguard Worker	keyword.</li>
2577*5e7646d2SAndroid Build Coastguard Worker
2578*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsUIResolver'><tt>cupsUIResolver</tt></a> and
2579*5e7646d2SAndroid Build Coastguard Worker	<a href='#cupsUIConstraints'><tt>cupsUIConstraints</tt></a>
2580*5e7646d2SAndroid Build Coastguard Worker	keywords.</li>
2581*5e7646d2SAndroid Build Coastguard Worker
2582*5e7646d2SAndroid Build Coastguard Worker	<li>Added
2583*5e7646d2SAndroid Build Coastguard Worker	<a href='#cupsMediaQualifier2'><tt>cupsMediaQualifier2</tt></a>,
2584*5e7646d2SAndroid Build Coastguard Worker	<a href='#cupsMediaQualifier3'><tt>cupsMediaQualifier3</tt></a>,
2585*5e7646d2SAndroid Build Coastguard Worker	<a href='#cupsMinSize'><tt>cupsMinSize</tt></a>, and
2586*5e7646d2SAndroid Build Coastguard Worker	<a href='#cupsMaxSize'><tt>cupsMaxSize</tt></a> keywords.</li>
2587*5e7646d2SAndroid Build Coastguard Worker
2588*5e7646d2SAndroid Build Coastguard Worker</ul>
2589*5e7646d2SAndroid Build Coastguard Worker
2590*5e7646d2SAndroid Build Coastguard Worker
2591*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.3.1</h3>
2592*5e7646d2SAndroid Build Coastguard Worker
2593*5e7646d2SAndroid Build Coastguard Worker<ul>
2594*5e7646d2SAndroid Build Coastguard Worker
2595*5e7646d2SAndroid Build Coastguard Worker	<li>Added missing macOS <tt>AP</tt> keywords.</li>
2596*5e7646d2SAndroid Build Coastguard Worker
2597*5e7646d2SAndroid Build Coastguard Worker	<li>Added section on auto-configuration including the
2598*5e7646d2SAndroid Build Coastguard Worker	<tt>OID<i>MainKeyword</i></tt> and <tt>?<i>MainKeyword</i></tt>
2599*5e7646d2SAndroid Build Coastguard Worker	keywords.</li>
2600*5e7646d2SAndroid Build Coastguard Worker
2601*5e7646d2SAndroid Build Coastguard Worker	<li>Minor reorganization.</li>
2602*5e7646d2SAndroid Build Coastguard Worker
2603*5e7646d2SAndroid Build Coastguard Worker</ul>
2604*5e7646d2SAndroid Build Coastguard Worker
2605*5e7646d2SAndroid Build Coastguard Worker
2606*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.3</h3>
2607*5e7646d2SAndroid Build Coastguard Worker
2608*5e7646d2SAndroid Build Coastguard Worker<ul>
2609*5e7646d2SAndroid Build Coastguard Worker
2610*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsBackSide'><tt>cupsBackSide</tt></a> and
2611*5e7646d2SAndroid Build Coastguard Worker	deprecated <a href='#cupsFlipDuplex'><tt>cupsFlipDuplex</tt></a>.</li>
2612*5e7646d2SAndroid Build Coastguard Worker
2613*5e7646d2SAndroid Build Coastguard Worker	<li>Added text URI information to
2614*5e7646d2SAndroid Build Coastguard Worker	<a href='#cupsIPPReason'><tt>cupsIPPReason</tt></a> documentation.</li>
2615*5e7646d2SAndroid Build Coastguard Worker
2616*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#APPrinterPreset'><tt>APPrinterPreset</tt></a>,
2617*5e7646d2SAndroid Build Coastguard Worker	<a href='#cupsIPPFinishings'><tt>cupsIPPFinishings</tt></a>, and
2618*5e7646d2SAndroid Build Coastguard Worker	<a href='#cupsPreFilter'><tt>cupsPreFilter</tt></a> keywords.</li>
2619*5e7646d2SAndroid Build Coastguard Worker
2620*5e7646d2SAndroid Build Coastguard Worker	<li>Added discussion of custom option code, sample
2621*5e7646d2SAndroid Build Coastguard Worker	<tt>CustomPageSize</tt> code, and "do not use dict and put" note.</li>
2622*5e7646d2SAndroid Build Coastguard Worker
2623*5e7646d2SAndroid Build Coastguard Worker</ul>
2624*5e7646d2SAndroid Build Coastguard Worker
2625*5e7646d2SAndroid Build Coastguard Worker
2626*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.2.8</h3>
2627*5e7646d2SAndroid Build Coastguard Worker
2628*5e7646d2SAndroid Build Coastguard Worker<ul>
2629*5e7646d2SAndroid Build Coastguard Worker
2630*5e7646d2SAndroid Build Coastguard Worker	<li>Added section on supported PostScript commands for raster
2631*5e7646d2SAndroid Build Coastguard Worker	drivers</li>
2632*5e7646d2SAndroid Build Coastguard Worker
2633*5e7646d2SAndroid Build Coastguard Worker</ul>
2634*5e7646d2SAndroid Build Coastguard Worker
2635*5e7646d2SAndroid Build Coastguard Worker
2636*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.2</h3>
2637*5e7646d2SAndroid Build Coastguard Worker
2638*5e7646d2SAndroid Build Coastguard Worker<ul>
2639*5e7646d2SAndroid Build Coastguard Worker
2640*5e7646d2SAndroid Build Coastguard Worker	<li>Added globalization support keywords</li>
2641*5e7646d2SAndroid Build Coastguard Worker
2642*5e7646d2SAndroid Build Coastguard Worker	<li>Added custom option values support</li>
2643*5e7646d2SAndroid Build Coastguard Worker
2644*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#APHelpBook'><tt>APHelpBook</tt></a> keyword</li>
2645*5e7646d2SAndroid Build Coastguard Worker
2646*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#APDuplexRequiresFlippedMargin'><tt>APDuplexRequiresFlippedMargin</tt></a>
2647*5e7646d2SAndroid Build Coastguard Worker	keyword</li>
2648*5e7646d2SAndroid Build Coastguard Worker
2649*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsICCProfile'><tt>cupsICCProfile</tt></a> keyword</li>
2650*5e7646d2SAndroid Build Coastguard Worker
2651*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsIPPReason'><tt>cupsIPPReason</tt></a> keyword</li>
2652*5e7646d2SAndroid Build Coastguard Worker
2653*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsLanguages'><tt>cupsLanguages</tt></a> keyword</li>
2654*5e7646d2SAndroid Build Coastguard Worker
2655*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsPortMonitor'><tt>cupsPortMonitor</tt></a> keyword</li>
2656*5e7646d2SAndroid Build Coastguard Worker
2657*5e7646d2SAndroid Build Coastguard Worker	<li>Removed <tt>cupsProtocol</tt> keyword</li>
2658*5e7646d2SAndroid Build Coastguard Worker
2659*5e7646d2SAndroid Build Coastguard Worker</ul>
2660*5e7646d2SAndroid Build Coastguard Worker
2661*5e7646d2SAndroid Build Coastguard Worker
2662*5e7646d2SAndroid Build Coastguard Worker<h3 class="title">Changes in CUPS 1.1</h3>
2663*5e7646d2SAndroid Build Coastguard Worker
2664*5e7646d2SAndroid Build Coastguard Worker<ul>
2665*5e7646d2SAndroid Build Coastguard Worker
2666*5e7646d2SAndroid Build Coastguard Worker	<li>Added <a href='#cupsFlipDuplex'><tt>cupsFlipDuplex</tt></a> keyword</li>
2667*5e7646d2SAndroid Build Coastguard Worker
2668*5e7646d2SAndroid Build Coastguard Worker	<li>Added <tt>cupsProtocol</tt> keyword</li>
2669*5e7646d2SAndroid Build Coastguard Worker
2670*5e7646d2SAndroid Build Coastguard Worker</ul>
2671*5e7646d2SAndroid Build Coastguard Worker    </div>
2672*5e7646d2SAndroid Build Coastguard Worker  </body>
2673*5e7646d2SAndroid Build Coastguard Worker</html>
2674