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
, которая бы принимала несколько пар слушатель / фильтр. Затем вы можете проанализировать все это один раз, а не один раз для каждого столбца.