プログラミング

【Windows10】オフラインでPDF圧縮【Ghostscript使用】

プログラミング
この記事は約4分で読めます。

とっちゃん@nyanco! です。

今回はWindows10でGhostscriptを使ったオフラインでできるPDF圧縮方法のご紹介です。

PDFのサイズを少しでも圧縮(軽く)したい時、オンラインツールはたくさん選択肢があるんですが、オフラインのツールだとあまりないのが現状です。

オフラインでPDFの圧縮ができるツールのまとめ記事はこちら

上記記事のツールでも良いのですが、改めて調べていると「Ghostscript(ゴーストスクリプト)」を使ってのPDFサイズ圧縮法があるのを知ったので、備忘録がてらアーカイブしておきます。

Ghostscriptの導入についての記事はこちら

スポンサーリンク

Ghostscriptを使ったPDF圧縮方法

コマンドプロンプトを起動

「Windowsキー」+「X」で開くメニューから「コマンドプロンプト」をクリックしてコマンドプロンプトを起動します。

コマンドプロンプト(管理者)じゃない方でOK。(管理者)の方はセキュリティ面でハイリスクなので必要でない限り使わない
通称「黒い画面」。「コマンドライン」とも言う。ちなみにMacだと「ターミナル」

コマンドを入力・実行

あとは下記の形式でコマンドを入力して実行でOK!

gswin64c -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -dQUIET -sOutputFile=C:/Users/【ユーザー名】/【ディレクトリ】/output.pdf C:/Users/【ユーザー名】/【ディレクトリ】/test.pdf

ちょっと長ったらしいですが、コマンドを1つ1つ見ていくとそんなに難しいものではないです。

Ghostscriptは「半角スペース」がコマンドの区切りを意味します。

各コマンドのざっくり意味はこちら

ひと通り調べた上ですが、情報不足で不明確なところには「?」をつけてます。

gswin64c:Ghostscriptを呼び出す(32bit版だと「gswin32c」)
-sDEVICE=pdfwrite:PDFを書き出す
-dCompatibilityLevel=1.4:書き出すPDFの互換性レベルの設定(互換性レベルについてはこちらのサイト様の記事が参考になります。大体は1.4で良さそうかと)
-dPDFSETTINGS=/ebook:PDF内の画像解像度の設定(種類は以下)
 /screen:サイズは一番小さくなるが解像度がかなり落ちるので書き出したあと確認必須
 /ebook:解像度を中間レベルに落とす。一番実用的かと
 /printer:高解像度になるので、PDFサイズは寧ろアップする(画像が綺麗になるわけではない)
 /prepress:高解像度になるので、PDFサイズは寧ろアップする(画像が綺麗になるわけではない)
-dNOPAUSE:入力ファイルを1つずつ処理する
-dBATCH:変換処理が終わればGhostscriptを終了する
-dQUIET:処理の進捗を非表示にする
-sOutputFile=:変換後のファイル名とパス 変換元のファイル名とパス
 ※パスに半角スペースがあると動かない(日本語はOK)
 ※パスなしファイル名のみだとコマンドプロンプトのカレントディレクトリが対象となる
 ※ファイル名を変換元・変換後同じにするとおかしくなる(上書きはできない)

その他のオプション

-sColorConversionStrategy=Gray:PDFをグレースケールにする(モノクロになるのでサイズも小さくなる)
-dEmbedAllFonts=true:フォントを埋め込む(環境にフォントがないとエラーになる?)
-dOptimize=true:PDFを最適化する(サイズ圧縮にはあまり影響が感じられない印象)

オプションは他にももっとありそうですが、PDF圧縮の用途としてはこのくらいで十分かと。

個人的に、PDFをグレースケールにできるのは地味に便利じゃないかなと思ってます。

参考にさせていただいたサイト様

以下、参考にさせていただきました。ありがとうございます!

High Level Output Devices
自炊した書籍のPDFファイルをGhostscriptを使って自動で圧縮するbashスクリプトを作った話
どうも、Tです。僕は本が大好きですが、多すぎて紙のまま保存できないので、自炊をしてPDFファイルで保存しています。そんな自炊したPDFファイルで困ったことを放置してましたが、抜本的に見直したお話です。自炊でPDFファイル保存して困ったこと自
ghostscript gsで圧縮時のinput名 output名が同じだとNG?|teratail
コマンドでPDF圧縮にghostscriptを使用しています 下記の様に書くと思いますが output.pdf input.pdfが同じ名前だとうまく圧縮されません 例 hoge.pdf hoge.pdf だとNG hoge1.pdf hoge.pdf だとOKになる これをなんとか同
windows — EPSをPDFに変換するGhostscriptコマンドラインパラメータ
Ghostscript 8.54 for Windowsをインストールしたところです。someFile.epsをsomeFile.eps.pdfに変換するためにgswin32c.exeに渡す最小パラメータを知っている人はいますか?...
https://hikaku.cman.jp/pdf/version/

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント