A simple wrapper around Ghostscript to shrink PDFs (as in reduce filesize) under Linux. Inspired by some code I found in an OpenOffice Python script (I think). The script feeds a PDF through Ghostscript, which performs lossy recompression by such methods as downsampling the images to 72dpi. The result should be (but not always is) a much smaller file.
Download the script and make it executable:
chmod +x shrinkpdf.sh
If you run it with no arguments, it prints a usage summary. If you run it with a
single argument -- the name of the pdf to shrink -- it writes the result to
stdout
:
./shrinkpdf.sh in.pdf > out.pdf
You can provide an output file with the -o
option:
./shrinkpdf.sh -o out.pdf in.pdf
And an output resolution in DPI (default is 72 DPI) with the -r
option:
./shrinkpdf.sh -r 90 -o out.pdf in.pdf
Color-to-grayscale conversion can be enabled with the -g
flag. This can
sometimes further reduce the output size:
./shrinkpdf.sh -g -r 90 -o out.pdf in.pdf
Due to limitations of shell option handling, options must always come before the input file.
If both the input and the output are regular files, the script checks if the
output is actually smaller. If not, it writes a message to stderr
and copies
the input over the output.
Sorry, Windows users; this one is Linux only. A Windows adaptation of this script can be found on this blog. It's a bit more user-friendly than my barebones version and also supports drag-and-drop.
The script is licensed under the BSD 3-clause license.
I didn't invent the wheel, just packaged it nicely. All credits go to the Ghostscript team.