iText(またはiTextSharp)は、これら5つの列の境界を指定でき、オーバーヘッド(つまり、各列のページのテキストを再解析する)を処理できる場合は、これを実行できます。
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回全体を解析できます。