かきかたえんぴつ

いつかどこかで何かの役にたつかもしれないメモ

PDF に埋め込まれた画像を圧縮

Ghostscript (Windows 版)を使って、重たい PDF ファイルの画像を圧縮して、いくらかスリムにする方法。以下のコマンドを打つべし。

gswin32c.exe -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile=output.pdf -c .setpdfwrite -f input.pdf

/FlateEncode は Zip 圧縮の指定。JPEG 圧縮にする場合は /DCTEncode に変える。

gswin32c.exe -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dAutoFilterColorImages=false -dColorImageFilter=/DCTEncode -sOutputFile=output.pdf -c ".setpdfwrite << /ColorImageDict << /QFactor 0.1 >> >> setdistillerparams" -f input.pdf

/QFactor に画質を 0.0(良い)~1.0(悪い)の範囲で指定する。

ついでに作成者やタイトルなどの情報も埋め込むには、

% Document information
[/CreationDate (D:20180112)
/Creator (Handmade)
/Title (Example)
/Subject (Example of how images in a PDF file are compressed with Ghostscript)
/Keywords (PDF Ghostscript Compression)
/Author (PDF Hanako)
/DOCINFO pdfmark

こんなものをテキストエディタで作り、info.ps のような名前を付けて保存する。そんで、gswin32c のオプションに加えてやれば良い。

gswin32c.exe -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile=output.pdf -c .setpdfwrite -f info.ps input.pdf

らしい(大昔に書いたブログの掘り起こしなので確かめていない)。