Thursday, March 31, 2011

using imagemagick or ghostscript (or something) to scale PDF to fit page?

I've been bashing my head against this to no avail.

I need to shrink some large PDFs to print on an 8.5x11 inch (standard letter) page. Can imagemagick/ghostscript handle this sort of thing, or am I having so much trouble because I'm using the wrong tool for the job?

Just relying on the 'shrink to page' option in client-side print dialogs is not an option, as we'd like for this to be easy-to-use for the end users.

From stackoverflow
  • ImageMagick's mogrify/convert commands will indeed do the job. Stephen Page had just about the right idea, but you do need to set the dpi of the file as well, or you won't get the job done.

    Assuming you have a file that's 300 dpi and already the same aspect ratio as 8.5 x 11 the command would be:

    // 300dpi x 8.5 -2550, 300dpi x 11 -3300
    convert original.pdf -density "300" -resize "2550x3300" resized.pdf
    

    If the aspect ratio is different, then you need to do some slightly trickier cropping.

  • The problem with using ImageMagick is that you are converting to a raster image format, increasing file size and decreasing quality for any vector elements on your pages.

    Multivalent will retain the vector information of the PDF. Try:

    java -cp Multivalent.jar tool.pdf.Impose -dim 1x1 -paper "8.5x11in" myFile.pdf
    

    to create an output file myFile-up.pdf

    ceejayoz : Oooh, I will try that out. Thank you!
    Joe Koberg : Turns out the latest version of this software does not include the pdf tools! You must find and use the Multivalent20060102.jar file.
  • I would not use convert. It uses Ghostscript in the background, but is much slower. I'd use Ghostscript directly, since it gives me much more direct control (and also some control over settings which are much more difficult to achieve with convert). And for convert to work for PDF-to-PDF conversion you'll have Ghostscript installed anayway:

      gs \
        -o /path/to/resized.pdf \
        -sDEVICE=pdfwrite \
        -dPDFFitPage \
        -r300x300 \
        -g2550x3300 \
        /path/to/original.pdf
    

0 comments:

Post a Comment