0

我有这个 PDF 文件,它分为 5 列。

我查看并查看了 Stack Overflow(并疯狂地用 Google 搜索)并尝试了所有解决方案(包括尝试 Adob​​e Acrobat 本身的最后手段)。

但是,由于某种原因,我无法获得 csv/xls 格式的这 5 列 - 因为我需要对它们进行排列。通常当我导出它们时,格式很糟糕,所有条目都是逐行排列的,有一些数据丢失。

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

这是上面文件摘录的链接,但我真的很沮丧并且没有选择。

4

1 回答 1

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

于 2011-03-21T19:47:11.460 回答