How can I reduce the file size of a scanned PDF file?

Use the following ghostscript command:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

Summary of -dPDFSETTINGS:

  • -dPDFSETTINGS=/screen lower quality, smaller size. (72 dpi)
  • -dPDFSETTINGS=/ebook for better quality, but slightly larger pdfs. (150 dpi)
  • -dPDFSETTINGS=/prepress output similar to Acrobat Distiller "Prepress Optimized" setting (300 dpi)
  • -dPDFSETTINGS=/printer selects output similar to the Acrobat Distiller "Print Optimized" setting (300 dpi)
  • -dPDFSETTINGS=/default selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file

Reference: https://www.ghostscript.com/doc/current/VectorDevices.htm#PSPDF_IN:

Controls and features specific to PostScript and PDF input

-dPDFSETTINGS=configuration

Presets the "distiller parameters" to one of four predefined settings:

  • /screen selects low-resolution output similar to the Acrobat Distiller (up to version X) "Screen Optimized" setting.
  • /ebook selects medium-resolution output similar to the Acrobat Distiller (up to version X) "eBook" setting.
  • /printer selects output similar to the Acrobat Distiller "Print Optimized" (up to version X) setting.
  • /prepress selects output similar to Acrobat Distiller "Prepress Optimized" (up to version X) setting.
  • /default selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file.

The exact settings for each of these, including their DPI values, are shown in the dozens of options in this table: https://www.ghostscript.com/doc/current/VectorDevices.htm#distillerparams.


My favorite way to do this is to convert the PDF to PostScript and back. It does not always work, though, but when it works the results are nice:

ps2pdf input.pdf output.pdf

This also directly works on PDFs, as suggested in the comments.

Some users also report more success when using the ebook settings as follows:

ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf

aking1012 is right. With more information regarding possible embedded images, hyperlinks etc.. it would be much more easier to answer this question!

Here are a couple of script and command-line solutions. Use as you see fit.

  • reduce-pdf-file-size-linux
  • shrinkpdf
  • compress-a-pdf-with-pdftk
  • pdfcompress