カテゴリー : 2013年 2月4日

PDFでの、文字の位置取得


独自のPDFライブラリ実装は、テキストの抽出は、ほぼ完了。

最後まで残っていたのが、XObjectからのテキスト取り出し。PDFにはXObjectってのがあって、そこに別のPDFストリームを入れる事ができる。CGPDFでXObjectにアクセスすると、CGPDFStream型で取得できる。でも、こっからテキストを抽出するには、スキャンする必要があって、それにはCGPDFContentStream型が必要。どうすりゃ変換できるんだー、とうんうんうなった結果、CGPDFContentStreamWithStreamという関数があることを発見。これで万事解決。

ここまできてやっと、縦書きだろうが、ToUnicodeマップがあろうがなかろうが、テキスト取り出せるようになった。

次。次はテキストの位置。これが分かれば、検索してハイライトさせることができる。

ってことで、テキストの位置を上書きさせたのが上の図。文字毎に矩形で囲んでみた。なんとなくはできているな。後は、細かい問題を詰めていけばいい。