1<HTML>
2<!-- SECTION: Getting Started -->
3<HEAD>
4	<TITLE>Command-Line Printing and Options</TITLE>
5	<LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
6</HEAD>
7<BODY>
8
9<H1 CLASS="title">Command-Line Printing and Options</H1>
10
11<P>CUPS provides both the System V (<A
12HREF="man-lp.html">lp(1)</A>) and Berkeley (<A
13HREF="man-lpr.html">lpr(1)</A>) printing commands for printing
14files. In addition, it supported a large number of standard and
15printer-specific options that allow you to control how and where
16files are printed.</P>
17
18
19<H2 CLASS="title"><A NAME="BASICS">Printing Files</A></H2>
20
21<P>CUPS understands many different types of files directly,
22including text, PostScript, PDF, and image files. This allows you
23to print from inside your applications or at the command-line,
24whichever is most convenient! Type either of the following
25commands to print a file to the default (or only) printer on the
26system:</P>
27
28<PRE CLASS="command">
29lp filename
30lpr filename
31</PRE>
32
33<H3><A NAME="PRINTER">Choosing a Printer</A></H3>
34
35<P>Many systems will have more than one printer available to the
36user. These printers can be attached to the local system via a
37parallel, serial, or USB port, or available over the network. Use
38the <A HREF="man-lpstat.html">lpstat(1)</A> command to see a list
39of available printers:</P>
40
41<PRE CLASS="command">
42lpstat -p -d
43</PRE>
44
45<P>The <CODE>-p</CODE> option specifies that you want to see a
46list of printers, and the <CODE>-d</CODE> option reports the
47current default printer or class.</P>
48
49<P>Use the <CODE>-d</CODE> option with the <B>lp</B> command to
50print to a specific printer:</P>
51
52<PRE CLASS="command">
53lp -d printer filename
54</PRE>
55
56<P>or the <CODE>-P</CODE> option with the <B>lpr</B> command:</P>
57
58<PRE CLASS="command">
59lpr -P printer filename
60</PRE>
61
62<H3><A NAME="DEFAULT">Setting the Default Printer</A></H3>
63
64<P>If you normally use a particular printer, you can tell CUPS to
65use it by default using the <A
66HREF="man-lpoptions.html">lpoptions(1)</A> command:</P>
67
68<PRE CLASS="command">
69lpoptions -d printer
70</PRE>
71
72<H3><A NAME="PIPE">Printing the Output of a Program</A></H3>
73
74<P>Both the <B>lp</B> and <B>lpr</B> commands support printing
75from the standard input:</P>
76
77<PRE CLASS="command">
78program | lp
79program | lp -d printer
80program | lpr
81program | lpr -P printer
82</PRE>
83
84<P>If the program does not provide any output, then nothing will
85be queued for printing.</P>
86
87<H3><A NAME="WITHOPTIONS">Specifying Printer Options</A></H3>
88
89<P>For many types of files, the default printer options may be
90sufficient for your needs. However, there may be times when you
91need to change the options for a particular file you are
92printing.</P>
93
94<P>The <B>lp</B> and <B>lpr</B> commands allow you to pass
95printer options using the <CODE>-o</CODE> option:</P>
96
97<PRE CLASS="command">
98lp -o landscape -o fit-to-page -o media=A4 filename.jpg
99lpr -o landscape -o fit-to-page -o media=A4 filename.jpg
100</PRE>
101
102<P>The available printer options vary depending on the printer.
103The standard options are described in the "<A
104HREF="#OPTIONS">Standard Printing Options</A>" section
105below. Printer-specific options are also available and can be
106listed using the <B>lpoptions</B> command:</P>
107
108<PRE CLASS="command">
109lpoptions -p printer -l
110</PRE>
111
112<H3><A NAME="INSTANCES">Creating Saved Options</A></H3>
113
114<P>Saved options are supported in CUPS through <em>printer
115instances</em>. Printer instances are, as their name implies, copies
116of a printer that have certain options associated with them. Use the
117<B>lpoptions</B> command to create a printer instance:</P>
118
119<PRE CLASS="command">
120lpoptions -p printer/instance -o name=value ...
121</PRE>
122
123<P>The <CODE>-p printer/instance</CODE> option provides the name of
124the instance, which is always the printer name, a slash, and the
125instance name which can contain any printable characters except
126space and slash. The remaining options are then associated with the
127instance instead of the main queue. For example, the following
128command creates a duplex instance of the LaserJet queue:</P>
129
130<PRE CLASS="command">
131lpoptions -p LaserJet/duplex -o sides=two-sided-long-edge
132</PRE>
133
134<P>Instances <em>do not</em> inherit lpoptions from the main
135queue.</P>
136
137<H3><A NAME="COPIES">Printing Multiple Copies</A></H3>
138
139<P>Both the <B>lp</B> and <B>lpr</B> commands have options for
140printing more than one copy of a file:</P>
141
142<PRE CLASS="command">
143lp -n <EM>num-copies</EM> filename
144lpr -#<EM>num-copies</EM> filename
145</PRE>
146
147<P>Copies are normally <EM>not</EM> collated for you. Use the
148<CODE>-o collate=true</CODE> option to get collated copies:</P>
149
150<PRE CLASS="command">
151lp -n <EM>num-copies</EM> -o collate=true filename
152lpr -#<EM>num-copies</EM> -o collate=true filename
153</PRE>
154
155
156<H2 CLASS="title"><A NAME="CANCEL">Canceling a Print Job</A></H2>
157
158<P>The <A HREF="man-cancel.html">cancel(1)</A> and <A
159HREF="man-lprm.html">lprm(1)</A> commands cancel a print job:</P>
160
161<PRE CLASS="command">
162cancel <EM>job-id</EM>
163lprm <EM>job-id</EM>
164</PRE>
165
166<P>The <EM>job-id</EM> is the number that was reported to you by
167the <B>lp</B> command. You can also get the job ID using the <A
168HREF="man-lpq.html">lpq(1)</A> or <A
169HREF="man-lpstat.html">lpstat</A> commands:</P>
170
171<PRE CLASS="command">
172lpq
173lpstat
174</PRE>
175
176
177<H2 CLASS="title"><A NAME="LPMOVE">Moving a Print Job</A></H2>
178
179<P>The <A HREF="man-lpmove.html">lpmove(8)</A> command moves a print
180job to a new printer or class:</P>
181
182<PRE CLASS="command">
183lpmove <EM>job-id</EM> <i>destination</i>
184</PRE>
185
186<P>The <EM>job-id</EM> is the number that was reported to you by
187the <B>lp</B> or <B>lpstat</B> commands. <i>Destination</i> is the
188name of a printer or class that you want to actually print the job.
189
190<BLOCKQUOTE><B>Note:</B>
191
192<P>The <B>lpmove</B> command is located in the system command
193directory (typically <VAR>/usr/sbin</VAR> or <VAR>/usr/local/sbin</VAR>),
194and so may not be in your command path. Specify the full path to the
195command if you get a "command not found" error, for example:
196
197<PRE CLASS="command">
198/usr/sbin/lpmove foo-123 bar
199</PRE>
200
201</BLOCKQUOTE>
202
203
204<H2 CLASS="title"><A NAME="OPTIONS">Standard Printing Options</A></H2>
205
206<P>The following options apply when printing all types of
207files.</P>
208
209<H3><A NAME="MEDIA">Selecting the Media Size, Type, and Source</A></H3>
210
211<P>The <CODE>-o media=xyz</CODE> option sets the media size,
212type, and/or source:</P>
213
214<PRE CLASS="command">
215lp -o media=Letter filename
216lp -o media=Letter,MultiPurpose filename
217lpr -o media=Letter,Transparency filename
218lpr -o media=Letter,MultiPurpose,Transparency filename
219</PRE>
220
221<P>The available media sizes, types, and sources depend on the
222printer, but most support the following options (case is not
223significant):</P>
224
225<UL>
226
227	<LI><CODE>Letter</CODE> - US Letter (8.5x11 inches, or 216x279mm)
228
229	<LI><CODE>Legal</CODE> - US Legal (8.5x14 inches, or 216x356mm)
230
231	<LI><CODE>A4</CODE> - ISO A4 (8.27x11.69 inches, or 210x297mm)
232
233	<LI><CODE>COM10</CODE> - US #10 Envelope (9.5x4.125 inches, or
234	241x105mm)
235
236	<LI><CODE>DL</CODE> - ISO DL Envelope (8.66x4.33 inches, or 220x110mm)
237
238	<LI><CODE>Transparency</CODE> - Transparency media type or source
239
240	<LI><CODE>Upper</CODE> - Upper paper tray
241
242	<LI><CODE>Lower</CODE> - Lower paper tray
243
244	<LI><CODE>MultiPurpose</CODE> - Multi-purpose paper tray
245
246	<LI><CODE>LargeCapacity</CODE> - Large capacity paper tray
247
248</UL>
249
250<P>The actual options supported are defined in the printer's PPD
251file in the <CODE>PageSize</CODE>, <CODE>InputSlot</CODE>, and
252<CODE>MediaType</CODE> options. You can list them using the
253<B>lpoptions(1)</B> command:</P>
254
255<PRE CLASS="command">
256lpoptions -p printer -l
257</PRE>
258
259<P>When <CODE>Custom</CODE> is listed for the <CODE>PageSize</CODE> option, you can specify custom media sizes using one of the following forms:</P>
260
261<PRE CLASS="command">
262lp -o media=Custom.<EM>WIDTH</EM>x<EM>LENGTH</EM> filename
263lp -o media=Custom.<EM>WIDTH</EM>x<EM>LENGTH</EM>in filename
264lp -o media=Custom.<EM>WIDTH</EM>x<EM>LENGTH</EM>cm filename
265lp -o media=Custom.<EM>WIDTH</EM>x<EM>LENGTH</EM>mm filename
266</PRE>
267
268<P>where "WIDTH" and "LENGTH" are the width and length of the media in points, inches, centimeters, or millimeters, respectively.</P>
269
270
271<H3><A NAME="ORIENTATION">Setting the Orientation</A></H3>
272
273<P>The <CODE>-o landscape</CODE> option will rotate the page 90
274degrees to print in landscape orientation:</P>
275
276<PRE CLASS="command">
277lp -o landscape filename
278lpr -o landscape filename
279</PRE>
280
281<P>The <CODE>-o orientation-requested=N</CODE> option rotates the
282page depending on the value of N:</P>
283
284<UL>
285
286	<LI><CODE>-o orientation-requested=3</CODE> - portrait
287	orientation (no rotation)</LI>
288
289	<LI><CODE>-o orientation-requested=4</CODE> - landscape
290	orientation (90 degrees)</LI>
291
292	<LI><CODE>-o orientation-requested=5</CODE> - reverse
293	landscape or seascape orientation (270 degrees)</LI>
294
295	<LI><CODE>-o orientation-requested=6</CODE> - reverse
296	portrait or upside-down orientation (180 degrees)</LI>
297
298</UL>
299
300
301<H3><A NAME="SIDES">Printing On Both Sides of the Paper</A></H3>
302
303<P>The <CODE>-o sides=two-sided-short-edge</CODE> and <CODE>-o
304sides=two-sided-long-edge</CODE> options will enable two-sided
305printing on the printer if the printer supports it. The <CODE>-o
306sides=two-sided-short-edge</CODE> option is suitable for
307landscape pages, while the <CODE>-o
308sides=two-sided-long-edge</CODE> option is suitable for portrait
309pages:</P>
310
311<PRE CLASS="command">
312lp -o sides=two-sided-short-edge filename
313lp -o sides=two-sided-long-edge filename
314lpr -o sides=two-sided-long-edge filename
315</PRE>
316
317<P>The default is to print single-sided:</P>
318
319<PRE CLASS="command">
320lp -o sides=one-sided filename
321lpr -o sides=one-sided filename
322</PRE>
323
324
325<H3><A NAME="JOBSHEETS">Selecting the Banner Page(s)</A></H3>
326
327<P>The <CODE>-o job-sheets=start,end</CODE> option sets the banner
328page(s) to use for a job:</P>
329
330<PRE CLASS="command">
331lp -o job-sheets=none filename
332lp -o job-sheets=standard filename
333lpr -o job-sheets=classified,classified filename
334</PRE>
335
336<P>If only one banner file is specified, it will be printed
337before the files in the job. If a second banner file is
338specified, it is printed after the files in the job.</P>
339
340<P>The available banner pages depend on the local system
341configuration; CUPS includes the following banner files:</P>
342
343<UL>
344
345	<LI><CODE>none</CODE> - Do not produce a banner page.
346
347	<LI><CODE>classified</CODE> - A banner page with a "classified"
348	label at the top and bottom.
349
350	<LI><CODE>confidential</CODE> - A banner page with a
351	"confidential" label at the top and bottom.
352
353	<LI><CODE>secret</CODE> - A banner page with a "secret" label
354	at the top and bottom.
355
356	<LI><CODE>standard</CODE> - A banner page with no label at the
357	top and bottom.
358
359	<LI><CODE>topsecret</CODE> - A banner page with a "top secret"
360	label at the top and bottom.
361
362	<LI><CODE>unclassified</CODE> - A banner page with an
363	"unclassified" label at the top and bottom.
364
365</UL>
366
367
368<H3><A NAME="JOBHOLDUNTIL">Holding Jobs for Later Printing</A></H3>
369
370<P>The <CODE>-o job-hold-until=when</CODE> option tells CUPS to
371delay printing until the "when" time, which can be one of the
372following:</P>
373
374<UL>
375
376	<LI><CODE>-o job-hold-until=indefinite</CODE>; print only
377	after released by the user or an administrator</LI>
378
379	<LI><CODE>-o job-hold-until=day-time</CODE>; print from
380	6am to 6pm local time</LI>
381
382	<LI><CODE>-o job-hold-until=night</CODE>; print from
383	6pm to 6am local time</LI>
384
385	<LI><CODE>-o job-hold-until=second-shift</CODE>; print from
386	4pm to 12am local time</LI>
387
388	<LI><CODE>-o job-hold-until=third-shift</CODE>; print from
389	12am to 8am local time</LI>
390
391	<LI><CODE>-o job-hold-until=weekend</CODE>; print on Saturday
392	or Sunday</LI>
393
394	<LI><CODE>-o job-hold-until=HH:MM</CODE>; print at the specified
395	UTC time</LI>
396
397</UL>
398
399<H3><A NAME="RELEASEJOB">Releasing Held Jobs</A></H3>
400
401<P>Aside from the web interface, you can use the <B>lp</B> command
402to release a held job:</P>
403
404<PRE CLASS="command">
405lp -i <em>job-id</em> -H resume
406</PRE>
407
408<P>where "job-id" is the job ID reported by the <B>lpstat</B>
409command.</P>
410
411
412<H3><A NAME="JOBPRIORITY">Setting the Job Priority</A></H3>
413
414<P>The <CODE>-o job-priority=NNN</CODE> option tells CUPS to
415assign a priority to your job from 1 (lowest) to 100 (highest),
416which influences where the job appears in the print queue. Higher
417priority jobs are printed before lower priority jobs, however
418submitting a new job with a high priority will not interrupt an
419already printing job.</P>
420
421
422<H3><A NAME="OUTPUTORDER">Specifying the Output Order</A></H3>
423
424<P>The <CODE>-o outputorder=normal</CODE> and <CODE>-o outputorder=reverse</CODE> options specify the order of the pages. Normal order prints page 1 first, page 2 second, and so forth. Reverse order prints page 1 last.</P>
425
426
427<H3><A NAME="PAGERANGES">Selecting a Range of Pages</A></H3>
428
429<P>The <CODE>-o page-ranges=pages</CODE> option selects a range
430of pages for printing:</P>
431
432<PRE CLASS="command">
433lp -o page-ranges=1 filename
434lp -o page-ranges=1-4 filename
435lp -o page-ranges=1-4,7,9-12 filename
436lpr -o page-ranges=1-4,7,9-12 filename
437</PRE>
438
439<P>As shown above, the <CODE>pages</CODE> value can be a single page, a
440range of pages, or a collection of page numbers and ranges separated by
441commas. The pages will always be printed in ascending order, regardless
442of the order of the pages in the <CODE>page-ranges</CODE> option.
443
444<P>The default is to print all pages.
445
446<blockquote><b>Note:</b>
447
448<p>The page numbers used by <code>page-ranges</code> refer to the output
449pages and not the document's page numbers. Options like <code>number-up</code>
450can make the output page numbering not match the document page numbers.</p>
451
452</blockquote>
453
454
455<H3><A NAME="NUMBERUP">N-Up Printing</A></H3>
456
457<P>The <CODE>-o number-up=value</CODE> option selects N-Up
458printing. N-Up printing places multiple document pages on a
459single printed page. CUPS supports 1, 2, 4, 6, 9, and 16-Up
460formats; the default format is 1-Up:</P>
461
462<PRE CLASS="command">
463lp -o number-up=1 filename
464lp -o number-up=2 filename
465lp -o number-up=4 filename
466lpr -o number-up=16 filename
467</PRE>
468
469<P>The <CODE>-o page-border=value</CODE> option chooses the
470border to draw around each page:</P>
471
472<UL>
473	<LI><CODE>-o page-border=double</CODE>; draw two hairline borders around each page</LI>
474	<LI><CODE>-o page-border=double-thick</CODE>; draw two 1pt borders around each page</LI>
475	<LI><CODE>-o page-border=none</CODE>; do not draw a border (default)</LI>
476	<LI><CODE>-o page-border=single</CODE>; draw one hairline border around each page</LI>
477	<LI><CODE>-o page-border=single-thick</CODE>; draw one 1pt border around each page</LI>
478</UL>
479
480<P>The <CODE>-o number-up-layout=value</CODE> option chooses the
481layout of the pages on each output page:</P>
482
483<UL>
484	<LI><CODE>-o number-up-layout=btlr</CODE>; Bottom to top, left to right</LI>
485	<LI><CODE>-o number-up-layout=btrl</CODE>; Bottom to top, right to left</LI>
486	<LI><CODE>-o number-up-layout=lrbt</CODE>; Left to right, bottom to top</LI>
487	<LI><CODE>-o number-up-layout=lrtb</CODE>; Left to right, top to bottom (default)</LI>
488	<LI><CODE>-o number-up-layout=rlbt</CODE>; Right to left, bottom to top</LI>
489	<LI><CODE>-o number-up-layout=rltb</CODE>; Right to left, top to bottom</LI>
490	<LI><CODE>-o number-up-layout=tblr</CODE>; Top to bottom, left to right</LI>
491	<LI><CODE>-o number-up-layout=tbrl</CODE>; Top to bottom, right to left</LI>
492</UL>
493
494<H3><A NAME="FIT_TO_PAGE">Scaling to Fit</A></H3>
495
496<P>The <CODE>-o fit-to-page</CODE> option specifies that the document
497should be scaled to fit on the page:</P>
498
499<PRE CLASS="command">
500lp -o fit-to-page filename
501lpr -o fit-to-page filename
502</PRE>
503
504<P>The default is to use the size specified in the file.</P>
505
506<BLOCKQUOTE><B>Note:</B>
507
508<P>This feature depends upon an accurate size in
509the print file. If no size is given in the file, the page may be
510scaled incorrectly!
511
512</BLOCKQUOTE>
513
514<H3><A NAME="OUTPUTORDER">Printing in Reverse Order</A></H3>
515
516<P>The <CODE>-o outputorder=reverse</CODE> option will print the
517pages in reverse order:</P>
518
519<PRE CLASS="command">
520lp -o outputorder=reverse filename
521lpr -o outputorder=reverse filename
522</PRE>
523
524<P>Similarly, the <CODE>-o outputorder=normal</CODE> option will
525print starting with page 1:</P>
526
527<PRE CLASS="command">
528lp -o outputorder=normal filename
529lpr -o outputorder=normal filename
530</PRE>
531
532<P>The default is <CODE>-o outputorder=normal</CODE> for
533printers that print face down and <CODE>-o outputorder=reverse</CODE>
534for printers that print face up.
535
536<H3><A NAME="MIRROR">Printing Mirrored Pages</A></H3>
537
538<P>The <CODE>-o mirror</CODE> option flips each page along the
539vertical axis to produce a mirrored image:</P>
540
541<PRE CLASS="command">
542lp -o mirror filename
543lpr -o mirror filename
544</PRE>
545
546<P>This is typically used when printing on T-shirt transfer
547media or sometimes on transparencies.</P>
548
549</BODY>
550</HTML>
551