私はNed Batchelder's python codeを使ってC++に変換し、pdfファイルからjpgを抽出しました。 Tiffファイルを抽出するために同じテクニックを使うことができるかどうか、そしてもしそうなら、それを見つけるために適切なオフセットとマーカを知っている人はいますか? ありがとう、 David外部ライブラリなしでPDFからtiffファイルを抽出することは可能ですか?
答えて
PDFファイルはほとんどの場合、データをリッピングすることができるので、実際のJPEGS(DCTおよびJPXエンコーディング)として保存されます。 Tiffsでは、CCITTデータを探しています(ただし、Tiffにするにはデータにヘッダーを追加する必要があります)。私は、役に立つかもしれないhttp://www.jpedal.org/PDFblog/2010/09/understanding-the-pdf-file-format-images/とhttp://www.jpedal.org/PDFblog/2011/07/extract-raw-jpeg-images-from-a-pdf-file/にPDFファイルの画像に関する2つのブログ記事を書いた。
PDFファイルには異なる画像データが含まれている可能性があります(驚くことではありません)。
最も一般的なケースは、次のとおり
- FAXデータ(CCITTグループ3及び4)復号化パラメータとオプションパレット全てデフレート又はLZW圧縮で圧縮
- JPEGデータ と
- 生ラスタデータ
最近、私は(PDFライブラリの開発者として)、JBIG2イメージデータを使ってますます多くのPDFに注目し始めました。また、JPEG2000をPDFに入れることもあります。
私はあなたがおそらく外部ライブラリなし*.jpeg
/*.jp2
/*.jpx
ファイルを対応するにJPEG/JBIG2/JPEG2000データを抽出することができますが、壊れた発電機から放出された奇妙なPDFファイルのすべての種類のために準備されることを、言うべき。また、PDFではオブジェクトストリームが頻繁に使用されるため、PDF用の洗練されたパーサーを実装する必要があります。
ファックスデータ(つまり、おそらくTIFFと呼ばれるもの)は、有効なTIFFにパックされている必要があります。たとえば、オープンソースのlibtiffからそのコードを借りることができます。
生ラスタデータが表示されます。私はライブラリの助けなしにそのようなデータを抽出しようとするのは理にかなっているとは思わない。もちろん、そうすることもできますが、数カ月の作業が必要です。
同じジェネレータで作成された一連のPDFから特定の種類の画像データのみを抽出しようとすると、あなたの仕事はおそらく実行可能です。それ以外の場合は、時間、お金、髪の毛を節約し、タスクのためにライブラリを使用することをお勧めします。
私は多くの場合ライブラリを使用したいと思いますが、WindowsとMacの両方で動作する合理的な価格のロイヤリティフリーのライブラリを見つけることができませんでした。 – David
ありがとう、マーク---私はそれらの記事を見ました---私はPythonのjpgの例で見つけたように、単純な例で既に誰かが頑張っていたことを期待していました。 – David