GhostscriptでPDFファイルをPNG形式の画像に変換する
Ghostscriptの公式ページを見ればすぐわかった...
GhostscriptでPDFをPNG出力
やり方
公式ページを見ればすぐわかります。
Ghostscriptは様々な形式でのPNG出力をサポートしています。普通は以下の表の上2つ(png16m
とpnggray
)がオススメのようです。
デバイス*1 | 意味 |
---|---|
png16m | 24-bit RGB color |
pnggray | grayscale |
png256 | 8-bit color |
png16 | 4-bit color |
pngmono | black-and-white |
pngmonod | black-and-white (internal 8 bit grayscale rendering) |
pngalpha | 32-bit RGBA color |
-r オプション
-r
オプションでdpi(dots per inch)での解像度指定ができます。-r300
とか-r200x300
とかの指定ができます。
-sOutputFile オプション
-sOutputFile=filename
で出力ファイル名を指定します(必須)。PDFが複数ページでPNGも複数ファイル出力したいなら、出力ファイル名に%d
とかを含めます。PDFが複数ページなのに出力ファイル名に%d
を含めないと、1ページ目しか出力されないみたいです。
以下のページによると、-sOutputFile=out-%d.jpg -dBATCH -dNOPAUSE
という複数のオプション指定は-o out-%d.jpg
と短く書くことができます。
-dTextAlphaBits、-dGraphicsAlphaBits オプション
アンチエイリアスします。-dTextAlphaBits=n
や-dGraphicsAlphaBits=n
でnに数値を与えます。アンチエイリアスはテキストとグラフィックで別々に有効化できるようです。nに4を与える(-dTextAlphaBits=4
などとする)と最適のようです。
実行例
ということで、上の使い方に従えばGhostscriptでPDFファイルをPNGファイルに変換できます。以下にいくつか実行例を書きました。(今回は単一ページのPDFファイルのみを扱った)
テキストのみのPDFファイル sample.pdf を sample.png に変換
gs -sDEVICE=pnggray -r1000 -dTextAlphaBits=4 -o sample.png sample.pdf
解像度は適当なものを選びました。
sample.pdf を透過PNGファイル sample_alpha.png に変換
gs -sDEVICE=pngalpha -r1000 -o sample_alpha.png sample.pdf
DEVICEにpngalphaを指定した場合、出力は透過PNGになり、自動的にアンチエイリアスが有効化されます。
とあるPDFファイル yukidaruma.pdf を(透過しない)yukidaruma.png に変換
gs -sDEVICE=png16m -r300 -dGraphicsAlphaBits=4 -o yukidaruma.png yukidaruma.pdf
この出力結果は以下です。
おしまい
実はGoogleで「Ghostscript pdf to png」などと検索しても、上で貼ったGhostscript公式Webページが上位に出てきません。上位に出てきたサイト(コード○グ含む)を見ても、なんだか難しそうだと思ってしまいました。
しかし、Ghostscriptの公式Webページを見たらすぐわかったので、今回は本当公式Webページをちゃんと参照しましょう案件でした。(最近 こんな記事 を読んだばかりなのに...と思った)
今回PDFの作成にはLaTeXを使用しています。ソースコードはGistに置きました。
おしまい。
*1:Ghostscriptでは出力形式をデバイスという。参考: Ghostscript についてちょっとだけ - おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか