MacでGhostscriptをインストールする

準備としてbrewでghostscriptをインストールする。

$ brew install ghostscript

GhostscriptでPDFを圧縮するコマンド

以下のコマンドで指定したPDFファイルを圧縮する。

$ gs -sDEVICE=pdfwrite \
     -dCompatibilityLevel=1.4 \
     -dPDFSETTINGS=/ebook \
     -dNOPAUSE \
     -q \
     -dBATCH \
     -sOutputFile=出力ファイルパス.pdf \
     入力ファイルパス.pdf

各オプションの説明

-sDEVICE

変換したい出力ファイル形式に応じたデバイスを選択する。

--help オプションをつけてヘルプを確認すると何が指定できるのかを確認できる。

今回は出力形式もPDFなので pdfwrite を選択する。

JPEGファイルを作成したいなら以下のようになる。

$ gs -sDEVICE=jpeg \
     -dCompatibilityLevel=1.4 \
     -dPDFSETTINGS=/ebook \
     -dNOPAUSE \
     -q \
     -dBATCH \
     -sOutputFile=output.jpg \
     input.pdf

-dCompatibilityLevel

PostScriptの互換性レベルを指定する。1.4を指定すればよい。

-dPDFSETTINGS=/ebook

PDFの品質と圧縮率に関わる。

以下から選択できるので、実行してみて出来上がったファイルの品質とサイズを確認する。

  • /screen
  • /ebook
  • /printer
  • /prepress
  • /default

-dNOPAUSE

ページごとに入力を求められる。

[-dNOPAUSEオプション未指定時]
$ gs -sDEVICE=pdfwrite \
     -dCompatibilityLevel=1.4 \
     -dPDFSETTINGS=/ebook \
     -q \
     -dBATCH \
     -sOutputFile=output.pdf \
     input.pdf
%%BoundingBox: 28 49 563 807
%%HiResBoundingBox: 28.745999 49.481998 562.013983 806.959944
>>showpage, press <return> to continue<<

%%BoundingBox: 42 190 412 811
%%HiResBoundingBox: 42.983999 190.349994 411.029987 810.701975
>>showpage, press <return> to continue<<

ページ処理ごとに>>showpage, press <return> to continue<<とエンターキーのに入力を求められる。

-dNOPAUSEオプションを指定するとページごとにキー入力を求められることなく最後のページまで実行される。

-q(-dQUIET)

ターミナルに出力されるメッセージを減らす。

[-qオプション未指定時]
$ gs -sDEVICE=pdfwrite \
     -dCompatibilityLevel=1.4 \
     -dPDFSETTINGS=/ebook \
     -dNOPAUSE \
     -dBATCH \
     -sOutputFile=output.pdf \
     input.pdf
GPL Ghostscript 10.01.1 (2023-03-27)
Copyright (C) 2023 Artifex Software, Inc.  All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Processing pages 1 through 1.
Page 1
$

[-qオプション指定時]
$ gs -sDEVICE=pdfwrite \
     -dCompatibilityLevel=1.4 \
     -dPDFSETTINGS=/ebook \
     -dNOPAUSE \
     -q \
     -dBATCH \
     -sOutputFile=output.pdf \
     input.pdf
$

-dBATCH

対話モードではなくバッチコマンドとして指定する。
このオプションを指定しなければ処理が終わるとプロンプトで待受け状態となるが、このオプションを指定するとコマンドが終了する。

[-dBATCHオプション未指定時]
$ gs -sDEVICE=pdfwrite \
     -dCompatibilityLevel=1.4 \
     -dPDFSETTINGS=/ebook \
     -dNOPAUSE \
     -q \
     -sOutputFile=output.pdf \
     input.pdf
GS>

[-dBATCHオプション指定時]
$ gs -sDEVICE=pdfwrite \
     -dCompatibilityLevel=1.4 \
     -dPDFSETTINGS=/ebook \
     -dNOPAUSE \
     -q \
     -dBATCH \
     -sOutputFile=output.pdf \
     input.pdf

-sOutputFile

このコマンド実行の出力ファイルパスを指定する。