C++ に変換したNed Batchelder の python コードを使用して、pdf ファイルから jpg を抽出することができました。同じ手法を使用して tiff ファイルを抽出できるかどうか疑問に思っています。もしそうなら、それらを見つけるための適切なオフセットとマーカーを知っている人はいますか? ありがとう、デビッド
2 に答える
PDF ファイルには、異なる画像データが含まれている場合があります (驚くことではありません)。
最も一般的なケースは次のとおりです。
- ファックス データ (CCITT グループ 3 および 4)
- Deflate または LZW 圧縮ですべて圧縮されたデコード パラメータとオプションのパレットを含む生のラスタ データ
- JPEGデータ
最近、私 (PDF ライブラリの開発者) は、JBIG2 画像データを含む PDF がますます増えていることに気付き始めました。また、JPEG2000 を PDF に変換できる場合もあります。
*.jpeg
おそらく外部ライブラリなしで JPEG/JBIG2 / JPEG2000 データを対応する // ファイルに抽出できます*.jp2
が*.jpx
、破損したジェネレーターによって生成されるあらゆる種類の奇妙な PDF に備える必要があります。また、PDF はオブジェクト ストリームを頻繁に使用するため、PDF 用の高度なパーサーを実装する必要があります。
Fax データ (つまり、おそらく TIFF と呼ぶもの) は、少なくとも有効な TIFF にパックする必要があります。たとえば、オープンソースのlibtiffからコードを借りることができます。
そして、生のラスター データが続きます。ライブラリの助けを借りずにそのようなデータを抽出しようとするのは意味がないと思います。もちろんそれもできますが、数か月の作業が必要です。
したがって、すべて同じジェネレーターで作成された一連の PDF から特定の種類の画像データのみを抽出しようとしている場合、そのタスクはおそらく実行可能です。それ以外の場合は、時間、お金、髪を節約し、タスクにライブラリを使用することをお勧めします。
PDF ファイルは Jpeg を実際の JPEG (DCT および JPX エンコーディング) として保存するため、ほとんどの場合、データを取り出すことができます。Tiff を使用すると、CCITT データを探します (ただし、データを Tiff にするには、データにヘッダーを追加する必要があります)。http://www.jpedal.org/PDFblog/2010/09/understanding-the-pdf-file-format-images/とhttp://www.jpedal.org/で、PDF ファイルの画像に関する 2 つのブログ記事を書きました。 PDFblog/2011/07/extract-raw-jpeg-images-from-a-pdf-file/これは役立つかもしれません。