GhostScriptコマンドでPDFを圧縮する macOS/Linux/Unix

macOSでPDFをコマンドラインで圧縮する方法をご紹介いたします。とくに自炊などで電子書籍化したPDFデータの容量を圧縮したい時におすすめの方法です。

【macOS】PDFをコマンドラインで圧縮する方法【GhostScript】
【macOS】PDFをコマンドラインで圧縮する方法【GhostScript】

GhostScriptのインストール

GhostScript というソフトウェアを使ってPDFを圧縮します。macOSの場合は brew を使ってインストールできるので簡単です。

パッケージバージョンインストールコマンド
gs10.01.2brew 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を圧縮したい場合は、このスクリプトを少し改造すれば実現できますのでやってみてください。

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

Python学習にオススメの本をご紹介!
Pandasでデータサイエンスはじめよう!
スクレイピングにオススメの書籍

▼ Beautiful Soup4を使ったWebクローリングをはじめ、表データをpandasやOpenPyXL、matplotでデータ解析、グラフ表示などのスクレイピングのやり方が分かりやすく説明されてます。図解が多いのでPython初心者の方でも読み進められる内容となってます。