質問

5列に配置されたこのPDFファイルがあります。

私はスタックオーバーフロー(およびグーグルで狂ったように)を見て、すべてのソリューションを試しました(Adobe Acrobat自体を試す最後の手段を含む)。

ただし、何らかの理由で、これらの5列をCSV/XLS形式で取得することはできません。配置する必要があるためです。通常、私がそれらをエクスポートすると、形式は恐ろしく、すべてのエントリはデータの損失とともに行ごとに配置されます。

http://www.2shared.com/document/page4a1t/ex1.html

上記のファイルの抜粋へのリンクは次のとおりですが、私は本当にイライラしており、オプションが不足しています。

役に立ちましたか?

解決

これらの5列の境界を与えることができ、オーバーヘッドを扱うことをいとわない場合、itext(またはitextsharp)はこれを行うことができます(つまり、各列のページのテキストを補償する)

Rectangle2D columnBoxArray[] = buildColumnBoxes();
ArrayList<String> columnTexts = new ArrayList<String>(columnBoxArray.length);
For (Rectangle2D columnBBox : columnBoxArray) {

  FilteredTextRenderListener textInRectStrategy = 
    new FilteredTextRenderListener(new LocationTextExtractionStrategy(), 
      new RegionTextRenderFilter( columnBBox ) );

  columnTexts.add(PdfTextExtractor.extractText( reader, pageNum, textInRectStrategy));
}

テキストの各行は、によって分離する必要があります \n, 、したがって、弦の解析の単純な問題になります。

各列のページ全体を補償したくない場合は、おそらくのカスタム実装を思いつくことができます FilteredTextRenderListener 複数のリスナー/フィルターペアが必要です。その後、各列に対して1回ではなく、すべてを1回で解析できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top