Print several pages on a single sheet

I discovered a very useful and simple utility to print a document with several pages per sheet. For example, for 4 pages per sheet:

psnup -nup 4 >

psnup is part of the psutils package which can be compiled on most operating systems. I find it particularly useful to save paper and ink printing HTML documents.

PSNUP(1)                  User Commands                  PSNUP(1)

     psnup - multiple pages per sheet

     psnup [ -wwidth ] [ -hheight ] [ -ppaper ]  [  -Wwidth  ]  [
     -Hheight  ] [ -Ppaper ] [ -l ] [ -r ] [ -f ] [ -c ] [ -mmar-
     gin ] [ -bborder ] [ -dlwidth ] [ -sscale ] [ -nup ] [ -q  ]
     [ infile [ outfile ] ]

     Psnup puts multiple logical pages onto each  physical  sheet
     of paper.  The input PostScript file should follow the Adobe
     Document Structuring Conventions.

     The -w option gives the paper width, and the -h option gives
     the  paper height, normally specified in cm or in to convert
     PostScript's points (1/72 of  an  inch)  to  centimeters  or
     inches.  The -p option can be used as an alternative, to set
     the paper size to a3, a4, a5, b5, letter, legal,  or  10x14.
     The default paper size is a4. The -W, -H, and -P options set
     the input paper size, if it is  different  from  the  output
     size.  This  makes  it easy to impose pages of one size on a
     different size of paper.

     The -l  option  should  be  used  for  pages  which  are  in
     landscape  orientation  (rotated  90 degrees anticlockwise).
     The -r option should be used for pages which are in seascape
     orientation  (rotated  90  degrees  clockwise),  and  the -f
     option should be used for pages which  have  the  width  and
     height interchanged, but are not rotated.

     Psnup normally uses `row-major' layout, where adjacent pages
     are  placed in rows across the paper.  The -c option changes
     the order to  `column-major',  where  successive  pages  are
     placed in columns down the paper.

     A margin to leave around the whole  page  can  be  specified
     with the -m option. This is useful for sheets of `thumbnail'
     pages, because the normal page margins are reduced  by  put-
     ting multiple pages on a single sheet.

     The -b option is used to specify an additional margin around
     each page on a sheet.

     The -d option draws a line around the border of  each  page,
     of the specified width.  If the lwidth parameter is omitted,
     a default linewidth of 1 point is assumed. The linewidth  is
     relative  to the original page dimensions, i.e. it is scaled
     down with the rest of the page.

     The scale chosen by psnup can  be  overridden  with  the  -s
     option.  This  is  useful  to  merge pages which are already


     The -nup option selects the number of logical pages  to  put
     on  each sheet of paper. This can be any whole number; psnup
     tries to optimise the layout so that the minimum  amount  of
     space  is  wasted.  If psnup cannot find a layout within its
     tolerance limit, it will abort with an  error  message.  The
     alternative  form  i nup can also be used, for compatibility
     with other n-up programs.

     Psnup normally prints the page  numbers  of  the  pages  re-
     arranged; the -q option suppresses this.

     The potential use of this utility is varied but one particu-
     lar use is in conjunction with psbook(1). For example, using
     groff to create a PostScript document and lpr  as  the  UNIX
     print spooler a typical command line might look like this:

     groff -Tps -ms file | psbook | psnup -2 | lpr

     Where file is a 4 page document this command will result  in
     a  two page document printing two pages of file per page and
     rearranges the page order to match the input pages 4  and  1
     on  the  first  output  page and pages 2 then 3 of the input
     document on the second output page.

     Copyright (C) Angus J. C. Duggan 1991-1995

     psbook(1),  psselect(1),  pstops(1),  epsffit(1),  psnup(1),
     psresize(1),    psmerge(1),    fixscribeps(1),    getafm(1),
     fixdlsrps(1),   fixfmps(1),   fixmacps(1),    fixpsditps(1),
     fixpspps(1),     fixtpps(1),     fixwfwps(1),    fixwpps(1),
     fixwwps(1), extractres(1), includeres(1)

     PostScript is a trademark of Adobe Systems Incorporated.

     Psnup does not accept all DSC comments.