]>
Commit | Line | Data |
---|---|---|
ef416fc2 | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> |
2 | <html> | |
4744bd90 | 3 | <!-- SECTION: Specifications --> |
ef416fc2 | 4 | <head> |
5 | <title>CUPS PPD Extensions</title> | |
6 | <meta name='keywords' content='Programming, PostScript Printer Description'> | |
a4d04587 | 7 | <link rel='stylesheet' type='text/css' href='../cups.css'> |
ef416fc2 | 8 | </head> |
9 | <body> | |
10 | <!-- | |
bc44d920 | 11 | "$Id: spec-ppd.html 6646 2007-07-10 22:56:04Z mike $" |
ef416fc2 | 12 | |
13 | CUPS PPD extensions specification for the Common UNIX Printing System (CUPS). | |
14 | ||
f7deaa1a | 15 | Copyright 1997-2007 by Easy Software Products. |
ef416fc2 | 16 | |
17 | These coded instructions, statements, and computer programs are the | |
18 | property of Easy Software Products and are protected by Federal | |
19 | copyright law. Distribution and use rights are outlined in the file | |
20 | "LICENSE.txt" which should have been included with this file. If this | |
21 | file is missing or damaged please contact Easy Software Products | |
22 | at: | |
23 | ||
24 | Attn: CUPS Licensing Information | |
25 | Easy Software Products | |
26 | 44141 Airport View Drive, Suite 204 | |
27 | Hollywood, Maryland 20636 USA | |
28 | ||
29 | Voice: (301) 373-9600 | |
30 | EMail: cups-info@cups.org | |
31 | WWW: http://www.cups.org | |
32 | --> | |
33 | ||
34 | <h2 class='title'><a name='INTRODUCTION'>Introduction</a></h2> | |
35 | ||
36 | <p>This specification describes the attributes and extensions | |
37 | that CUPS adds to <a | |
4744bd90 | 38 | href="http://partners.adobe.com/public/developer/en/ps/5003.PPD_Spec_v4.3.pdf"> |
ef416fc2 | 39 | Adobe TechNote #5003: PostScript Printer Description File Format |
40 | Specification Version 4.3</a>. PostScript Printer Description | |
41 | ("PPD") files describe the capabilities of each printer and are | |
42 | used by CUPS to support printer-specific features and intelligent | |
43 | filtering.</p> | |
44 | ||
45 | <h2 class='title'><a name='SYNTAX'>PPD File Syntax</a></h2> | |
46 | ||
47 | <p>The PPD format is text-based and uses lines of up to 255 | |
48 | characters terminated by a carriage return, linefeed, or | |
49 | combination of carriage return and line feed. The following ABNF | |
50 | definition [RFC2234] defines the general format of lines in a PPD | |
51 | file:</p> | |
52 | ||
53 | <pre class='command'> | |
54 | PPD-FILE = HEADER +(DATA / COMMENT / LINE-END) | |
55 | ||
56 | HEADER = "*" 0x50.50.44.2D.41.64.6F.62.65 ":" ; *PPD-Adobe: | |
57 | *WSP DQUOTE "4.3" DQUOTE LINE-END | |
58 | ||
59 | COMMENT = "*%" *TCHAR LINE-END | |
60 | ||
61 | DATA = "*" 1*KCHAR [ WSP 1*KCHAR [ "/" 1*TCHAR ] ] ":" | |
62 | 1*(*WSP VALUE) LINE-END | |
63 | ||
64 | VALUE = 1*TCHAR / DQUOTE 1*SCHAR DQUOTE | |
65 | ||
66 | KCHAR = ALPHA / DIGIT / "_" / "." / "-" | |
67 | ||
68 | SCHAR = LINE-END / WSP / %x21 / %x23-7E / %xA0-FF | |
69 | ||
70 | TCHAR = %x20-7E / %xA0-FF | |
71 | ||
72 | LINE-END = CR / LF / CR LF | |
73 | </pre> | |
74 | ||
75 | ||
76 | <h2 class='title'><a name='ATTRIBUTES'>General Attributes</a></h2> | |
77 | ||
4744bd90 | 78 | <h3>APBookFile</h3> |
79 | ||
80 | <p class='summary'>*APBookFile: "file URL"</p> | |
81 | ||
82 | <p>This string attribute specifies the Apple help book file to use | |
83 | for this printer driver.</p> | |
84 | ||
85 | <p>Example:</p> | |
86 | ||
87 | <pre class='command'> | |
88 | *APBookFile: "file:///Library/Printers/vendor/Help/filename" | |
89 | </pre> | |
90 | ||
a4d04587 | 91 | <h3>APDuplexRequiresFlippedMargin</h3> |
92 | ||
93 | <p class='summary'>*APDuplexRequiresFlippedMargin: boolean</p> | |
94 | ||
95 | <p>This boolean attribute notifies the RIP filters that the | |
96 | destination printer does not require the top and bottom margins | |
97 | of the <tt>ImageableArea</tt> swapped for the back page. The | |
bc44d920 | 98 | default is <tt>true</tt> when <tt>cupsFlipDuplex</tt> is |
99 | <tt>true</tt> or <tt>cupsBackSide</tt> is <tt>Flipped</tt> | |
100 | and <tt>false</tt> otherwise.</p> | |
ef416fc2 | 101 | |
a4d04587 | 102 | <p>Example:</p> |
ef416fc2 | 103 | |
104 | <pre class='command'> | |
411affcf | 105 | <em>*% Flip the back side images</em> |
106 | *cupsFlipDuplex: true | |
107 | ||
a4d04587 | 108 | <em>*% Don't swap the top and bottom margins for the back side</em> |
109 | *APDuplexRequiresFlippedMargin: false | |
ef416fc2 | 110 | </pre> |
111 | ||
bc44d920 | 112 | <p>Also see the related <tt>cupsBackSide</tt> attribute.</p> |
a4d04587 | 113 | |
09a101d6 | 114 | <h3>APPrinterPreset</h3> |
115 | ||
116 | <p class='summary'>*APPrinterPreset name/text: "*Option Choice ..."</p> | |
117 | ||
118 | <p>This attribute defines presets for multiple options that show up | |
119 | in the print dialog on Mac OS X. Each preset maps to one or more | |
120 | pairs of PPD options and choices.</p> | |
121 | ||
122 | <p>Examples:</p> | |
123 | ||
124 | <pre class='command'> | |
125 | *APPrinterPreset Text/Text Printing on Plain Paper: " | |
126 | *MediaType Plain | |
127 | *ColorModel Gray | |
128 | *Resolution 600dpi" | |
129 | *End | |
130 | ||
131 | *APPrinterPreset Photo/Photo Printing on Glossy Paper: " | |
132 | *MediaType Glossy | |
133 | *ColorModel RGB | |
134 | *Resolution 300dpi" | |
135 | *End | |
136 | </pre> | |
137 | ||
3d8365b8 | 138 | <h3>APRemoteQueueID</h3> |
139 | ||
140 | <p class='summary'>*APRemoteQueueID: "string"</p> | |
141 | ||
142 | <p>This string attribute notifies the scheduler that this PPD is for a remote CUPS printer, typically shared via Bonjour.</p> | |
143 | ||
144 | <p>Example:</p> | |
145 | ||
146 | <pre class='command'> | |
147 | *APRemoteQueueID: "myprinter" | |
148 | </pre> | |
149 | ||
bc44d920 | 150 | <h3><span class='info'>CUPS 1.3</span>cupsBackSide</h3> |
151 | ||
152 | <p class='summary'>*cupsBackSide: keyword</p> | |
153 | ||
154 | <p>This attribute requests special handling of the back side of pages | |
155 | when doing duplexed (2-sided) output. <a href='#TABLE_1'>Table 1</a> | |
156 | shows the supported keyword values for this attribute and their affect | |
157 | on the raster data sent to your driver. The default value is | |
158 | <code>Normal</code>.</p> | |
159 | ||
160 | <blockquote><b>Note:</b> <tt>cupsBackSide</tt> replaces the older | |
161 | <tt>cupsFlipDuplex</tt> attribute - if <tt>cupsBackSide</tt> is | |
162 | specified, <tt>cupsFlipDuplex</tt> will be ignored.</blockquote> | |
163 | ||
164 | <div class='table'> | |
165 | <table width='80%' summary='Back Side Raster Coordinate System'> | |
166 | <caption>Table 1: <a name='TABLE_1'>Back Side Raster Coordinate System</a></caption> | |
167 | <thead> | |
168 | <tr> | |
169 | <th>cupsBackSide</th> | |
170 | <th>Tumble Value</th> | |
171 | <th>Image Presentation</th> | |
172 | </tr> | |
173 | </thead> | |
174 | <tbody> | |
175 | <tr> | |
176 | <td><code>Normal</code></td> | |
177 | <td><code>false</code></td> | |
178 | <td>Left-to-right, top-to-bottom</td> | |
179 | </tr> | |
180 | <tr> | |
181 | <td><code>Normal</code></td> | |
182 | <td><code>true</code></td> | |
183 | <td>Left-to-right, top-to-bottom</td> | |
184 | </tr> | |
185 | <tr> | |
186 | <td><code>ManualTumble</code></td> | |
187 | <td><code>false</code></td> | |
188 | <td>Left-to-right, top-to-bottom</td> | |
189 | </tr> | |
190 | <tr> | |
191 | <td><code>ManualTumble</code></td> | |
192 | <td><code>true</code></td> | |
193 | <td>Right-to-left, bottom-to-top</td> | |
194 | </tr> | |
195 | <tr> | |
196 | <td><code>Rotated</code></td> | |
197 | <td><code>false</code></td> | |
198 | <td>Right-to-left, bottom-to-top</td> | |
199 | </tr> | |
200 | <tr> | |
201 | <td><code>Rotated</code></td> | |
202 | <td><code>true</code></td> | |
203 | <td>Right-to-left, top-to-bottom</td> | |
204 | </tr> | |
205 | <tr> | |
206 | <td><code>Flipped</code> *</td> | |
207 | <td><code>false</code></td> | |
208 | <td>Left-to-right, bottom-to-top</td> | |
209 | </tr> | |
210 | <tr> | |
211 | <td><code>Flipped</code> *</td> | |
212 | <td><code>true</code></td> | |
213 | <td>Right-to-left, top-to-bottom</td> | |
214 | </tr> | |
215 | </tbody> | |
216 | </table> | |
217 | </div> | |
218 | ||
219 | <p><em>* - Not supported in Mac OS X 10.5.x and earlier</em></p> | |
220 | ||
221 | <p>Examples:</p> | |
222 | ||
223 | <pre class='command'> | |
224 | <em>*% Flip the page image for the back side of duplexed output</em> | |
225 | *cupsBackSide: Flipped | |
226 | ||
227 | <em>*% Rotate the page image for the back side of duplexed output</em> | |
228 | *cupsBackSide: Rotated | |
229 | </pre> | |
230 | ||
231 | <p>Also see the related <tt>APDuplexRequiresFlippedMargins</tt> | |
232 | attribute.</p> | |
233 | ||
2abf387c | 234 | <h3>cupsEvenDuplex</h3> |
235 | ||
236 | <p class='summary'>*cupsEvenDuplex: boolean</p> | |
237 | ||
238 | <p>This boolean attribute notifies the RIP filters that the | |
239 | destination printer requires an even number of pages when 2-sided | |
240 | printing is selected. The default value is <code>false</code>.</p> | |
241 | ||
242 | <p>Example:</p> | |
243 | ||
244 | <pre class='command'> | |
245 | <em>*% Always send an even number of pages when duplexing</em> | |
246 | *cupsEvenDuplex: true | |
247 | </pre> | |
248 | ||
3d8365b8 | 249 | <h3>cupsFax</h3> |
250 | ||
251 | <p class='summary'>*cupsFax: boolean</p> | |
252 | ||
253 | <p>This boolean attribute specifies whether the PPD defines a facsimile device. The default is <tt>false</tt>.</p> | |
254 | ||
255 | <p>Examples:</p> | |
256 | ||
257 | <pre class='command'> | |
258 | *cupsFax: true | |
259 | </pre> | |
260 | ||
a4d04587 | 261 | <h3>cupsFilter</h3> |
262 | ||
263 | <p class='summary'>*cupsFilter: "source/type cost program"</p> | |
264 | ||
265 | <p>This string attribute provides a conversion rule from the | |
266 | given source type to the printer's native format using the | |
267 | filter "program". If a printer supports the source type directly, | |
268 | the special filter program "-" may be specified.</p> | |
ef416fc2 | 269 | |
270 | <p>Examples:</p> | |
271 | ||
272 | <pre class='command'> | |
273 | <em>*% Standard raster printer driver filter</em> | |
274 | *cupsFilter: "application/vnd.cups-raster 100 rastertofoo" | |
275 | ||
276 | <em>*% Plain text filter</em> | |
277 | *cupsFilter: "text/plain 10 texttofoo" | |
278 | ||
279 | <em>*% Pass-through filter for PostScript printers</em> | |
280 | *cupsFilter: "application/vnd.cups-postscript 0 -" | |
281 | </pre> | |
282 | ||
bc44d920 | 283 | <h3><span class='info'>Deprecated</span>cupsFlipDuplex</h3> |
ef416fc2 | 284 | |
a4d04587 | 285 | <p class='summary'>*cupsFlipDuplex: boolean</p> |
286 | ||
bc44d920 | 287 | <p>Due to implementation differences between Mac OS X and Ghostscript, |
288 | the <tt>cupsFlipDuplex</tt> attribute is deprecated. Instead, use | |
289 | the <tt>cupsBackSide</tt> attribute to specify the coordinate | |
290 | system (pixel layout) of the page data on the back side of duplex | |
291 | pages.</p> | |
09a101d6 | 292 | |
bc44d920 | 293 | <p>The value <code>true</code> maps to a <tt>cupsBackSide</tt> value |
294 | of <code>Rotated</code> on Mac OS X and <code>Flipped</code> with | |
295 | Ghostscript.</p> | |
09a101d6 | 296 | |
bc44d920 | 297 | <p>The default value is <code>false</code>.</p> |
ef416fc2 | 298 | |
bc44d920 | 299 | <blockquote><b>Note:</b> Mac OS X drivers that previously used |
300 | <tt>cupsFlipDuplex</tt> may wish to provide both the old and | |
301 | new attributes for maximum compatibility, for example: | |
ef416fc2 | 302 | |
303 | <pre class='command'> | |
bc44d920 | 304 | *cupsBackSide: Rotated |
ef416fc2 | 305 | *cupsFlipDuplex: true |
306 | </pre> | |
307 | ||
bc44d920 | 308 | Similarly, drivers written for other operating systems using |
309 | Ghostscript can use: | |
310 | ||
311 | <pre class='command'> | |
312 | *cupsBackSide: Flipped | |
313 | *cupsFlipDuplex: true | |
314 | </pre></blockquote> | |
a4d04587 | 315 | |
09a101d6 | 316 | <h3>cupsIPPFinishings</h3> |
317 | ||
318 | <p class='summary'>*cupsIPPFinishings number/text: "*Option Choice ..."</p> | |
319 | ||
320 | <p>This attribute defines a mapping from IPP <code>finishings</code> | |
321 | values to PPD options and choices.</p> | |
322 | ||
323 | <p>Examples:</p> | |
324 | ||
325 | <pre class='command'> | |
326 | *cupsIPPFinishings 4/staple: "*StapleLocation SinglePortrait" | |
327 | *cupsIPPFinishings 5/punch: "*PunchMedia Yes *PunchLocation LeftSide" | |
328 | *cupsIPPFinishings 20/staple-top-left: "*StapleLocation SinglePortrait" | |
329 | *cupsIPPFinishings 21/staple-bottom-left: "*StapleLocation SingleLandscape" | |
330 | </pre> | |
331 | ||
4744bd90 | 332 | <h3>cupsIPPReason</h3> |
333 | ||
334 | <p class='summary'>*cupsIPPReason reason/Reason Text: "optional URIs"</p> | |
335 | ||
336 | <p>This optional attribute maps custom | |
337 | <code>printer-state-reasons</code> keywords that are generated by | |
338 | the driver to human readable text. The optional URIs string | |
339 | contains zero or more URIs separated by a newline. Each URI can | |
340 | be a CUPS server absolute path to a help file under the | |
341 | scheduler's <code>DocumentRoot</code> directory, a full HTTP URL | |
342 | ("http://www.domain.com/path/to/help/page.html"), or any other | |
343 | valid URI which directs the user at additional information | |
344 | concerning the condition that is being reported.</p> | |
345 | ||
bc44d920 | 346 | <p>Since the reason text is limited to 80 characters by the PPD specification, |
347 | longer text strings can be included by URI-encoding the text with the "text" | |
348 | scheme, for example "text:some%20text". Multiple <code>text</code> URIs are | |
349 | combined (with spaces between each URI) by the <tt>ppdLocalizeIPPReason</tt> | |
350 | into a single string that can be displayed to the user.</p> | |
351 | ||
4744bd90 | 352 | <p>Examples:</p> |
353 | ||
354 | <pre class='command'> | |
355 | <em>*% Map com.vendor-error to text but no page</em> | |
356 | *cupsIPPReason com.vendor-error/A serious error occurred: "" | |
357 | ||
bc44d920 | 358 | <em>*% Map com.vendor-error to more than 80 characters of text but no page</em> |
359 | *cupsIPPReason com.vendor-error/A serious error occurred: "text:Now%20is%20the%20time | |
360 | text:for%20all%20good%20men%20to%20come%20to%20the%20aid%20of%20their%20country." | |
361 | ||
4744bd90 | 362 | <em>*% Map com.vendor-error to text and a local page</em> |
363 | *cupsIPPReason com.vendor-error/A serious error occurred: "/help/com.vendor/error.html" | |
364 | ||
365 | <em>*% Map com.vendor-error to text and a remote page</em> | |
366 | *cupsIPPReason com.vendor-error/A serious error occurred: "http://www.vendor.com/help" | |
367 | ||
368 | <em>*% Map com.vendor-error to text and a local, Apple help book, and remote page</em> | |
369 | *APHelpBook: "file:///Library/Printers/vendor/Help/filename" | |
370 | *cupsIPPReason com.vendor-error/A serious error occurred: "/help/com.vendor/error.html | |
371 | help:anchor='com.vendor-error'%20bookID=Vendor%20Help | |
372 | http://www.vendor.com/help" | |
373 | *End | |
374 | </pre> | |
375 | ||
a4d04587 | 376 | <h3>cupsLanguages</h3> |
377 | ||
378 | <p class='summary'>*cupsLanguages: "locale list"</p> | |
379 | ||
380 | <p>This attribute describes which language localizations are | |
381 | included in the PPD. The "locale list" string is a space-delimited | |
b94498cf | 382 | list of locale names ("en", "en_US", "fr_CA", etc.)</p> |
a4d04587 | 383 | |
384 | <p>Example:</p> | |
385 | ||
386 | <pre class='command'> | |
387 | <em>*% Specify Canadian, UK, and US English, and Candian and French French</em> | |
b94498cf | 388 | *cupsLanguages: "en_CA en_UK en_US fr_CA fr_CA" |
a4d04587 | 389 | </pre> |
390 | ||
ef416fc2 | 391 | <h3>cupsManualCopies</h3> |
392 | ||
a4d04587 | 393 | <p class='summary'>*cupsManualCopies: boolean</p> |
394 | ||
ef416fc2 | 395 | <p>This boolean attribute notifies the RIP filters that the |
396 | destination printer does not support copy generation in | |
a4d04587 | 397 | hardware. The default value is <code>false</code>.</p> |
ef416fc2 | 398 | |
399 | <p>Example:</p> | |
400 | ||
401 | <pre class='command'> | |
402 | <em>*% Tell the RIP filters to generate the copies for us</em> | |
403 | *cupsManualCopies: true | |
404 | </pre> | |
405 | ||
406 | <h3>cupsModelNumber</h3> | |
407 | ||
a4d04587 | 408 | <p class='summary'>*cupsModelNumber: number</p> |
409 | ||
ef416fc2 | 410 | <p>This integer attribute specifies a printer-specific model |
411 | number. This number can be used by a filter program to adjust | |
412 | the output for a specific model of printer.</p> | |
413 | ||
414 | <p>Example:</p> | |
415 | ||
416 | <pre class='command'> | |
417 | <em>*% Specify an integer for a driver-specific model number</em> | |
418 | *cupsModelNumber: 1234 | |
419 | </pre> | |
420 | ||
f7deaa1a | 421 | |
422 | <h3>cupsPJLCharset</h3> | |
423 | ||
424 | <p class='summary'>*cupsPJLCharset: "ISO character set name"</p> | |
425 | ||
426 | <p>This string attribute specifies the character set that is used | |
427 | for strings in PJL commands. If not specified, US-ASCII is | |
428 | assumed.</p> | |
429 | ||
430 | <p>Example:</p> | |
431 | ||
432 | <pre class='command'> | |
433 | <em>*% Specify UTF-8 is used in PJL strings</em> | |
434 | *cupsPJLCharset: "UTF-8" | |
435 | </pre> | |
436 | ||
437 | ||
ef416fc2 | 438 | <h3>cupsPortMonitor</h3> |
439 | ||
a4d04587 | 440 | <p class='summary'>*cupsPortMonitor urischeme/Descriptive Text: "port monitor"</p> |
441 | ||
ef416fc2 | 442 | <p>This string attribute specifies printer-specific "port |
443 | monitor" filters that may be used with the printer. The CUPS | |
444 | scheduler also looks for the <tt>Protocols</tt> attribute to see | |
445 | if the <tt>BCP</tt> or <tt>TBCP</tt> protocols are supported. If | |
446 | so, the corresponding port monitor ("bcp" and "tbcp", | |
447 | respectively) is listed in the printer's | |
448 | <tt>port-monitor-supported</tt> attribute.</p> | |
449 | ||
a4d04587 | 450 | <p>The "urischeme" portion of the attribute specifies the URI scheme |
451 | that this port monitor should be used for. Typically this is used to | |
452 | pre-select a particular port monitor for each type of connection that | |
453 | is supported by the printer. The "port monitor" string can be "none" | |
454 | to disable the port monitor for the given URI scheme.</p> | |
455 | ||
ef416fc2 | 456 | <p>Examples:</p> |
457 | ||
458 | <pre class='command'> | |
459 | <em>*% Specify a PostScript printer that supports the TBCP protocol</em> | |
460 | *Protocols: TBCP PJL | |
461 | ||
a4d04587 | 462 | <em>*% Specify that TBCP should be used for socket connections but not USB</em> |
463 | *cupsPortMonitor socket/AppSocket Printing: "tbcp" | |
464 | *cupsPortMonitor usb/USB Printing: "none" | |
465 | ||
ef416fc2 | 466 | <em>*% Specify a printer-specific port monitor for an Epson USB printer</em> |
a4d04587 | 467 | *cupsPortMonitor usb/USB Status Monitor: "epson-usb" |
ef416fc2 | 468 | </pre> |
469 | ||
f7deaa1a | 470 | <h3>cupsPreFilter</h3> |
471 | ||
472 | <p class='summary'>*cupsPreFilter: "source/type cost program"</p> | |
473 | ||
474 | <p>This string attribute provides a pre-filter rule. The pre-filter | |
475 | program will be inserted in the conversion chain immediately | |
476 | before the filter that accepts the given MIME type.</p> | |
477 | ||
478 | <p>Examples:</p> | |
479 | ||
480 | <pre class='command'> | |
481 | <em>*% PDF pre-filter</em> | |
482 | *cupsPreFilter: "application/pdf 100 mypdfprefilter" | |
483 | ||
484 | <em>*% PNG pre-filter</em> | |
485 | *cupsPreFilter: "image/png 0 mypngprefilter" | |
486 | </pre> | |
487 | ||
ef416fc2 | 488 | <h3>cupsVersion</h3> |
489 | ||
a4d04587 | 490 | <p class='summary'>*cupsVersion: major.minor</p> |
491 | ||
ef416fc2 | 492 | <p>This required attribute describes which version of the CUPS |
493 | PPD file extensions was used. Currently it must be the string | |
494 | "1.0", "1.1", or "1.2".</p> | |
495 | ||
496 | <p>Example:</p> | |
497 | ||
498 | <pre class='command'> | |
499 | <em>*% Specify a CUPS 1.2 driver</em> | |
500 | *cupsVersion: "1.2" | |
501 | </pre> | |
502 | ||
ef416fc2 | 503 | <h2 class='title'><a name='OPTIONS'>Custom Options</a></h2> |
504 | ||
505 | <p>CUPS supports custom options using an extension of the | |
506 | <tt>CustomPageSize</tt> and <tt>ParamCustomPageSize</tt> | |
507 | syntax:</p> | |
508 | ||
509 | <pre class='command'> | |
510 | *CustomFoo True: "command" | |
511 | *ParamCustomFoo Name1/Text 1: order type minimum maximum | |
512 | *ParamCustomFoo Name2/Text 2: order type minimum maximum | |
513 | ... | |
514 | *ParamCustomFoo NameN/Text N: order type minimum maximum | |
515 | </pre> | |
516 | ||
517 | <p>When the base option is part of the <tt>JCLSetup</tt> section, | |
518 | the "command" string contains JCL commands with "\order" | |
519 | placeholders for each numbered parameter. The CUPS API handles | |
a4d04587 | 520 | any necessary value quoting for HP-PJL commands. For example, if |
521 | the JCL command string is "@PJL SET PASSCODE=\1" and the first | |
522 | option value is "1234" then CUPS will output the string | |
523 | "@PJL SET PASSCODE=1234".</p> | |
ef416fc2 | 524 | |
525 | <p>For non-<tt>JCLSetup</tt> options, the "order" value is a | |
526 | number from 1 to N and specifies the order of values as they are | |
a4d04587 | 527 | placed on the stack before the command. For example, if the |
528 | PostScript command string is | |
529 | "<</cupsReal1 2 1 roll>>setpagedevice" and the | |
530 | option value is "2.0" then CUPS will output the string | |
531 | "2.0 <</cupsReal1 2 1 roll>>setpagedevice".</p> | |
ef416fc2 | 532 | |
533 | <p>The "type" is one of the following keywords:</p> | |
534 | ||
535 | <ul> | |
536 | ||
537 | <li><tt>curve</tt> - a real value from "minimum" to | |
538 | "maximum" representing a gamma correction curve using the | |
539 | function: f(x) = x <sup>value</sup></li> | |
540 | ||
541 | <li><tt>int</tt> - an integer value from "minimum" to | |
542 | "maximum"</li> | |
543 | ||
544 | <li><tt>invcurve</tt> - a real value from "minimum" to | |
545 | "maximum" representing a gamma correction curve using the | |
546 | function: f(x) = x <sup>1 / value</sup></li> | |
547 | ||
548 | <li><tt>passcode</tt> - a string of numbers value with a | |
549 | minimum of "minimum" numbers and a maximum of "maximum" | |
a4d04587 | 550 | numbers ("minimum" and "maximum" are numbers and passcode |
551 | strings are not displayed in the user interface)</li> | |
ef416fc2 | 552 | |
553 | <li><tt>password</tt> - a string value with a minimum of | |
554 | "minimum" characters and a maximum of "maximum" | |
a4d04587 | 555 | characters ("minimum" and "maximum" are numbers and password |
556 | strings are not displayed in the user interface)</li> | |
ef416fc2 | 557 | |
558 | <li><tt>points</tt> - a measurement value in points from | |
559 | "minimum" to "maximum"</li> | |
560 | ||
561 | <li><tt>real</tt> - a real value from "minimum" to | |
562 | "maximum"</li> | |
563 | ||
564 | <li><tt>string</tt> - a string value with a minimum of | |
565 | "minimum" characters and a maximum of "maximum" | |
a4d04587 | 566 | characters ("minimum" and "maximum" are numbers)</li> |
ef416fc2 | 567 | |
568 | </ul> | |
569 | ||
570 | <p>Examples:</p> | |
571 | ||
572 | <pre class='command'> | |
573 | <em>*% Base JCL key code option</em> | |
574 | *OpenUI JCLPasscode/Key Code: PickOne | |
575 | *OrderDependency: 10 JCLSetup *JCLPasscode | |
576 | *DefaultJCLPasscode: None | |
577 | *JCLPasscode None/No Code: "" | |
578 | *JCLPasscode 1111: "@PJL SET PASSCODE = 1111<0A>" | |
579 | *JCLPasscode 2222: "@PJL SET PASSCODE = 2222<0A>" | |
580 | *JCLPasscode 3333: "@PJL SET PASSCODE = 3333<0A>" | |
581 | *JCLCloseUI: *JCLPasscode | |
582 | ||
583 | <em>*% Custom JCL key code option</em> | |
584 | *CustomJCLPasscode True: "@PJL SET PASSCODE = \1<0A>" | |
585 | *ParamCustomJCLPasscode Code/Key Code: 1 passcode 4 4 | |
586 | ||
587 | ||
a4d04587 | 588 | <em>*% Base PostScript watermark option</em> |
589 | *OpenUI WatermarkText/Watermark Text: PickOne | |
590 | *OrderDependency: 10 AnySetup *WatermarkText | |
591 | *DefaultWatermarkText: None | |
592 | *WatermarkText None: "" | |
593 | *WatermarkText Draft: "<</cupsString1(Draft)>>setpagedevice" | |
594 | *CloseUI: *WatermarkText | |
595 | ||
596 | <em>*% Custom PostScript watermark option</em> | |
b86bc4cf | 597 | *CustomWatermarkText True: "<</cupsString1 3 -1 roll>>setpagedevice" |
a4d04587 | 598 | *ParamCustomWatermarkText Text: 1 string 0 32 |
599 | ||
600 | ||
ef416fc2 | 601 | <em>*% Base PostScript gamma/density option</em> |
602 | *OpenUI GammaDensity/Gamma and Density: PickOne | |
603 | *OrderDependency: 10 AnySetup *GammaDensity | |
604 | *DefaultGammaDensity: Normal | |
605 | *GammaDensity Normal/Normal: "<</cupsReal1 1.0/cupsReal2 1.0>>setpagedevice" | |
606 | *GammaDensity Light/Lighter: "<</cupsReal1 0.9/cupsReal2 0.67>>setpagedevice" | |
607 | *GammaDensity Dark/Darker: "<</cupsReal1 1.1/cupsReal2 1.5>>setpagedevice" | |
a4d04587 | 608 | *CloseUI: *GammaDensity |
ef416fc2 | 609 | |
610 | <em>*% Custom PostScript gamma/density option</em> | |
b86bc4cf | 611 | *CustomGammaDensity True: "<</cupsReal1 3 -1 roll/cupsReal2 5 -1>>setpagedevice" |
ef416fc2 | 612 | *ParamCustomGammaDensity Gamma: 1 curve 0.1 10 |
613 | *ParamCustomGammaDensity Density: 2 real 0 2 | |
614 | </pre> | |
615 | ||
616 | ||
617 | <h2 class='title'><a name='PROFILES'>Color Profiles</a></h2> | |
618 | ||
a4d04587 | 619 | <p>CUPS supports two types of color profiles. The first type is |
620 | based on sRGB and is used by the standard CUPS raster filters and | |
621 | ESP Ghostscript. The second type is based on ICC profiles and is | |
622 | used by the Core Graphics-based filters on MacOS X.</p> | |
623 | ||
624 | <blockquote><b>Note:</b> At this time, none of the CUPS raster | |
625 | filters support ICC profiles. This will be addressed as time | |
626 | and resources permit.</blockquote> | |
627 | ||
ef416fc2 | 628 | <h3>cupsColorProfile</h3> |
629 | ||
a4d04587 | 630 | <p class='summary'>*cupsColorProfile Resolution/MediaType: "density |
631 | gamma m00 m01 m02 m10 m11 m12 m20 m21 m22"</p> | |
ef416fc2 | 632 | |
a4d04587 | 633 | <p>This string attribute specifies an sRGB-based color profile |
634 | consisting of gamma and density controls and a 3x3 CMY color | |
635 | transform matrix.</p> | |
ef416fc2 | 636 | |
637 | <p>The <i>Resolution</i> and <i>MediaType</i> values may be "-" | |
638 | to act as a wildcard. Otherwise they must match one of the | |
639 | <tt>Resolution</tt> or <tt>MediaType</tt> attributes defined in | |
640 | the PPD file.</p> | |
641 | ||
642 | <p>The <i>density</i> and <i>gamma</i> values define gamma and | |
643 | density adjustment function such that:</p> | |
644 | ||
645 | <pre class='command'> | |
646 | f(x) = density * x <sup style='font-size: 100%'>gamma</sup> | |
647 | </pre> | |
648 | ||
649 | <p>The <i>m00</i> through <i>m22</i> values define a 3x3 | |
650 | transformation matrix for the CMY color values. The density | |
651 | function is applied <i>after</i> the CMY transformation:</p> | |
652 | ||
653 | <pre class='command'> | |
654 | | m00 m01 m02 | | |
655 | | m10 m11 m12 | | |
656 | | m20 m21 m22 | | |
657 | </pre> | |
658 | ||
659 | <p>Examples:</p> | |
660 | ||
661 | <pre class='command'> | |
662 | <em>*% Specify a profile for printing at 360dpi on all media types</em> | |
663 | *cupsColorProfile 360dpi/-: "1.0 1.5 1.0 0.0 -0.2 -0.4 1.0 0.0 -0.2 0.0 1.0" | |
664 | ||
665 | <em>*% Specify a profile for printing at 720dpi on Glossy media</em> | |
666 | *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" | |
667 | ||
668 | <em>*% Specify a default profile for printing at all other resolutions and media types</em> | |
669 | *cupsColorProfile -/-: "0.9 2.0 1.0 0.0 -0.2 -0.4 1.0 0.0 -0.2 0.0 1.0" | |
670 | </pre> | |
671 | ||
672 | <h3>cupsICCProfile</h3> | |
673 | ||
a4d04587 | 674 | <p class='summary'>*cupsICCProfile |
675 | ColorModel.MediaType.Resolution/Description: "filename"</p> | |
ef416fc2 | 676 | |
a4d04587 | 677 | <p>This attribute specifies an ICC color profile that is |
678 | used to convert the document colors to the device | |
679 | colorspace. The <tt>ColorModel</tt>, <tt>MediaType</tt>, and | |
ef416fc2 | 680 | <tt>Resolution</tt> keywords specify a selector for color |
681 | profiles. If omitted, the color profile will match any option | |
682 | keyword for the corresponding main keyword.</p> | |
683 | ||
684 | <p>The <tt>Description</tt> specifies human-readable text that | |
685 | is associated with the color profile. The <tt>filename</tt> | |
686 | portion specifies the ICC color profile to use; if the filename | |
687 | is not absolute, it is loaded relative to the | |
688 | <var>/usr/share/cups/profiles</var> directory.</p> | |
689 | ||
690 | <p>Examples:</p> | |
691 | ||
692 | <pre class='command'> | |
693 | <em>*% Specify a profile for CMYK printing at 360dpi on all media types</em> | |
694 | *cupsICCProfile CMYK..360dpi/360dpi CMYK: "vendor/foo-360-cmyk.icc" | |
695 | ||
696 | <em>*% Specify a profile for RGB printing at 720dpi on Glossy media</em> | |
697 | *cupsColorProfile RGB.Glossy.720dpi/720dpi Glossy: "vendor/foo-720-glossy-rgb.icc" | |
698 | ||
699 | <em>*% Specify a default profile for printing at all other resolutions and media types</em> | |
fa73b229 | 700 | *cupsICCProfile ../Default: "vendor/foo-default.icc" |
ef416fc2 | 701 | </pre> |
702 | ||
703 | <h4>Customizing the Profile Selection Keywords</h4> | |
704 | ||
a9252913 | 705 | <p>The <tt>MediaType</tt> and <tt>Resolution</tt> keywords can be |
706 | reassigned to different main keywords, allowing drivers to do | |
707 | color profile selection based on different parameters. The | |
708 | <tt>cupsICCQualifier2</tt> and <tt>cupsICCQualifier3</tt> | |
ef416fc2 | 709 | attributes define the mapping from selector to main keyword:</p> |
710 | ||
711 | <pre class='command'> | |
a9252913 | 712 | *cupsICCQualifier2: MainKeyword2 |
713 | *cupsICCQualifier3: MainKeyword3 | |
ef416fc2 | 714 | </pre> |
715 | ||
716 | <p>The default mapping is as follows:</p> | |
717 | ||
718 | <pre class='command'> | |
ef416fc2 | 719 | *cupsICCQualifier2: MediaType |
720 | *cupsICCQualifier3: Resolution | |
721 | </pre> | |
722 | ||
723 | ||
ecdc0628 | 724 | <h2 class='title'><a name='I18N'>Globalized PPD Support</a></h2> |
ef416fc2 | 725 | |
726 | <p>CUPS 1.2 and higher adds support for PPD files containing multiple | |
a4d04587 | 727 | languages by following the following additional rules:</p> |
ef416fc2 | 728 | |
729 | <ol> | |
730 | ||
a4d04587 | 731 | <li>The <tt>LanguageVersion</tt> MUST be <tt>English</tt></li> |
732 | ||
733 | <li>The <tt>LanguageEncoding</tt> MUST be <tt>ISOLatin1</tt></li> | |
734 | ||
735 | <li>The <tt>cupsLanguages</tt> attribute MUST be provided and | |
736 | list each of the supported locales in the PPD file</li> | |
737 | ||
738 | <li>Main and option keywords MUST NOT exceed 34 (instead of 40) | |
739 | characters to allow room for the locale prefixes in translation | |
740 | attributes</li> | |
ef416fc2 | 741 | |
a4d04587 | 742 | <li>The main keyword "Translation" MUST NOT be used</li> |
ef416fc2 | 743 | |
a4d04587 | 744 | <li>Translation strings included with the main and option |
745 | keywords MUST NOT contain characters outside the ASCII | |
746 | subset of ISOLatin1 and UTF-8; developers wishing to use | |
747 | characters outside ASCII MUST provide a separate set of | |
748 | English localization attributes for the affected keywords.</li> | |
ef416fc2 | 749 | |
a4d04587 | 750 | <li>Localizations are specified using a locale prefix of |
ef416fc2 | 751 | the form "ll" or "ll_CC." where "ll" is the 2-letter ISO |
752 | language code and "CC" is the 2-letter ISO country | |
b94498cf | 753 | code<ul> |
754 | <li>A generic language translation ("ll") SHOULD be provided with country-specific differences ("ll_CC") provided only as needed</li> | |
755 | <li>For historical reasons, the "zh" and "zh_CN" locales map to Simplified Chinese while the "zh_TW" locale maps to Traditional Chinese</li> | |
756 | </ul></li> | |
ef416fc2 | 757 | |
a4d04587 | 758 | <li>Locale-specific translation strings MUST be encoded |
759 | using UTF-8.</li> | |
ef416fc2 | 760 | |
a4d04587 | 761 | <li>Main keywords MUST be localized using one of the |
ef416fc2 | 762 | following forms: |
763 | <p><tt>*ll.Translation MainKeyword/translation | |
764 | text: ""</tt><br /> | |
765 | <tt>*ll_CC.Translation MainKeyword/translation | |
766 | text: ""</tt></p></li> | |
767 | ||
a4d04587 | 768 | <li>Option keywords MUST be localized using one of the |
ef416fc2 | 769 | following forms: |
770 | <p><tt>*ll.MainKeyword OptionKeyword/translation | |
771 | text: ""</tt><br /> | |
772 | <tt>*ll_CC.MainKeyword OptionKeyword/translation | |
773 | text: ""</tt></p></li> | |
774 | ||
a4d04587 | 775 | <li>Localization attributes MAY appear anywhere after the |
776 | first line of the PPD file</li> | |
777 | ||
ef416fc2 | 778 | </ol> |
779 | ||
a4d04587 | 780 | <blockquote><b>Note:</b> |
781 | We use a <tt>LanguageEncoding</tt> value of <tt>ISOLatin1</tt> | |
782 | and limit the allowed base translation strings to ASCII to avoid | |
783 | character coding issues that would otherwise occur. In addition, | |
784 | requiring the base translation strings to be in English allows | |
785 | for easier fallback translation when no localization is provided | |
786 | in the PPD file for a given locale.</blockquote> | |
ef416fc2 | 787 | |
a4d04587 | 788 | <p>Examples:</p> |
ef416fc2 | 789 | |
790 | <pre class='command'> | |
791 | *LanguageVersion: English | |
792 | *LanguageEncoding: ISOLatin1 | |
b94498cf | 793 | *cupsLanguages: "de fr_CA" |
ef416fc2 | 794 | *ModelName: "Foobar Laser 9999" |
795 | ||
a4d04587 | 796 | <em>*% Localize ModelName for French and German</em> |
b94498cf | 797 | *fr_CA.Translation ModelName/La Foobar Laser 9999: "" |
798 | *de.Translation ModelName/Foobar LaserDrucken 9999: "" | |
ef416fc2 | 799 | |
4744bd90 | 800 | *cupsIPPReason com.vendor-error/A serious error occurred: "/help/com.vendor/error.html" |
b423cd4c | 801 | <em>*% Localize printer-state-reason for French and German</em> |
b94498cf | 802 | *fr_CA.cupsIPPReason com.vendor-error/Une erreur sèrieuse s'est produite: "/help/com.vendor/error.html" |
803 | *de.cupsIPPReason com.vendor-error/Eine ernste Störung trat: "/help/com.vendor/error.html" | |
b423cd4c | 804 | |
ef416fc2 | 805 | ... |
806 | ||
807 | *OpenUI *InputSlot/Paper Source: PickOne | |
808 | *OrderDependency: 10 AnySetup *InputSlot | |
809 | *DefaultInputSlot: Auto | |
a4d04587 | 810 | <em>*% Localize InputSlot for French and German</em> |
b94498cf | 811 | *fr_CA.Translation InputSlot/Papier source: "" |
812 | *de.Translation InputSlot/Papiereinzug: "" | |
ef416fc2 | 813 | *InputSlot Auto/Default: "<</ManualFeed false>>setpagedevice" |
a4d04587 | 814 | <em>*% Localize InputSlot=Auto for French and German</em> |
b94498cf | 815 | *fr_CA.InputSlot Auto/Par Defaut: "" |
816 | *de.InputSlot Auto/Standard: "" | |
ef416fc2 | 817 | *InputSlot Manual/Manual Feed: "<</ManualFeed true>>setpagedevice" |
a4d04587 | 818 | <em>*% Localize InputSlot=Manual for French and German</em> |
b94498cf | 819 | *fr_CA.InputSlot Manual/Manuel mecanisme de alimentation: "" |
820 | *de.InputSlot Manual/Manueller Einzug: "" | |
ef416fc2 | 821 | *CloseUI: *InputSlot |
822 | </pre> | |
823 | ||
824 | ||
b86bc4cf | 825 | <h2 class='title'><a name='RASTERPS'>Writing PostScript Option Commands for Raster Drivers</a></h2> |
826 | ||
827 | <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 attributes such as page size, resolution, and so forth. For example, the following code sets the page size to A4 size:</p> | |
828 | ||
829 | <pre class='command'> | |
830 | *PageSize A4: "<</PageSize[595 842]>>setpagedevice" | |
831 | </pre> | |
832 | ||
833 | <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> | |
834 | ||
835 | <pre class='command'> | |
836 | *CustomWatermarkText True: "<</cupsString1 3 -1 roll>>setpagedevice" | |
837 | </pre> | |
838 | ||
839 | <p>For a custom string value of "My Watermark", CUPS will produce the following PostScript code for the option:</p> | |
840 | ||
841 | <pre class='command'> | |
842 | (My Watermark) | |
843 | <</cupsString1 3 -1 roll>>setpagedevice | |
844 | </pre> | |
845 | ||
846 | <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> | |
847 | ||
848 | <pre class='command'> | |
849 | <</cupsString1(My Watermark)>>setpagedevice | |
850 | </pre> | |
851 | ||
852 | <p>The resulting dictionary sets the page device attributes that are sent to your raster driver in the page header.</p> | |
853 | ||
09a101d6 | 854 | <h3>Custom Page Size Code</h3> |
855 | ||
856 | <p>There are many possible implementations of the <tt>CustomPageSize</tt> code. For CUPS raster drivers, the following code is recommended:</p> | |
857 | ||
858 | <pre class='command'> | |
859 | *ParamCustomPageSize Width: 1 points <i>min-width max-width</i> | |
860 | *ParamCustomPageSize Height: 2 points <i>min-height max-height</i> | |
861 | *ParamCustomPageSize WidthOffset: 3 points 0 0 | |
862 | *ParamCustomPageSize HeightOffset: 4 points 0 0 | |
863 | *ParamCustomPageSize Orientation: 5 int 0 0 | |
864 | *CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice" | |
865 | </pre> | |
866 | ||
b86bc4cf | 867 | <h3>Supported PostScript Operators</h3> |
868 | ||
869 | <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> | |
870 | ||
871 | <ul> | |
872 | ||
873 | <li><tt><<</tt> - Start a dictionary.</li> | |
874 | ||
875 | <li><tt>>></tt> - End a dictionary.</li> | |
876 | ||
877 | <li><tt>[</tt> - Start an array.</li> | |
878 | ||
879 | <li><tt>]</tt> - End an array.</li> | |
880 | ||
881 | <li><tt>copy</tt> - Copy the top N objects on the stack.</li> | |
882 | ||
883 | <li><tt>dup</tt> - Copy the top object on the stack.</li> | |
884 | ||
885 | <li><tt>index</tt> - Copy the Nth from the top object on the stack.</li> | |
886 | ||
887 | <li><tt>pop</tt> - Pop the top object on the stack.</li> | |
888 | ||
889 | <li><tt>roll</tt> - Shift the top N objects on the stack.</li> | |
890 | ||
891 | <li><tt>setpagedevice</tt> - Set the page header values according to the key/value dictionary on the stack.</li> | |
892 | ||
893 | </ul> | |
894 | ||
09a101d6 | 895 | <blockquote><b>Note:</b> <em>Never<em> use the unsupported <tt>dict</tt> or <tt>put</tt> operators in your option code. These operators are typically used in option code dating back to Level 1 PostScript printers, which did not support the simpler <tt><<</tt> or <tt>>></tt> operators. If you have old option code using <tt>dict</tt> or <tt>put</tt>, you can rewrite it very easily to use the newer <tt><<</tt> and <tt>>></tt> operators instead. For example, the following code to set the page size: |
896 | ||
897 | <style type='text/css'><!-- | |
898 | PRE B { | |
899 | background: #000000; | |
900 | color: #ffffff; | |
901 | padding: 2px 5px; | |
902 | } | |
903 | --></style> | |
904 | ||
905 | <pre class='command'> | |
906 | <b>1 dict dup</b> /PageSize [612 792] <b>put</b> setpagedevice | |
907 | </pre> | |
908 | ||
909 | <p>can be rewritten as:</p> | |
910 | ||
911 | <pre class='command'> | |
912 | <b><<</b> /PageSize [612 792] <b>>></b> setpagedevice | |
913 | </pre> | |
914 | ||
915 | </blockquote> | |
916 | ||
b86bc4cf | 917 | <h3>Supported Page Device Attributes</h3> |
918 | ||
09a101d6 | 919 | <p>Table 2 shows the supported page device attributes along with PostScript code examples.</p> |
b86bc4cf | 920 | |
921 | <div class='table'> | |
922 | <table summary='Supported Page Device Attributes'> | |
09a101d6 | 923 | <caption>Table 2: <a name='TABLE_2'>Supported Page Device Attributes</a></caption> |
b86bc4cf | 924 | <thead> |
925 | <tr> | |
926 | <th>Name(s)</th> | |
927 | <th>Type</th> | |
928 | <th>Description</th> | |
929 | <th>Example(s)</th> | |
930 | </tr> | |
931 | </thead> | |
932 | <tbody> | |
933 | <tr valign='top'> | |
934 | <td><tt>AdvanceDistance</tt></td> | |
935 | <td>Integer</td> | |
936 | <td>Specifies the number of points to advance roll media after printing.</td> | |
937 | <td><tt><</AdvanceDistance 18>>setpagedevice</tt></td> | |
938 | </tr> | |
939 | <tr valign='top'> | |
940 | <td><tt>AdvanceMedia</tt></td> | |
941 | <td>Integer</td> | |
942 | <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> | |
943 | <td><tt><</AdvanceMedia 4>>setpagedevice</tt></td> | |
944 | </tr> | |
945 | <tr valign='top'> | |
946 | <td><tt>Collate</tt></td> | |
947 | <td>Boolean</td> | |
948 | <td>Specifies whether collated copies are required.</td> | |
949 | <td><tt><</Collate true>>setpagedevice</tt></td> | |
950 | </tr> | |
951 | <tr valign='top'> | |
952 | <td><tt>CutMedia</tt></td> | |
953 | <td>Integer</td> | |
954 | <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> | |
955 | <td><tt><</CutMedia 1>>setpagedevice</tt></td> | |
956 | </tr> | |
957 | <tr valign='top'> | |
958 | <td><tt>Duplex</tt></td> | |
959 | <td>Boolean</td> | |
960 | <td>Specifies whether 2-sided printing is required.</td> | |
961 | <td><tt><</Duplex true>>setpagedevice</tt></td> | |
962 | </tr> | |
963 | <tr valign='top'> | |
964 | <td><tt>HWResolution</tt></td> | |
965 | <td>Integer Array</td> | |
966 | <td>Specifies the resolution of the page image in pixels per inch.</td> | |
967 | <td><tt><</HWResolution[1200 1200]>>setpagedevice</tt></td> | |
968 | </tr> | |
969 | <tr valign='top'> | |
970 | <td><tt>InsertSheet</tt></td> | |
971 | <td>Boolean</td> | |
972 | <td>Specifies whether to insert a blank sheet before the job.</td> | |
973 | <td><tt><</InsertSheet true>>setpagedevice</tt></td> | |
974 | </tr> | |
975 | <tr valign='top'> | |
976 | <td><tt>Jog</tt></td> | |
977 | <td>Integer</td> | |
978 | <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> | |
979 | <td><tt><</Jog 2>>setpagedevice</tt></td> | |
980 | </tr> | |
981 | <tr valign='top'> | |
982 | <td><tt>LeadingEdge</tt></td> | |
983 | <td>Integer</td> | |
984 | <td>Specifies the leading edge of the media: 0 = top, 1 = right, 2 = bottom, 3 = left.</td> | |
985 | <td><tt><</LeadingEdge 0>>setpagedevice</tt></td> | |
986 | </tr> | |
987 | <tr valign='top'> | |
988 | <td><tt>ManualFeed</tt></td> | |
989 | <td>Boolean</td> | |
990 | <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> | |
991 | <td><tt><</ManualFeed true>>setpagedevice</tt></td> | |
992 | </tr> | |
993 | <tr valign='top'> | |
994 | <td><tt>MediaClass</tt></td> | |
995 | <td>String</td> | |
996 | <td>Specifies a named media.</td> | |
997 | <td><tt><</MediaClass (Invoices)>>setpagedevice</tt></td> | |
998 | </tr> | |
999 | <tr valign='top'> | |
1000 | <td><tt>MediaColor</tt></td> | |
1001 | <td>String</td> | |
1002 | <td>Specifies the color of the media.</td> | |
1003 | <td><tt><</MediaColor >>setpagedevice</tt></td> | |
1004 | </tr> | |
1005 | <tr valign='top'> | |
1006 | <td><tt>MediaPosition</tt></td> | |
1007 | <td>Integer</td> | |
1008 | <td>Specifies the tray or source of the media.</td> | |
1009 | <td><tt><</MediaPosition 12>>setpagedevice</tt></td> | |
1010 | </tr> | |
1011 | <tr valign='top'> | |
1012 | <td><tt>MediaType</tt></td> | |
1013 | <td>String</td> | |
1014 | <td>Specifies the general media type.</td> | |
1015 | <td><tt><</MediaType (Glossy)>>setpagedevice</tt></td> | |
1016 | </tr> | |
1017 | <tr valign='top'> | |
1018 | <td><tt>MediaWeight</tt></td> | |
1019 | <td>Integer</td> | |
1020 | <td>Specifies the media weight in grams per meter<sup>2</sup>.</td> | |
1021 | <td><tt><</MediaWeight 100>>setpagedevice</tt></td> | |
1022 | </tr> | |
1023 | <tr valign='top'> | |
1024 | <td><tt>MirrorPrint</tt></td> | |
1025 | <td>Boolean</td> | |
1026 | <td>Specifies whether to flip the output image horizontally.</td> | |
1027 | <td><tt><</MirrorPrint true>>setpagedevice</tt></td> | |
1028 | </tr> | |
1029 | <tr valign='top'> | |
1030 | <td><tt>NegativePrint</tt></td> | |
1031 | <td>Boolean</td> | |
1032 | <td>Specifies whether to invert the output image.</td> | |
1033 | <td><tt><</NegativePrint true>>setpagedevice</tt></td> | |
1034 | </tr> | |
1035 | <tr valign='top'> | |
1036 | <td><tt>NumCopies</tt></td> | |
1037 | <td>Integer</td> | |
1038 | <td>Specifies the number of copies to produce of each page.</td> | |
1039 | <td><tt><</NumCopies 100>>setpagedevice</tt></td> | |
1040 | </tr> | |
1041 | <tr valign='top'> | |
1042 | <td><tt>Orientation</tt></td> | |
1043 | <td>Integer</td> | |
1044 | <td>Specifies the orientation of the output: 0 = portrait, 1 = landscape rotated counter-clockwise, 2 = upside-down, 3 = landscape rotated clockwise.</td> | |
1045 | <td><tt><</Orientation 3>>setpagedevice</tt></td> | |
1046 | </tr> | |
1047 | <tr valign='top'> | |
1048 | <td><tt>OutputFaceUp</tt></td> | |
1049 | <td>Boolean</td> | |
1050 | <td>Specifies whether to place the media face-up in the output bin/tray.</td> | |
1051 | <td><tt><</OutputFaceUp true>>setpagedevice</tt></td> | |
1052 | </tr> | |
1053 | <tr valign='top'> | |
1054 | <td><tt>OutputType</tt></td> | |
1055 | <td>String</td> | |
1056 | <td>Specifies the output type name.</td> | |
1057 | <td><tt><</OutputType (Photo)>>setpagedevice</tt></td> | |
1058 | </tr> | |
1059 | <tr valign='top'> | |
1060 | <td><tt>PageSize</tt></td> | |
1061 | <td>Integer/Real Array</td> | |
1062 | <td>Specifies the width and length/height of the page in points.</td> | |
1063 | <td><tt><</PageSize[595 842]>>setpagedevice</tt></td> | |
1064 | </tr> | |
1065 | <tr valign='top'> | |
1066 | <td><tt>Separations</tt></td> | |
1067 | <td>Boolean</td> | |
1068 | <td>Specifies whether to produce color separations.</td> | |
1069 | <td><tt><</Separations true>>setpagedevice</tt></td> | |
1070 | </tr> | |
1071 | <tr valign='top'> | |
1072 | <td><tt>TraySwitch</tt></td> | |
1073 | <td>Boolean</td> | |
1074 | <td>Specifies whether to switch trays automatically.</td> | |
1075 | <td><tt><</TraySwitch true>>setpagedevice</tt></td> | |
1076 | </tr> | |
1077 | <tr valign='top'> | |
1078 | <td><tt>Tumble</tt></td> | |
1079 | <td>Boolean</td> | |
1080 | <td>Specifies whether the back sides of pages are rotated 180 degrees.</td> | |
1081 | <td><tt><</Tumble true>>setpagedevice</tt></td> | |
1082 | </tr> | |
1083 | <tr valign='top'> | |
1084 | <td><tt>cupsBorderlessScalingFactor</tt></td> | |
1085 | <td>Real</td> | |
1086 | <td>Specifies the amount to scale the page image dimensions.</td> | |
1087 | <td><tt><</cupsBorderlessScalingFactor 1.01>>setpagedevice</tt></td> | |
1088 | </tr> | |
1089 | <tr valign='top'> | |
1090 | <td><tt>cupsColorOrder</tt></td> | |
1091 | <td>Integer</td> | |
1092 | <td>Specifies the order of colors: 0 = chunked, 1 = banded, 2 = planar.</td> | |
1093 | <td><tt><</cupsColorOrder 0>>setpagedevice</tt></td> | |
1094 | </tr> | |
1095 | <tr valign='top'> | |
1096 | <td><tt>cupsColorSpace</tt></td> | |
1097 | <td>Integer</td> | |
1098 | <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> | |
1099 | <td><tt><</cupsColorSpace >>setpagedevice</tt></td> | |
1100 | </tr> | |
1101 | <tr valign='top'> | |
1102 | <td><tt>cupsCompression</tt></td> | |
1103 | <td>Integer</td> | |
1104 | <td>Specifies a driver compression type/mode.</td> | |
1105 | <td><tt><</cupsCompression 2>>setpagedevice</tt></td> | |
1106 | </tr> | |
1107 | <tr valign='top'> | |
1108 | <td><tt>cupsInteger0<br> | |
1109 | ...<br> | |
1110 | cupsInteger15</tt></td> | |
1111 | <td>Integer</td> | |
1112 | <td>Specifies driver integer values.</td> | |
1113 | <td><tt><</cupsInteger11 1234>>setpagedevice</tt></td> | |
1114 | </tr> | |
1115 | <tr valign='top'> | |
1116 | <td><tt>cupsMarkerType</tt></td> | |
1117 | <td>String</td> | |
1118 | <td>Specifies the type of ink/toner to use.</td> | |
1119 | <td><tt><</cupsMarkerType (Black+Color)>>setpagedevice</tt></td> | |
1120 | </tr> | |
1121 | <tr valign='top'> | |
1122 | <td><tt>cupsMediaType</tt></td> | |
1123 | <td>Integer</td> | |
1124 | <td>Specifies a numeric media type.</td> | |
1125 | <td><tt><</cupsMediaType 999>>setpagedevice</tt></td> | |
1126 | </tr> | |
1127 | <tr valign='top'> | |
1128 | <td><tt>cupsPageSizeName</tt></td> | |
1129 | <td>String</td> | |
1130 | <td>Specifies the name of the page size.</td> | |
1131 | <td><tt><</cupsPageSizeName (A4.Full)>>setpagedevice</tt></td> | |
1132 | </tr> | |
1133 | <tr valign='top'> | |
1134 | <td><tt>cupsPreferredBitsPerColor</tt></td> | |
1135 | <td>Integer</td> | |
1136 | <td>Specifies the preferred number of bits per color, typically 8 or 16.</td> | |
1137 | <td><tt><</cupsPreferredBitsPerColor 16>>setpagedevice</tt></td> | |
1138 | </tr> | |
1139 | <tr valign='top'> | |
1140 | <td><tt>cupsReal0<br> | |
1141 | ...<br> | |
1142 | cupsReal15</tt></td> | |
1143 | <td>Real</td> | |
1144 | <td>Specifies driver real number values.</td> | |
1145 | <td><tt><</cupsReal15 1.234>>setpagedevice</tt></td> | |
1146 | </tr> | |
1147 | <tr valign='top'> | |
1148 | <td><tt>cupsRenderingIntent</tt></td> | |
1149 | <td>String</td> | |
1150 | <td>Specifies the color rendering intent.</td> | |
1151 | <td><tt><</cupsRenderingIntent (AbsoluteColorimetric)>>setpagedevice</tt></td> | |
1152 | </tr> | |
1153 | <tr valign='top'> | |
1154 | <td><tt>cupsRowCount</tt></td> | |
1155 | <td>Integer</td> | |
1156 | <td>Specifies the number of rows of raster data to print on each line for some drivers.</td> | |
1157 | <td><tt><</cupsRowCount 24>>setpagedevice</tt></td> | |
1158 | </tr> | |
1159 | <tr valign='top'> | |
1160 | <td><tt>cupsRowFeed</tt></td> | |
1161 | <td>Integer</td> | |
1162 | <td>Specifies the number of rows to feed between passes for some drivers.</td> | |
1163 | <td><tt><</cupsRowFeed 17>>setpagedevice</tt></td> | |
1164 | </tr> | |
1165 | <tr valign='top'> | |
1166 | <td><tt>cupsRowStep</tt></td> | |
1167 | <td>Integer</td> | |
1168 | <td>Specifies the number of lines between columns/rows on the print head for some drivers.</td> | |
1169 | <td><tt><</cupsRowStep 2>>setpagedevice</tt></td> | |
1170 | </tr> | |
1171 | <tr valign='top'> | |
1172 | <td><tt>cupsString0<br> | |
1173 | ...<br> | |
1174 | cupsString15</tt></td> | |
1175 | <td>String</td> | |
1176 | <td>Specifies driver string values.</td> | |
1177 | <td><tt><</cupsString0(String Value)>>setpagedevice</tt></td> | |
1178 | </tr> | |
1179 | </tbody> | |
1180 | </table></div> | |
1181 | ||
1182 | ||
ef416fc2 | 1183 | <h2 class='title'><a name='HISTORY'>Change History</a></h2> |
1184 | ||
f7deaa1a | 1185 | <h3>Changes in CUPS 1.3</h3> |
1186 | ||
1187 | <ul> | |
1188 | ||
bc44d920 | 1189 | <li>Added <tt>cupsBackSide</tt> and deprecated <tt>cupsFlipDuplex</tt>.</li> |
1190 | ||
1191 | <li>Added text URI information to <tt>cupsIPPReason</tt> documentation.</li> | |
1192 | ||
09a101d6 | 1193 | <li>Added <tt>APPrinterPreset</tt>, <tt>cupsIPPFinishings</tt>, and <tt>cupsPreFilter</tt> attributes.</li> |
1194 | ||
1195 | <li>Added discussion of custom option code, sample <tt>CustomPageSize</tt> code, and "do not use dict and put" note.</li> | |
f7deaa1a | 1196 | |
1197 | </ul> | |
1198 | ||
b86bc4cf | 1199 | <h3>Changes in CUPS 1.2.8</h3> |
1200 | ||
1201 | <ul> | |
1202 | ||
1203 | <li>Added section on supported PostScript commands for raster | |
1204 | drivers</li> | |
1205 | ||
1206 | </ul> | |
1207 | ||
ef416fc2 | 1208 | <h3>Changes in CUPS 1.2</h3> |
1209 | ||
1210 | <ul> | |
1211 | ||
ecdc0628 | 1212 | <li>Added globalization support attributes</li> |
ef416fc2 | 1213 | |
1214 | <li>Added custom option values support</li> | |
1215 | ||
4744bd90 | 1216 | <li>Added <tt>APBookFile</tt> attribute</li> |
1217 | ||
a4d04587 | 1218 | <li>Added <tt>APDuplexRequiresFlippedMargin</tt> attribute</li> |
1219 | ||
ef416fc2 | 1220 | <li>Added <tt>cupsICCProfile</tt> attribute</li> |
1221 | ||
4744bd90 | 1222 | <li>Added <tt>cupsIPPReason</tt> attribute</li> |
1223 | ||
a4d04587 | 1224 | <li>Added <tt>cupsLanguages</tt> attribute</li> |
1225 | ||
ef416fc2 | 1226 | <li>Added <tt>cupsPortMonitor</tt> attribute</li> |
1227 | ||
1228 | <li>Removed <tt>cupsProtocol</tt> attribute</li> | |
1229 | ||
1230 | </ul> | |
1231 | ||
1232 | <h3>Changes in CUPS 1.1</h3> | |
1233 | ||
1234 | <ul> | |
1235 | ||
1236 | <li>Added <tt>cupsFlipDuplex</tt> attribute</li> | |
1237 | ||
1238 | <li>Added <tt>cupsProtocol</tt> attribute</li> | |
1239 | ||
1240 | </ul> | |
1241 | ||
1242 | </body> | |
1243 | </html> |