GhostScriptコマンドでPDFを圧縮する macOS/Linux/Unix
macOSでPDFをコマンドラインで圧縮する方法をご紹介いたします。とくに自炊などで電子書籍化したPDFデータの容量を圧縮したい時におすすめの方法です。
GhostScriptのインストール
GhostScript というソフトウェアを使ってPDFを圧縮します。macOSの場合は brew を使ってインストールできるので簡単です。
パッケージ | バージョン | インストールコマンド |
---|---|---|
gs | 10.01.2 | brew install ghostscript |
GhostScriptでPDFを圧縮してみる。
圧縮したいPDF in.pdf を次のコマンドで圧縮して out.pdf として書き出すことができます。
zsh
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf
試してみたところ、138MBあったPDFが76MBへ削減できました!およそ50%の圧縮です! PDFSETTINGS オプションを変更することで圧縮率を高める方法もありますが、電子書籍だと文字が読めない状態になってしまいましたのでここでは紹介しません。
モノによっては大して圧縮されなかったり、圧縮自体がエラーになってうまく書き出せなかったりしますのでご注意ください。圧縮エラーになるファイルが結構ありました。
シェルスクリプト
先ほどのコマンドを毎回入力するのは大変ですから、圧縮作業が少しラクになるように次のようなシェルスクリプトを作ってみました。
bash
#!/bin/bash
input=$1
output=${input%.*}_min.pdf
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$output $input
echo $output
シェルへ圧縮したいPDFを渡せば、サフィックスに _min を付与して圧縮したファイルを生成してくれます。一括でPDFを圧縮したい場合は、このスクリプトを少し改造すれば実現できますのでやってみてください。
関連記事
アイデアノート > macOSで使えるシェル