How to set custom page size with Ghostscript

theta picture theta · Oct 1, 2012 · Viewed 26k times · Source

I have scanned some materials at 600 dpi, ~ 9.36x12.67 inches and prepared in PostScript (PS) format.

Now when I try to transform PS to PDF with Ghostscript (GS), I get clipped output, as I assume GS's default page size is set to A4. I found available templates for GS here: http://www.ghostscript.com/doc/9.06/Use.htm#Known_paper_sizes but none matches closely to dimensions of my PS files, so:

Can I instruct GS to output custom size, and if so how?

-sPAPERSIZE instruction seem to accept only predefined templates name, as in linked documentation.

Answer

Kurt Pfeifle picture Kurt Pfeifle · Oct 1, 2012

You can set the used page size with -gNNNNxMMMM where NNMN is the width in pixels at 720 dpi (720 pixels == 1 inch), and MMMM is the height in pixels at 720 dpi.

Or you can set the custom size in PostScript points (72 points == 1 inch) with -dDEVICEWIDTHPOINTS=w -dDEVICEHEIGHTPOINTS=h.

If I'm not wrong, 9.36 inch ≈= 674 points and 12.67 inch ≈= 912 points.

You'll also have to apply -dPDFFitPage in order to fit your input onto the page.

So you could use either

gs                          \
   -o output.pdf            \
   -sDEVICE=pdfwrite        \
   -dDEVICEWIDTHPOINTS=674  \
   -dDEVICEHEIGHTPOINTS=912 \
   -dPDFFitPage             \
    input.ps

or

gs                   \
   -o output.pdf     \
   -sDEVICE=pdfwrite \
   -r600             \
   -g8112x7596       \
   -dPDFFitPage      \
    input.ps