How to n-up pages in a PDF or PPT file via the command-line
Suppose you downloaded a PowerPoint or a PDF file from slideshare. You liked it so much that you wanted to print it out. But, alas, it was 50 pages long.
This tutorial introduces the command-line tools to n-up
a PPT or PDF file, i.e., batch multiple pages of the input file onto a single page on the output file. The output file is of the PDF format.
To 2-up a file, you place 2 original pages on a single output page. Similarly, to 4-up a file, 4 original pages on a single output page. By n-upping a file, you drastically reduce the number of pages for printing.
Convert to PDF
If the original file is a PowerPoint file (PPT, PPTX, PPS, PPSX), you need to first convert it to PDF. The tool I use is unoconv
.
To install unoconv
on Debian,
$ sudo apt-get install unoconv
To convert input.ppt
to input.pdf
,
$ unoconv -f pdf input.ppt
N-up PDF
Now that you have a PDF file, use the pdfnup
program to n-up the file.
To install pdfnup
,
$ sudo apt-get install pdfjam
Behind the scene, pdfnup
uses the TeX typesetting system to do the n-up conversion. So, you need to first install some LaTeX-related packages.
$ sudo apt-get install texlive-latex-base texlive-latex-recommended
Now, you are ready to execute the following command to n-up input.pdf
.
$ pdfnup --nup 2x3 --paper letter --frame true --no-landscape input.pdf
--nup 2x3: 2x3 means 2 columns and 3 rows. This houses a total of 6 input pages on each output page.
--paper letter: The default paper size is A4. For North Americans, specify
--paper letter
for the US letter size.--frame: By default, the subpages on the output page are not framed, i.e., there are no borders around each subpage. To specify that a frame should be drawn around each subpage, specify
--frame true
.--no-landscape: The default page orientation is
landscape
. If you want theportrait
orientation, specify--no-landscape
.The output PDF filename for the above example is
input-nup.pdf
. The output filename is constructed by appending the default suffix-nup
to the input filename.
The above method is not the only way to n-up a PDF file. Below is an alternative method that involves first converting the PDF file to PostScript format, then doing the n-up, and finally converting it back to PDF.
$ pdf2ps input.pdf input.ps
$ psnup -2 input.ps output.ps
$ ps2pdf output.ps output.pdf
You can choose either method to do the n-up conversion. I generally avoid the PostScript method because it involves an extra conversion step. Regardless of which method you choose, the environment will thank you for using less paper.