2019/3/22追記

情報が古くなっいます。 pdfsizeoptに従ってインストールしてください。sam2pなども含まれています。 ただしあまり圧縮できませんでした。

macOSの場合はQuartzフィルタを利用した方が良いです。


pdfsizeoptでPDFの圧縮を試みる。

jbig2enc, sam2pをMacPortsからインストール。

pngoutとMultivalent.jarはオープンソースではない。pngoutはバイナリを~/local/binに置く。Multvalent.jarのToolsは現在のバージョンには含まれないので、pdfsizeoptのページからダウンロードして、~/Library/Java/Extensionsに置く。デフォルトでCLASSPATHに含まれるが、環境変数に含まれないのでpdfsizeopt.pyからは分らない。

pdfsizeoptをチェックアウト。pythonの在処を書き換えたpdfsizeopt.pyを~/local/libexecに置く。引数とCLASSPATHを渡し、大量の中間ファイルを取り除くために、pdfsizeopt.pyを下記のスクリプトから呼び出す。

サイズは確かに小さくなるが、処理に結構時間がかかる。途中で落ちてしまうこともある。pdftkでつなげた場合はうまくいった。

#!/bin/sh
PDFSIZEOPT=${HOME}/local/libexec/pdfsizeopt.py
OPTS="--use-pngout=true --use-jbig2=true --use-multivalent=true"
MULTIVALENT=${HOME}/Library/Java/Extensions/Multivalent.jar
if [ $# -lt 1 ]; then
  echo "usage :: $0 input.pdf"
  exit
fi
INPUT=$1
TMPDIR=`mktemp -d /tmp/pdfsizeopt.XXXXXX`
cp ${INPUT} ${TMPDIR}
cd ${TMPDIR}
CLASSPATH=${MULTIVALENT} ${PDFSIZEOPT} ${OPTS} ${INPUT}
mv ${INPUT%pdf}psom.pdf ${OLDPWD}
rm -rf ${TMPDIR}