我有这个PDF文件,排列在5列。
我看了看Stack Overflow(并疯狂地搜索)并尝试了所有解决方案(包括尝试Adobe Acrobat本身的最后手段)。
然而,出于某种原因,我无法以csv / xls格式获得这5列 - 因为我需要它们安排。通常当我导出它们时,格式很糟糕,并且所有条目都是逐行排列的,但有一些数据丢失。
http://www.2shared.com/document/PagE4A1T/ex1.html
以上链接指向上述文件的摘录,但我真的感到沮丧,而且选项用完了。
答案 0 :(得分:1)
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
的自定义实现,它将需要多个侦听器/过滤器对。然后,您可以为每个列解析整个事物而不是一次。