1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
3 <!-- SECTION: Specifications -->
5 <title>Generating PostScript for CUPS
</title>
6 <meta name='keywords' content='Programming, PostScript, Document Structuring Conventions'
>
7 <link rel='stylesheet' type='text/css' href='../cups.css'
>
13 CUPS PostScript file specification for the Common UNIX Printing System (CUPS).
15 Copyright 2007-2008 by Apple Inc.
16 Copyright 2006 by Easy Software Products.
18 These coded instructions, statements, and computer programs are the
19 property of Apple Inc. and are protected by Federal copyright
20 law. Distribution and use rights are outlined in the file "LICENSE.txt"
21 which should have been included with this file. If this file is
22 file is missing or damaged, see the license at "http://www.cups.org/".
25 <h2 class='title'
><a name='INTRODUCTION'
>Introduction
</a></h2>
27 <p>This document describes how to generate PostScript output for
28 CUPS and is largely based on the
<a
29 href=
"http://partners.adobe.com/public/developer/en/ps/5001.DSC_Spec.pdf">
30 Adobe TechNote #
5001: PostScript Language Document Structuring
31 Conventions Specification Version
3.0</a>. While CUPS can
32 generally print any PostScript file, following the rules in the
33 Adobe TechNote and this document will ensure that your PostScript
34 output will work reliably.
</p>
36 <blockquote><b>Note:
</b> While PostScript is currently the
37 defacto-standard print job file format/language for UNIX-based
38 applications, it is slowly being phased out in favor of Adobe's
39 Portable Document Format (
"PDF") which offers many advantages
40 over PostScript. Mac OS X uses PDF as the primary print job file
41 format and Linux is making the transition. Both PostScript and
42 PDF are complex formats, and we highly recommend using high-level
43 toolkits whenever possible to create your print jobs.
</blockquote>
45 <h3>Anatomy of a PostScript File
</h3>
47 <p>PostScript files are ASCII text files starting with a header
48 line (
<tt>%!PS-Adobe-
3.0</tt>) followed by a combination of
49 comment lines starting with the percent sign (
<tt>%
</tt>) and
50 PostScript code lines. The lines themselves should not exceed
255
51 characters to conform to the DSC. The following short PostScript
52 file produces a box with a smiley face in it:
</p>
56 %%BoundingBox:
36 36 576 756
61 % this is where fonts would be embedded
65 % this is where page-specific features would be specified
67 % Draw a black box around the page
70 36 36 540 720 rectstroke
72 % Draw a two inch blue circle in the middle of the page
74 306 396 144 0 360 arc closepath fill
76 % Draw two half inch yellow circles for eyes
78 252 432 36 0 360 arc closepath fill
79 360 432 36 0 360 arc closepath fill
84 306 396 99 200 340 arc stroke
91 <div class=
"figure"><table summary=
"Sample PostScript File Output">
92 <caption>Figure
1:
<a name=
"FIGURE_1">Sample PostScript File Output
</a></caption>
93 <tr><td align=
"center"><img src=
"../images/smiley.jpg"
94 width=
"445" height=
"570" alt=
"Sample PostScript File Output"></td></tr>
98 <h2><a name='OPTIONS'
>Embedding Printer Options
</a></h2>
100 <p>There are two main strategies for embedding printer options in PostScript
101 files. The first is to list CUPS options using the
<code>%cupsJobTicket
</code>
106 %cupsJobTicket: media=A4 sides=two-sided-long-edge
107 %cupsJobTicket: PrinterOption=foo PrinterOption2=bar
112 <p>CUPS options apply to the entire job. To apply options to individual pages,
113 use the
<code>%%IncludeFeature
</code> comment instead:
</p>
118 %%IncludeFeature: *PageSize A4
119 %%IncludeFeature: *PrinterOption Foo
120 %%IncludeFeature: *PrinterOption2 Bar
126 <h2><a name='FONTS'
>Embedding Fonts and Text
</a></h2>
128 <p>Always embed the fonts used by your print job, and for best performance
129 embed the fonts and character encodings in the setup section of the PostScript
130 file. Type
1 and Type
3 fonts are supported by all PostScript printers, while
131 Type
42 (TrueType) and CID fonts are supported by most level
2 and all level
3
132 PostScript printers. Binary font files should always be converted to the
133 corresponding ASCII (hex) encoding to avoid problems when printing over
134 interfaces that do not support binary PostScript.
</p>
137 <h2><a name='IMAGES'
>Embedding Images
</a></h2>
139 <p>The
<code>image
</code> operator should be used to embed images in PostScript
140 files. Always use ASCII hex or Base-
85 encoding for the image data to avoid
141 problems when printing over interfaces that do not support binary PostScript.
142 In most cases, the Base-
85 encoding and compression filters can be used to
143 embed images with very little, if any, increase in data size.
</p>