PDFとの格闘

Extract images using iTextSharp - Stack Overflow」を参考にしてPDFからの画像抽出で試行錯誤してた。


上のサイトと「PDFsharp Sample: Export Images」を参考にして、白黒画像が埋め込まれたPDFからその画像を抜き出そうとした。(FlateEncode方式)
元画像はこれ。


白と黒のグラデーション画像を自作の2値化プログラムでモノクロにしたもの。

そして、参考サイトのコードによる結果がこれ


うーむw どうやら斜めにずれちゃってるみたいです。それも画像の幅がある条件を満たすと斜めにはならず、ある場合にこうなってしまうみたい…

いろいろ調べたけれどなかなか原因が分からず…


参考サイトのコードはPDFから得られるバイト列をそのままBMP化させるのだが、それで斜めになってしまうということは、一行の長さが違うのかも!!もうちょっと詳しく書くとPDF中の画像データは1行が (Width + 7)/8 byteの単位で並べられているのに対して、BMPはデータの最小単位が4バイト単位で一行のバイト数が少しずれており、全体的に少しずつずれていってしまっていたようだ。


しかしまだ問題は山積みで、白黒じゃない256色の画像データでやると、今度は斜めかつ色が変なものが得られる…斜め現象はモノクロのと似たようなことをして解決したが、パレットの問題はどうすれば良いか分からない。

他の問題は16色の画像をどうするか、CCITTFaxという方法でエンコードされた画像をどう取り出すか?などなど…

自分で作るのは難しいです…


ちなみにiTextSharpではなくPDFSharpを使ってます

  • Source:005.zip
    • FlateEncodeの斜め問題と色問題は確認できる範囲では解決している。あとはCCITTFax…