2017-05-17 10 views
0

itextsharp(バージョン:5.5.1.0)を使用してpdfファイルを解析しようとしています。 pdfファイルのcontent-typeは "application/octet-stream"です。私は「代わりのような不完全な言葉を得る私はRenderInfo.GetText(それを読んで):私は、PDFファイルの画像をiText PDF PArserはオクテットストリームでデータ全体を解析しません

Pdf file image

場所戦略に基づいて読み取るために問題を
base.RenderText(renderInfo); 

//Get the bounding box for the chunk of text 
var bottomLeft = renderInfo.GetDescentLine().GetStartPoint(); 
var topRight = renderInfo.GetAscentLine().GetEndPoint(); 

//Create a rectangle from it 
var rect = new Rectangle(
    bottomLeft[Vector.I1], 
    bottomLeft[Vector.I2], 
    topRight[Vector.I1], 
    topRight[Vector.I2]); 
var word = renderInfo.GetText().Trim(); 

// get column no 
var position = (int)rect.Left; 

をC#コードを使用しています毎日 "次のループで" Dai "と" ly "を取得します。私が一言一言一言読むことができる方法はありますか?

詳細情報が必要な場合は教えてください。残念ながら、ここにPDFファイルを添付するオプションはありません。よろしく プラディープ・ジェイン

答えて

0

は、私が代わりに次のループで「毎日」私が手に「大」と「LY」のように不完全な単語を取得する()RenderInfo.GetTextそれを読んだとき。

その動作が必要です。

レンダリングリスナー/テキスト抽出戦略では、テキスト描画命令の個々のアトミック文字列パラメータを取得します。 PDF作成ソフトウェアが単語をこれらの文字列に入れる必要はありません。

実際には、PDF形式でもこのような単語の分割が奨励されます。フォント自体のカーニング情報を使用するのではなく、したがって、カーニング付きのテキスト出力を作成するすべてのソフトウェアでは、カーニングが再生される場所で文字列を分割し、テキスト挿入命令で文字列部分の間にテキスト挿入ポイントをスライディングする必要があります。

したがって、レンダーリスナーは、文字列全体を取得する前に、文字列を集めて接着する必要があります。

私は一言一言を読むことができますか?

はい、文字列を収集して一緒に貼り付けることで可能です。

あなたは場所戦略をもとに、あなたに読み取りを述べた - そしてLocationTextExtractionStrategy自体が何をするかを詳しく見て:そのRenderText実装では、いくつかの座標を持つテキスト片を収集し、のみこれらすべての作品を収集した後、それはそれらをソートし、それらを一緒にそのGetResultantText方法で接着する。コードhereを見つけることができます。

残念ながら、この戦略の多くのメンバーは派生クラスですぐに利用できません。リフレクションに頼るか、単にクラスコード全体をコピーしてインサイチュで変更する必要があります。

+0

返信いただきありがとうございます。私は最初にcsvに変換してからcsvファイルを読むという別のオプションを選択する必要がありました。私はあなたの選択肢を調べて、私が言葉全体の単語を得るかどうかを見ます。 –

関連する問題