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
该实现需要多个侦听器/过滤器对。然后,您可以解析整个内容一次,而不是为每一列解析一次。