| <HTML> |
| <!-- SECTION: Getting Started --> |
| <HEAD> |
| <TITLE>Command-Line Printing and Options</TITLE> |
| <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css"> |
| </HEAD> |
| <BODY> |
| |
| <H1 CLASS="title">Command-Line Printing and Options</H1> |
| |
| <P>CUPS provides both the System V (<A |
| HREF="man-lp.html">lp(1)</A>) and Berkeley (<A |
| HREF="man-lpr.html">lpr(1)</A>) printing commands for printing |
| files. In addition, it supported a large number of standard and |
| printer-specific options that allow you to control how and where |
| files are printed.</P> |
| |
| |
| <H2 CLASS="title"><A NAME="BASICS">Printing Files</A></H2> |
| |
| <P>CUPS understands many different types of files directly, |
| including text, PostScript, PDF, and image files. This allows you |
| to print from inside your applications or at the command-line, |
| whichever is most convenient! Type either of the following |
| commands to print a file to the default (or only) printer on the |
| system:</P> |
| |
| <PRE CLASS="command"> |
| lp filename |
| lpr filename |
| </PRE> |
| |
| <H3><A NAME="PRINTER">Choosing a Printer</A></H3> |
| |
| <P>Many systems will have more than one printer available to the |
| user. These printers can be attached to the local system via a |
| parallel, serial, or USB port, or available over the network. Use |
| the <A HREF="man-lpstat.html">lpstat(1)</A> command to see a list |
| of available printers:</P> |
| |
| <PRE CLASS="command"> |
| lpstat -p -d |
| </PRE> |
| |
| <P>The <CODE>-p</CODE> option specifies that you want to see a |
| list of printers, and the <CODE>-d</CODE> option reports the |
| current default printer or class.</P> |
| |
| <P>Use the <CODE>-d</CODE> option with the <B>lp</B> command to |
| print to a specific printer:</P> |
| |
| <PRE CLASS="command"> |
| lp -d printer filename |
| </PRE> |
| |
| <P>or the <CODE>-P</CODE> option with the <B>lpr</B> command:</P> |
| |
| <PRE CLASS="command"> |
| lpr -P printer filename |
| </PRE> |
| |
| <H3><A NAME="DEFAULT">Setting the Default Printer</A></H3> |
| |
| <P>If you normally use a particular printer, you can tell CUPS to |
| use it by default using the <A |
| HREF="man-lpoptions.html">lpoptions(1)</A> command:</P> |
| |
| <PRE CLASS="command"> |
| lpoptions -d printer |
| </PRE> |
| |
| <H3><A NAME="PIPE">Printing the Output of a Program</A></H3> |
| |
| <P>Both the <B>lp</B> and <B>lpr</B> commands support printing |
| from the standard input:</P> |
| |
| <PRE CLASS="command"> |
| program | lp |
| program | lp -d printer |
| program | lpr |
| program | lpr -P printer |
| </PRE> |
| |
| <P>If the program does not provide any output, then nothing will |
| be queued for printing.</P> |
| |
| <H3><A NAME="WITHOPTIONS">Specifying Printer Options</A></H3> |
| |
| <P>For many types of files, the default printer options may be |
| sufficient for your needs. However, there may be times when you |
| need to change the options for a particular file you are |
| printing.</P> |
| |
| <P>The <B>lp</B> and <B>lpr</B> commands allow you to pass |
| printer options using the <CODE>-o</CODE> option:</P> |
| |
| <PRE CLASS="command"> |
| lp -o landscape -o fit-to-page -o media=A4 filename.jpg |
| lpr -o landscape -o fit-to-page -o media=A4 filename.jpg |
| </PRE> |
| |
| <P>The available printer options vary depending on the printer. |
| The standard options are described in the "<A |
| HREF="#OPTIONS">Standard Printing Options</A>" section |
| below. Printer-specific options are also available and can be |
| listed using the <B>lpoptions</B> command:</P> |
| |
| <PRE CLASS="command"> |
| lpoptions -p printer -l |
| </PRE> |
| |
| <H3><A NAME="INSTANCES">Creating Saved Options</A></H3> |
| |
| <P>Saved options are supported in CUPS through <em>printer |
| instances</em>. Printer instances are, as their name implies, copies |
| of a printer that have certain options associated with them. Use the |
| <B>lpoptions</B> command to create a printer instance:</P> |
| |
| <PRE CLASS="command"> |
| lpoptions -p printer/instance -o name=value ... |
| </PRE> |
| |
| <P>The <CODE>-p printer/instance</CODE> option provides the name of |
| the instance, which is always the printer name, a slash, and the |
| instance name which can contain any printable characters except |
| space and slash. The remaining options are then associated with the |
| instance instead of the main queue. For example, the following |
| command creates a duplex instance of the LaserJet queue:</P> |
| |
| <PRE CLASS="command"> |
| lpoptions -p LaserJet/duplex -o sides=two-sided-long-edge |
| </PRE> |
| |
| <P>Instances <em>do not</em> inherit lpoptions from the main |
| queue.</P> |
| |
| <H3><A NAME="COPIES">Printing Multiple Copies</A></H3> |
| |
| <P>Both the <B>lp</B> and <B>lpr</B> commands have options for |
| printing more than one copy of a file:</P> |
| |
| <PRE CLASS="command"> |
| lp -n <EM>num-copies</EM> filename |
| lpr -#<EM>num-copies</EM> filename |
| </PRE> |
| |
| <P>Copies are normally <EM>not</EM> collated for you. Use the |
| <CODE>-o collate=true</CODE> option to get collated copies:</P> |
| |
| <PRE CLASS="command"> |
| lp -n <EM>num-copies</EM> -o collate=true filename |
| lpr -#<EM>num-copies</EM> -o collate=true filename |
| </PRE> |
| |
| |
| <H2 CLASS="title"><A NAME="CANCEL">Canceling a Print Job</A></H2> |
| |
| <P>The <A HREF="man-cancel.html">cancel(1)</A> and <A |
| HREF="man-lprm.html">lprm(1)</A> commands cancel a print job:</P> |
| |
| <PRE CLASS="command"> |
| cancel <EM>job-id</EM> |
| lprm <EM>job-id</EM> |
| </PRE> |
| |
| <P>The <EM>job-id</EM> is the number that was reported to you by |
| the <B>lp</B> command. You can also get the job ID using the <A |
| HREF="man-lpq.html">lpq(1)</A> or <A |
| HREF="man-lpstat.html">lpstat</A> commands:</P> |
| |
| <PRE CLASS="command"> |
| lpq |
| lpstat |
| </PRE> |
| |
| |
| <H2 CLASS="title"><A NAME="LPMOVE">Moving a Print Job</A></H2> |
| |
| <P>The <A HREF="man-lpmove.html">lpmove(8)</A> command moves a print |
| job to a new printer or class:</P> |
| |
| <PRE CLASS="command"> |
| lpmove <EM>job-id</EM> <i>destination</i> |
| </PRE> |
| |
| <P>The <EM>job-id</EM> is the number that was reported to you by |
| the <B>lp</B> or <B>lpstat</B> commands. <i>Destination</i> is the |
| name of a printer or class that you want to actually print the job. |
| |
| <BLOCKQUOTE><B>Note:</B> |
| |
| <P>The <B>lpmove</B> command is located in the system command |
| directory (typically <VAR>/usr/sbin</VAR> or <VAR>/usr/local/sbin</VAR>), |
| and so may not be in your command path. Specify the full path to the |
| command if you get a "command not found" error, for example: |
| |
| <PRE CLASS="command"> |
| /usr/sbin/lpmove foo-123 bar |
| </PRE> |
| |
| </BLOCKQUOTE> |
| |
| |
| <H2 CLASS="title"><A NAME="OPTIONS">Standard Printing Options</A></H2> |
| |
| <P>The following options apply when printing all types of |
| files.</P> |
| |
| <H3><A NAME="MEDIA">Selecting the Media Size, Type, and Source</A></H3> |
| |
| <P>The <CODE>-o media=xyz</CODE> option sets the media size, |
| type, and/or source:</P> |
| |
| <PRE CLASS="command"> |
| lp -o media=Letter filename |
| lp -o media=Letter,MultiPurpose filename |
| lpr -o media=Letter,Transparency filename |
| lpr -o media=Letter,MultiPurpose,Transparency filename |
| </PRE> |
| |
| <P>The available media sizes, types, and sources depend on the |
| printer, but most support the following options (case is not |
| significant):</P> |
| |
| <UL> |
| |
| <LI><CODE>Letter</CODE> - US Letter (8.5x11 inches, or 216x279mm) |
| |
| <LI><CODE>Legal</CODE> - US Legal (8.5x14 inches, or 216x356mm) |
| |
| <LI><CODE>A4</CODE> - ISO A4 (8.27x11.69 inches, or 210x297mm) |
| |
| <LI><CODE>COM10</CODE> - US #10 Envelope (9.5x4.125 inches, or |
| 241x105mm) |
| |
| <LI><CODE>DL</CODE> - ISO DL Envelope (8.66x4.33 inches, or 220x110mm) |
| |
| <LI><CODE>Transparency</CODE> - Transparency media type or source |
| |
| <LI><CODE>Upper</CODE> - Upper paper tray |
| |
| <LI><CODE>Lower</CODE> - Lower paper tray |
| |
| <LI><CODE>MultiPurpose</CODE> - Multi-purpose paper tray |
| |
| <LI><CODE>LargeCapacity</CODE> - Large capacity paper tray |
| |
| </UL> |
| |
| <P>The actual options supported are defined in the printer's PPD |
| file in the <CODE>PageSize</CODE>, <CODE>InputSlot</CODE>, and |
| <CODE>MediaType</CODE> options. You can list them using the |
| <B>lpoptions(1)</B> command:</P> |
| |
| <PRE CLASS="command"> |
| lpoptions -p printer -l |
| </PRE> |
| |
| <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> |
| |
| <PRE CLASS="command"> |
| lp -o media=Custom.<EM>WIDTH</EM>x<EM>LENGTH</EM> filename |
| lp -o media=Custom.<EM>WIDTH</EM>x<EM>LENGTH</EM>in filename |
| lp -o media=Custom.<EM>WIDTH</EM>x<EM>LENGTH</EM>cm filename |
| lp -o media=Custom.<EM>WIDTH</EM>x<EM>LENGTH</EM>mm filename |
| </PRE> |
| |
| <P>where "WIDTH" and "LENGTH" are the width and length of the media in points, inches, centimeters, or millimeters, respectively.</P> |
| |
| |
| <H3><A NAME="ORIENTATION">Setting the Orientation</A></H3> |
| |
| <P>The <CODE>-o landscape</CODE> option will rotate the page 90 |
| degrees to print in landscape orientation:</P> |
| |
| <PRE CLASS="command"> |
| lp -o landscape filename |
| lpr -o landscape filename |
| </PRE> |
| |
| <P>The <CODE>-o orientation-requested=N</CODE> option rotates the |
| page depending on the value of N:</P> |
| |
| <UL> |
| |
| <LI><CODE>-o orientation-requested=3</CODE> - portrait |
| orientation (no rotation)</LI> |
| |
| <LI><CODE>-o orientation-requested=4</CODE> - landscape |
| orientation (90 degrees)</LI> |
| |
| <LI><CODE>-o orientation-requested=5</CODE> - reverse |
| landscape or seascape orientation (270 degrees)</LI> |
| |
| <LI><CODE>-o orientation-requested=6</CODE> - reverse |
| portrait or upside-down orientation (180 degrees)</LI> |
| |
| </UL> |
| |
| |
| <H3><A NAME="SIDES">Printing On Both Sides of the Paper</A></H3> |
| |
| <P>The <CODE>-o sides=two-sided-short-edge</CODE> and <CODE>-o |
| sides=two-sided-long-edge</CODE> options will enable two-sided |
| printing on the printer if the printer supports it. The <CODE>-o |
| sides=two-sided-short-edge</CODE> option is suitable for |
| landscape pages, while the <CODE>-o |
| sides=two-sided-long-edge</CODE> option is suitable for portrait |
| pages:</P> |
| |
| <PRE CLASS="command"> |
| lp -o sides=two-sided-short-edge filename |
| lp -o sides=two-sided-long-edge filename |
| lpr -o sides=two-sided-long-edge filename |
| </PRE> |
| |
| <P>The default is to print single-sided:</P> |
| |
| <PRE CLASS="command"> |
| lp -o sides=one-sided filename |
| lpr -o sides=one-sided filename |
| </PRE> |
| |
| |
| <H3><A NAME="JOBSHEETS">Selecting the Banner Page(s)</A></H3> |
| |
| <P>The <CODE>-o job-sheets=start,end</CODE> option sets the banner |
| page(s) to use for a job:</P> |
| |
| <PRE CLASS="command"> |
| lp -o job-sheets=none filename |
| lp -o job-sheets=standard filename |
| lpr -o job-sheets=classified,classified filename |
| </PRE> |
| |
| <P>If only one banner file is specified, it will be printed |
| before the files in the job. If a second banner file is |
| specified, it is printed after the files in the job.</P> |
| |
| <P>The available banner pages depend on the local system |
| configuration; CUPS includes the following banner files:</P> |
| |
| <UL> |
| |
| <LI><CODE>none</CODE> - Do not produce a banner page. |
| |
| <LI><CODE>classified</CODE> - A banner page with a "classified" |
| label at the top and bottom. |
| |
| <LI><CODE>confidential</CODE> - A banner page with a |
| "confidential" label at the top and bottom. |
| |
| <LI><CODE>secret</CODE> - A banner page with a "secret" label |
| at the top and bottom. |
| |
| <LI><CODE>standard</CODE> - A banner page with no label at the |
| top and bottom. |
| |
| <LI><CODE>topsecret</CODE> - A banner page with a "top secret" |
| label at the top and bottom. |
| |
| <LI><CODE>unclassified</CODE> - A banner page with an |
| "unclassified" label at the top and bottom. |
| |
| </UL> |
| |
| |
| <H3><A NAME="JOBHOLDUNTIL">Holding Jobs for Later Printing</A></H3> |
| |
| <P>The <CODE>-o job-hold-until=when</CODE> option tells CUPS to |
| delay printing until the "when" time, which can be one of the |
| following:</P> |
| |
| <UL> |
| |
| <LI><CODE>-o job-hold-until=indefinite</CODE>; print only |
| after released by the user or an administrator</LI> |
| |
| <LI><CODE>-o job-hold-until=day-time</CODE>; print from |
| 6am to 6pm local time</LI> |
| |
| <LI><CODE>-o job-hold-until=night</CODE>; print from |
| 6pm to 6am local time</LI> |
| |
| <LI><CODE>-o job-hold-until=second-shift</CODE>; print from |
| 4pm to 12am local time</LI> |
| |
| <LI><CODE>-o job-hold-until=third-shift</CODE>; print from |
| 12am to 8am local time</LI> |
| |
| <LI><CODE>-o job-hold-until=weekend</CODE>; print on Saturday |
| or Sunday</LI> |
| |
| <LI><CODE>-o job-hold-until=HH:MM</CODE>; print at the specified |
| UTC time</LI> |
| |
| </UL> |
| |
| <H3><A NAME="RELEASEJOB">Releasing Held Jobs</A></H3> |
| |
| <P>Aside from the web interface, you can use the <B>lp</B> command |
| to release a held job:</P> |
| |
| <PRE CLASS="command"> |
| lp -i <em>job-id</em> -H resume |
| </PRE> |
| |
| <P>where "job-id" is the job ID reported by the <B>lpstat</B> |
| command.</P> |
| |
| |
| <H3><A NAME="JOBPRIORITY">Setting the Job Priority</A></H3> |
| |
| <P>The <CODE>-o job-priority=NNN</CODE> option tells CUPS to |
| assign a priority to your job from 1 (lowest) to 100 (highest), |
| which influences where the job appears in the print queue. Higher |
| priority jobs are printed before lower priority jobs, however |
| submitting a new job with a high priority will not interrupt an |
| already printing job.</P> |
| |
| |
| <H3><A NAME="OUTPUTORDER">Specifying the Output Order</A></H3> |
| |
| <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> |
| |
| |
| <H3><A NAME="PAGERANGES">Selecting a Range of Pages</A></H3> |
| |
| <P>The <CODE>-o page-ranges=pages</CODE> option selects a range |
| of pages for printing:</P> |
| |
| <PRE CLASS="command"> |
| lp -o page-ranges=1 filename |
| lp -o page-ranges=1-4 filename |
| lp -o page-ranges=1-4,7,9-12 filename |
| lpr -o page-ranges=1-4,7,9-12 filename |
| </PRE> |
| |
| <P>As shown above, the <CODE>pages</CODE> value can be a single page, a |
| range of pages, or a collection of page numbers and ranges separated by |
| commas. The pages will always be printed in ascending order, regardless |
| of the order of the pages in the <CODE>page-ranges</CODE> option. |
| |
| <P>The default is to print all pages. |
| |
| <blockquote><b>Note:</b> |
| |
| <p>The page numbers used by <code>page-ranges</code> refer to the output |
| pages and not the document's page numbers. Options like <code>number-up</code> |
| can make the output page numbering not match the document page numbers.</p> |
| |
| </blockquote> |
| |
| |
| <H3><A NAME="NUMBERUP">N-Up Printing</A></H3> |
| |
| <P>The <CODE>-o number-up=value</CODE> option selects N-Up |
| printing. N-Up printing places multiple document pages on a |
| single printed page. CUPS supports 1, 2, 4, 6, 9, and 16-Up |
| formats; the default format is 1-Up:</P> |
| |
| <PRE CLASS="command"> |
| lp -o number-up=1 filename |
| lp -o number-up=2 filename |
| lp -o number-up=4 filename |
| lpr -o number-up=16 filename |
| </PRE> |
| |
| <P>The <CODE>-o page-border=value</CODE> option chooses the |
| border to draw around each page:</P> |
| |
| <UL> |
| <LI><CODE>-o page-border=double</CODE>; draw two hairline borders around each page</LI> |
| <LI><CODE>-o page-border=double-thick</CODE>; draw two 1pt borders around each page</LI> |
| <LI><CODE>-o page-border=none</CODE>; do not draw a border (default)</LI> |
| <LI><CODE>-o page-border=single</CODE>; draw one hairline border around each page</LI> |
| <LI><CODE>-o page-border=single-thick</CODE>; draw one 1pt border around each page</LI> |
| </UL> |
| |
| <P>The <CODE>-o number-up-layout=value</CODE> option chooses the |
| layout of the pages on each output page:</P> |
| |
| <UL> |
| <LI><CODE>-o number-up-layout=btlr</CODE>; Bottom to top, left to right</LI> |
| <LI><CODE>-o number-up-layout=btrl</CODE>; Bottom to top, right to left</LI> |
| <LI><CODE>-o number-up-layout=lrbt</CODE>; Left to right, bottom to top</LI> |
| <LI><CODE>-o number-up-layout=lrtb</CODE>; Left to right, top to bottom (default)</LI> |
| <LI><CODE>-o number-up-layout=rlbt</CODE>; Right to left, bottom to top</LI> |
| <LI><CODE>-o number-up-layout=rltb</CODE>; Right to left, top to bottom</LI> |
| <LI><CODE>-o number-up-layout=tblr</CODE>; Top to bottom, left to right</LI> |
| <LI><CODE>-o number-up-layout=tbrl</CODE>; Top to bottom, right to left</LI> |
| </UL> |
| |
| <H3><A NAME="FIT_TO_PAGE">Scaling to Fit</A></H3> |
| |
| <P>The <CODE>-o fit-to-page</CODE> option specifies that the document |
| should be scaled to fit on the page:</P> |
| |
| <PRE CLASS="command"> |
| lp -o fit-to-page filename |
| lpr -o fit-to-page filename |
| </PRE> |
| |
| <P>The default is to use the size specified in the file.</P> |
| |
| <BLOCKQUOTE><B>Note:</B> |
| |
| <P>This feature depends upon an accurate size in |
| the print file. If no size is given in the file, the page may be |
| scaled incorrectly! |
| |
| </BLOCKQUOTE> |
| |
| <H3><A NAME="OUTPUTORDER">Printing in Reverse Order</A></H3> |
| |
| <P>The <CODE>-o outputorder=reverse</CODE> option will print the |
| pages in reverse order:</P> |
| |
| <PRE CLASS="command"> |
| lp -o outputorder=reverse filename |
| lpr -o outputorder=reverse filename |
| </PRE> |
| |
| <P>Similarly, the <CODE>-o outputorder=normal</CODE> option will |
| print starting with page 1:</P> |
| |
| <PRE CLASS="command"> |
| lp -o outputorder=normal filename |
| lpr -o outputorder=normal filename |
| </PRE> |
| |
| <P>The default is <CODE>-o outputorder=normal</CODE> for |
| printers that print face down and <CODE>-o outputorder=reverse</CODE> |
| for printers that print face up. |
| |
| <H3><A NAME="MIRROR">Printing Mirrored Pages</A></H3> |
| |
| <P>The <CODE>-o mirror</CODE> option flips each page along the |
| vertical axis to produce a mirrored image:</P> |
| |
| <PRE CLASS="command"> |
| lp -o mirror filename |
| lpr -o mirror filename |
| </PRE> |
| |
| <P>This is typically used when printing on T-shirt transfer |
| media or sometimes on transparencies.</P> |
| |
| </BODY> |
| </HTML> |