GhostScript でPDFの圧縮|シェル

はじめに
macOSでPDFをコマンドラインで圧縮する方法をご紹介いたします。とくに自炊などで電子書籍化したPDFデータの容量を圧縮したい時におすすめの方法です。
GhostScriptのインストール
GhostScript
というソフトウェアを使ってPDFを圧縮します。macOSの場合は
brew
を使ってインストールできるので簡単です。
パッケージ | バージョン | インストールコマンド |
---|---|---|
gs | 10.01.2 | brew install ghostscript |
GhostScriptでPDFを圧縮してみる。
圧縮したいPDF in.pdf
を次のコマンドで圧縮して
out.pdf
として書き出すことができます。
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf
試してみたところ、138MBあったPDFが76MBへ削減できました!およそ50%の圧縮です!
PDFSETTINGS
オプションを変更することで圧縮率を高める方法もありますが、電子書籍だと文字が読めない状態になってしまいましたのでここでは紹介しません。
モノによっては大して圧縮されなかったり、圧縮自体がエラーになってうまく書き出せなかったりしますのでご注意ください。圧縮エラーになるファイルが結構ありました。
シェルスクリプト
先ほどのコマンドを毎回入力するのは大変ですから、圧縮作業が少しラクになるように次のようなシェルスクリプトを作ってみました。
#!/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を圧縮したい場合は、このスクリプトを少し改造すれば実現できますのでやってみてください。
関連記事
- expectで、対話型のコマンドライン操作を自動化する【シェル・macOS】
- macOS で Postfix(SMTPメールサーバー)を起動するまで
- rename 名前の一括変更|シェル
- Python venvで仮想環境とpip freezeを使う方法
- tarコマンドでmacOSのバックアップする方法