PSNUP(1)

🌸 NAME 🌸

okay bestie, this is PSNUP(1) from the User Commands manual, and it is literally the page-imposing bestie you needed. psnup is the main character here: it puts multiple logical pages onto each physical sheet of paper. No cap, it’s giving β€œmake your printouts cute and efficient.” πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

psnup [OPTION...] -NUMBER [INFILE [OUTFILE]]

✨ DESCRIPTION ✨

psnup uses pstops to impose multiple logical pages on to each physical sheet of paper.

Paper sizes can be given either as a name (see paper(1)) or as WIDTHxHEIGHT (see psutils(1) for the available units). Put multiple pages of a PostScript document on to one page.

The synopsis bits mean:

  • -NUMBER β€” number of pages to impose on each output page
  • INFILE β€” - or no INFILE argument means standard input
  • OUTFILE β€” - or no OUTFILE argument means standard output

πŸ’– OPTIONS πŸ’–

  • -p PAPER, --paper PAPER β€” output paper name or dimensions (WIDTHxHEIGHT)
  • -P INPAPER, --inpaper INPAPER β€” input paper name or dimensions (WIDTHxHEIGHT)
  • -m DIMENSION, --margin DIMENSION β€” width of margin around each output page [default 0pt]; useful for thumbnail sheets, as the original page margins will be shrunk
  • -b DIMENSION, --border DIMENSION β€” width of border around each input page
  • -d [DIMENSION], --draw [DIMENSION] β€” draw a line of given width (relative to original page) around each page [argument defaults to 1pt; default is no line; width is fixed for PDF]
  • -l, --rotatedleft β€” input pages are rotated left 90 degrees
  • -r, --rotatedright β€” input pages are rotated right 90 degrees
  • -f, --flip β€” swap output pages’ width and height
  • -c, --transpose β€” swap columns and rows (column-major order)
  • -t NUMBER, --tolerance NUMBER β€” maximum wasted area in square pt [default: 100000]
  • -v, --version β€” show program’s version number and exit
  • -q, --quiet β€” don’t show progress

πŸ’¬ COMMENTS πŸ’¬

psnup aborts with an error if it cannot arrange the input pages so as to waste less than the given tolerance. Like, it is not gonna silently give you a cursed layout, bestie. 😭

The output page size defaults to the input page size; if none is specified in the document or on the command line, the default given by the paper command is used.

The input page size defaults to the output page size.

In row-major order (the default), adjacent pages are placed in rows across the paper; in column-major order, they are placed in columns down the page.


🌈 EXAMPLES 🌈

The potential use of this utility is varied but one particular 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. iconic behavior, honestly. πŸ¦‹


πŸ‘‘ AUTHOR πŸ‘‘

Reuben Thomas <rrt@sc3d.org>


this fab little page is from psutils 3.3.17, dated 2026-09-08 β€” and yes, it’s the PSNUP(1) page. bye bestie, go impose some pages πŸ’–βœ¨

πŸ“¦ where this page comes from