PDFからJPEGを抽出する

PDF

電子書籍の自炊を初めた当初はPDF形式で自炊していました。

PDFであればパソコンでもタブレットでも読めて便利だろうと思ったからです。

ところが自炊したPDFがどんどん増えてパソコンに入らなくなっため、オンラインストレージに自炊本をおいています

そこでPDFはストリーミングに不向きで、自炊本をストリーミングで読むためにはスキャンしたJPEGファイルをZIPでまとめたCBZ形式が最適なことがわかりました。

PDFからJPEGへ「変換」ではダメ

PDFをJPEGに「変換」する方法はMacでもWindowsでもいろいろ存在します。

Macの場合は標準アプリのAutomatorに「PDFをイメージとしてレンダリング」というアクションを使うとPDFファイルをJPEGに「変換」できます。

このアクションを使ってPDFをJPEGを「変換」してみたのですが、変換されたJPEGファイルの解像度がスキャン時に設定した解像度と違っていることに気が付きました。

自炊したPDFの各ページはJPEGのはずです。

そしてそのJPEGはスキャナが出力したイメージそのままのはずです。

それなのに何故、スキャナが出力したJPEGと違うものになるのでしょうか???

PDFから変換されたJPEGは劣化している

よくよく考えてみるとPDFからJPEGへの「変換」では自炊PDFのような全ページがJPEGで構成されるPDFでなく、文字で構成されたPDFからもJPEGが得られます。

なぜかというとPDF中の文字を「一定の解像度で描画」した結果をJPEGにしているから・・・。

たとえJPEGだけで構成されたページであっても「一定の解像度で描画」した結果がJPEGになります。

ページ内のJPEGを一定の解像度で描画するためには少なくとも拡大縮小の処理は必須なうえ、色の調整等もされているかもしれません。

これではページ内のJPEGがそのまま得られるわけはなく、変換されたJPEGは描画の過程で劣化しています。

せっかく苦労して自炊した本をこんな方法で劣化させてはダメです。

PDFからJPEGを「抽出」する

必要なのは自炊PDFをJPEGに「変換」することではなく、自炊PDFの各ページに格納されているJPEGを「抽出」することでした。

XPdfというソフトにPDFに含まれる画像を抽出するためのpdfimagesコマンドがあります。

自炊PDFは全ページがJPEGで構成されているため、以下のようにpdfimagesを実行することで各ページに含まれるJPEGを抽出することができます。

$ pdfimages -j PDFファイル名 JPEGファイル名プリフィックス

XPdfはMacでもWindowsでも使えます。