Resizing a PDF using Ghostscript

Matt picture Matt · Sep 16, 2011 · Viewed 57.5k times · Source

I am trying to scale a PDF which is for example just small of A4 size up to A4.

This works fine with portrait documents. The document is scaled up correctly and then padding is added to the top.

On landscape documents padding is not added though. Therefor the document will end up being the correct height for A4 but then not wide enough, as padding is not added on the document side (as I hoped).

This is what I use to have it working for A4 portrait documents:

gs \
 -sOutputFile=output.pdf \
 -sDEVICE=pdfwrite \
 -sPAPERSIZE=a4 \
 -dCompatibilityLevel=1.4 \
 -dNOPAUSE \
 -dBATCH \
 -dPDFFitPage \
  input.pdf

Answer

Kurt Pfeifle picture Kurt Pfeifle · Sep 22, 2011

You should add the -dFIXEDMEDIA switch:

gs \
 -o output.pdf \
 -sDEVICE=pdfwrite \
 -sPAPERSIZE=a4 \
 -dFIXEDMEDIA \
 -dPDFFitPage \
 -dCompatibilityLevel=1.4 \
  input.pdf

-dFIXEDMEDIA is always required if you need to force a specific paper/page/media size and ignore the paper/page/media size specified in the document. Because PDF always has a paper/page/media size defined (PostScript might have, or might not have...).

(My -o ... is shorter and saves one from adding -dBATCH -dNOPAUSE -- but works only for more recent versions of Ghostscript.)