ゆう's Blog
PDFをJPEGに変換する(Ghostscript)

:~$ sudo dnf install ghostscript

:~$ ghostscript \ -dNOPAUSE -dBATCH -dSAFER \ -sDEVICE=jpeg \ -dJPEGQ=95 \ -r600 \ -dUseCIEColor \ -dColorConversionStrategy=/sRGB \ -dEmbedAllFonts=true \ -dDownScaleFactor=1 \ -sOutputFile=page-%03d.jpg \ input.pdf

各オプションの意味

● -dNOPAUSE / -dBATCH
複数ページ PDF を処理するための基本動作。
削ると ページごとに停止してしまう。

● -dSAFER
セキュリティ強化。
PHP の exec から呼ぶ場合は必須。
ローカル用途なら外部入力がないため不要。

● -sDEVICE=jpeg
JPEG 出力を指定。

● -dJPEGQ=95
JPEG 品質。
95 は「ほぼ可逆に近い最高品質」。
100 は逆にノイズが増えるので非推奨。

● -r600
600dpi でレンダリング。
300dpi → 印刷品質
600dpi → 文字・図形が非常にシャープ

● -dUseCIEColor / -dColorConversionStrategy=/sRGB
PDF の CMYK → RGB 変換を Ghostscript の CIEColor で高精度に行う。
色ズレを最小化するための必須設定。

● -dEmbedAllFonts=true
フォント埋め込みを強制。
PDF 内のフォントが不完全でも Ghostscript が補完して描画。

● -dDownScaleFactor=1
Ghostscript の内部ダウンサンプリングを無効化。
→ 画質劣化を完全に防ぐ。

● -sOutputFile=page-%03d.jpg
複数ページ PDF に対応。
page-001.jpg / page-002.jpg … のように出力。

上記は Web 用(RGB)。印刷用(CMYK)の場合は下記。

:~$ ghostscript \ -dNOPAUSE -dBATCH \ -sDEVICE=tiff32nc \ -r600 \ -dUseCIEColor \ -dColorConversionStrategy=/CMYK \ -dProcessColorModel=/DeviceCMYK \ -dEmbedAllFonts=true \ -dDownScaleFactor=1 \ -sOutputFile=page-%03d.tif \ input.pdf

● - tiff32nc
TIFF の 32bit CMYK(8bit × 4ch)。
印刷用途で最も安定し、可逆圧縮(LZW/ZIP)も適用可能。

● - 600dpi
印刷の標準は 300dpi ですが、
600dpi は文字・図形が極めてシャープ。

● - ColorConversionStrategy=/CMYK
出力色空間を CMYK に固定。
RGB PDF でも CMYK PDF でも、確実に CMYK で出力。

● - ProcessColorModel=/DeviceCMYK
Ghostscript の内部処理も CMYK に統一。
これがないと内部で RGB→CMYK→RGB→CMYK のような劣化が起きる。

● - UseCIEColor
CIE ベースの色変換で、CMYK→CMYK の色ズレを最小化。

● - EmbedAllFonts=true
フォントが壊れた PDF でも Ghostscript が補完して描画。

● - DownScaleFactor=1
内部ダウンサンプリングを完全無効化。
→ 画質劣化ゼロ。