まずはラスタ画像を抜き出す。注意したいのはベクタ画像は出力されないこと。また、ラスタの上に描かれたベクタ情報例えば矢印や、目盛などの情報は落ちるということ。ただし、逆を考えれば余分なベクタ情報を排除して取り出すことができるってこと。
$ pdfimages ../hoge.pdf hoge $ ls hoge-000.ppm hoge-001.ppm hoge-002.ppm hoge-003.ppm
-fと-lで抽出するページの開始位置と終了位置を指定する出来る。ただし、同じファイル名がある場合は強制的に上書き。
$ pdfimages -f 95 -l 96 ../hoge.pdf hoge
このままだとファイルサイズが大きいのでpngに変換。
$ mogrify -format png hoge-00* $ ls hoge-000.ppm hoge-001.ppm hoge-002.ppm hoge-003.ppm hoge-000.png hoge-001.png hoge-002.png hoge-003.png
出力された画像をチェックする。欲しい画像が無ければ、今度はベクタ画像を取り出しにかかる。ベクタ画像は例えばグラフとか。pdfはinkscapeで編集できる。inkscapeで本文やキャプションなどのいらない部分を削除していく。例えば、figureの(a)等引用するときには不要な記号はfigureと一緒にグループ化されている場合があるので、その場合はグループ化を解除する。また、不透明度の設定はEPSにしたときに上手く働かないようなのでそのような指定になってしまった場合は表現を変える。保存前に「ページ選択をオブジェクトにフィット」して、epsで保存する。
$ inkscape ../hoge.pdf
pdfファイルが大きい場合はpdftk の burst オプションで1つのpdfファイルを1ページごとに分割したほうがいいかもしれない。できたファイルは同様にinkscapeで編集できる。
$ pdftk ../hoge.pdf burst $ ls hoge-000.ppm hoge-001.ppm hoge-002.ppm hoge-003.ppm hoge-000.png hoge-001.png hoge-002.png hoge-003.png pg_0001.pdf pg_0002.pdf pg_0003.pdf pg_0004.pdf pg_0005.pdf
分割されたpdfファイルの欲しいページをpdftopsでpsに変換することもできる。pdfからpsに変換するプログラムはpdftopsのほかにpdf2psもある。しかし、pdf2psを使うと色々と余分な処理を行っているようだ。時間がかかる上に、できたファイルサイズが大きくなるし、編集がしにくい。
$ pdftops pg_0002.pdf pg_0002.ps