やりたいこと
昨今、PDFのファイルサイズを小さくする様々なオンラインサービスがあります。
しかし、個人情報の含まれるPDFだったりを小さくしたい場合、オンライン上にファイルをアップロードするのには抵抗があります。
なので、オフラインでPDFファイルサイズを縮小できる方法を探すと、Ghostscriptを使うとできそうなことが分かったので試してみました。
環境
以下の環境で実施しました。
- Windows 10
- WSL2 Ubuntu-20.04
手順
Ghostscriptをインストール
WSL2上のUbuntuにGhostscriptをインストールします。
$ sudo apt install ghostscript
Ghostscript 9.50がインストールされました。
$ gs --version
9.50
PDFのファイルサイズを小さくする
いよいよファイルサイズを縮小します。以下のコマンドでファイルサイズを小さくできます。
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<出力先のファイルパス> <小さくしたいPDFのファイルパス>
試しにこちらの3.9Mあるinput.pdfというPDFのファイルサイズの縮小を試みてみます。
$ ls -lh input.pdf
-rwxr-xr-x 1 user user 3.9M Sep 17 02:15 input.pdf
縮小実行
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
2.5kまでファイルサイズを圧縮できました。
$ ls -lh output.pdf
-rw-r--r-- 1 user user 2.5K Sep 17 02:20 output.pdf
コマンドの解説
オプション | 説明 |
-sDEVICE=pdfwrite | PDF形式で出力します。 |
-dCompatibilityLevel=1.4 | PDFのバージョンを指定します。 |
-dPDFSETTINGS=/ebook | PDFの解像度を指定します。 以下4つの値を指定できて、下に行くほど品質が高くなります。 ・/screen ・/ebook ・/printer ・/prepress 指定しない場合は次の値を指定したときと同じ挙動になります。 ・/default なお、入力したPDFから品質をなるべく落としたくない場合は、/prepressではなく/defaultを使用するべきらしいです。 |
-dNOPAUSE | 各ファイルを処理するたびに一時停止しないようになります。 |
-dQUIET | 標準出力への出力を抑制します。 |
-dBATCH | 対話形式に入るのではなく、コマンド実行完了後に処理を終了します。 |
-sOutputFile=<出力先のファイルパス> | 縮小後のPDFの出力先のファイルパスを指定します。 |
参考:
PDFのファイルサイズをGhostscriptのコマンドで小さくする - Qiita
大きいファイルサイズのPDFはEメールに添付して送付すると、メールサーバーで弾き返され、送付できないことがある。そのような場合は、PDFの画像の解像度を落としてファイルサイズを小さくするGhosts…
High Level Output Devices
Details of Ghostscript Output Devices
How to Use Ghostscript
コメント