サイトロゴ

GhostScript でPDFの圧縮|シェル

著者画像
Toshihiko Arai

はじめに

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を圧縮したい場合は、このスクリプトを少し改造すれば実現できますのでやってみてください。

関連記事