views:

2375

answers:

3

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.

+1  A: 

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.

danieltalsky
+2  A: 

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

danio
Oooh, I will try that out. Thank you!
ceejayoz
Turns out the latest version of this software does not include the pdf tools! You must find and use the Multivalent20060102.jar file.
Joe Koberg
+1  A: 

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
pipitas