2012-03-01 9 views
0

私は次の形式のpdfファイルを持っています。itextsharpのテキスト抽出で水平スペースを保存する方法

texthere \ T \ T texthere \ T \ T \ ttexthere texthere \ T \ S \トンtexthere \ S \ S \ S \トンtexthere

\ sの空間\ tのだった - horozontalタブ。 しかし、itextsharp simpleextractionstrategyを適用してテキストを抽出すると、以下のテキストが得られます。

texthere texthere texthere texthere texthere texthere

それは関係なく、水平スペースがあるどのくらいの時間がちょうど単一のスペースに置き換えることが表示されます。 itextsharpの実際の長いスペースを維持する方法はありますか?

答えて

0

これは、PDFが構造化テキスト形式ではないためです。レンダリングされたPDF内の通常の段落テキストのように見えるものは、数百の小さなテキストチャンクで構成されている可能性があります。必ずしもページ上に表示される論理的な順序ではありません。文字と単語の間隔、水平方向のスケーリング、フォントサイズなどを含む多くの要素が、テキストチャンクがDRAWNになる場所を総称して決定します。

SimpleTextExtractionStrategyクラスとその姉妹LocationTextExtractionStrategyクラスは、これらのテキストチャンクのX、Y位置を比較して、他のチャンクの前後に来るかどうかを決定し、それに応じて出力文字列に追加するかどうかを決定します。彼らは、2つのチャンクの間にある水平スペースの量を処理しません。

注意! PDFを適切に構造化されたテキストに変換することは想像以上に複雑かもしれませんが、興味があれば、LocationTextExtractionStrategyを修正したり、独自の戦略を書いたり、テキストチャンクを比較したり、最後のチャンクの終わりと現在のチャンクの開始点との間の水平距離に基づく出力文字列。前にも述べたように、これはかなり複雑になることがありますが、これは出発点になるはずです。

シュチャヤット

関連する問題