Occasionally, I have to convert a PDF file to Postscript (e.g. for subsequent processing with some PostScript utility). In the Linux/command line area, I know two options: pdf2ps and pdftops. I also know that one of the two is wonky and the other is better. But because their names are so close I can't manage to remember which one to take. This post should put an end to that!

Spoiler alert (and a questionable mnemonic) "pdftops is da top".

pdf2ps

The pdf2ps tools is based on Ghostscript, a PostScript interpreter. It is actually a fairly thin shell script wrapper around the "gs" tool.

Basic usage is pretty straight forward:

pdf2ps [options] input.pdf [output.ps]

In case you don't specify the output file name, it's extracted from the input file name by replacing the ".pdf" extension with ".ps".

Help: the man page is minimalistic, the only interesting thing is the note about the option -dLanguageLevel=3. Running pdf2ps -h also gives you this info. However, as the tool is based on Ghostscript, you can also give it other options that "gs" accepts (for example -r 300 to set the resolution to 300 dpi).

pdftops

The pdftops tool comes with Xpdf or is successor Poppler (e.g. on Ubuntu 9.10, it's part of the "poppler-utils" package).

Basic usage is straight forward:

pdftops [options] input.pdf [output.ps]

Help: the man page explains a lot of options and pdftops -h gives you a short version of that.

pdf2ps versus pdftops: pdftops wins hands down

Problem with pdf2ps: fonts are converted to bitmap fonts (at a pretty high resolution by default, but configurable with the -r option): For starters, the PDF-to-PS conversion can take quite some time. But more importantly, the resulting file can be huge, which puts a burden on subsequent processing of the PostScript file. I also remember having issues with pdf2ps rather aggressively cropping to bounding boxes.

With pdftops on the other hand, the conversion takes less time, the resulting file is smaller, and fonts are better preserved. Also, pdftops provides some interesting additional options like -eps to generate an EPS file, -f and -l to limit the page range to convert, and options to control/change the page size: -origpagesizes, -nocrop, -expand, -noshrink. Check out the man page for more info.

Even more Poppler goodies

Apart from the pdftops tool, the poppler-utils package also provides some other interesting toosl: pdfinfo (PDF document information extractor), pdfimages (PDF image extractor), pdftohtml (PDF to HTML converter), pdftotext (PDF to text converter), and pdffonts (PDF font analyzer).

Handy.