Today I finally got around to use Automator, and make one of the command line scripts I have been running for ages a little easier to use.

The problem I have been trying to solve is the fact that the PDF files that a Mac creates are normally of very high quality and hence large. If you just want to send someone a document for reading on screen, a much smaller PDF file would do. The open source package “ghostscript” has a tool called ps2pdf that can be (ab)used to adjust the size of components for PDF files. I installed this in /opt/local/bin using the “macports” software.

 

To make it possible to do the PDF-shrinking from the Finder, I started automator, and made a new “Service”. I instructed it to use PDF files, and only in the Finder. In the workflow, I added a “run shell script” step. The system passes the files as arguments to this script.

The contents of the script are:

export PATH=$PATH:/opt/local/bin
for f in "$@"
do
    echo "$f"
    d=`dirname "$f"`
    cd "$d"
    b=`basename "$f"`
    ps2pdf -dPDFSETTINGS=/ebook "$b"
    #      Choose /screen for even smaller PDF, or 
    #      /printer /prepress or /default for successively larger
    if [ -f "$b".pdf ]; then
        mv "$b" "$b".old
        mv "$b".pdf "$b"
    else 
        echo "Apparently conversion failed"
    fi
done

I saved this as the service named “Small PDF”, and Done!

And using it is even easier: