2015-12-03T20:37:01+09:00

eps ファイル(ビットマップデータ)をバッチ処理で pdf に変換するのに苦労した

eps ファイルをビットマップデータが含まれているとします。その eps ファイルを、いちいち解像度を指定すること無くビードマップデータをダウンサンプリングしてしまうことなく、pdf に変換するよい方法がなかなかみつからなかった。

結局、

ps2pdf -dEPSCrop filename.eps filename.pdf

というコマンドに行き着いた。ちなみに、ps2pdf というコマンドは ghostscript に付属している。fink とか MacPorts を使って導入するのが良いでしょう。

pstopdf コマンドを使えば良いと、皆さん思うかもしれない。でも、pstopdf で生成した pdf は画像を圧縮してくれないみたい。OS X 10.8 を使っているけど、あたらしい OS X なら圧縮してくれたりするのだろうか?

次に検討したのが、ImageMagick の convert コマンド。でも、これは解像度を指定する必要がある。eps ファイルの中のビッドマップデータの解像度なんて、どうやって取得しらいいかわかんねーよ。

そして ps2pdf を使えば、とりあえずちゃんと画像が圧縮されて画像のリサンプリングも行われることなく、pdf に変換できたけど、ページサイズが A4 になって広大は余白が追加されちゃうじゃない。pdfcrop コマンドを組み合わせようと思ったけど、-dEPSCrop というオプションがあることに気づいた。

複数ファイルの一括変換は、

find . -name "*.eps"print0 | xargs -0 -I{} ps2pdf -dEPSCrop {}

といったところか。

めでたし、めでたし。