549 文字
3 分
[Ghostscript] PDFを圧縮する

やりたいこと#

昨今、PDFのファイルサイズを小さくする様々なオンラインサービスがあります。

しかし、個人情報の含まれるPDFだったりを小さくしたい場合、オンライン上にファイルをアップロードするのには抵抗があります。

なので、オフラインでPDFファイルサイズを縮小できる方法を探すと、Ghostscriptを使うとできそうなことが分かったので試してみました。

環境#

以下の環境で実施しました。

  • Windows 10
  • WSL2 Ubuntu-20.04

手順#

Ghostscriptをインストール#

WSL2上のUbuntuにGhostscriptをインストールします。

Terminal window
$ sudo apt install ghostscript

Ghostscript 9.50がインストールされました。

Terminal window
$ gs --version
9.50

PDFのファイルサイズを小さくする#

いよいよファイルサイズを縮小します。以下のコマンドでファイルサイズを小さくできます。

Terminal window
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<出力先のファイルパス> <小さくしたいPDFのファイルパス>

試しにこちらの3.9Mあるinput.pdfというPDFのファイルサイズの縮小を試みてみます。

Terminal window
$ ls -lh input.pdf
-rwxr-xr-x 1 user user 3.9M Sep 17 02:15 input.pdf

縮小実行

Terminal window
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

2.5kまでファイルサイズを圧縮できました。

Terminal window
$ ls -lh output.pdf
-rw-r--r-- 1 user user 2.5K Sep 17 02:20 output.pdf

コマンドの解説#

オプション説明
-sDEVICE=pdfwritePDF形式で出力します。
-dCompatibilityLevel=1.4PDFのバージョンを指定します。
-dPDFSETTINGS=/ebookPDFの解像度を指定します。 以下4つの値を指定できて、下に行くほど品質が高くなります。 ・/screen ・/ebook ・/printer ・/prepress 指定しない場合は次の値を指定したときと同じ挙動になります。 ・/default なお、入力したPDFから品質をなるべく落としたくない場合は、/prepressではなく/defaultを使用するべきらしいです。
-dNOPAUSE各ファイルを処理するたびに一時停止しないようになります。
-dQUIET標準出力への出力を抑制します。
-dBATCH対話形式に入るのではなく、コマンド実行完了後に処理を終了します。
-sOutputFile=<出力先のファイルパス>縮小後のPDFの出力先のファイルパスを指定します。

参考: