【问题标题】:Converting a PDF file to a nice table将 PDF 文件转换为漂亮的表格
【发布时间】:2011-03-21 12:23:20
【问题描述】:

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

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

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

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

这里是上面文件摘录的链接,但我真的很沮丧,我已经没有选择了。

【问题讨论】:

  • 欢迎使用 stackoverflow。你想用什么语言来做这个?
  • 您找到解决方案了吗?是否可以提供整个文件的链接,因为我编写了一个应该能够处理它的工具,并且有兴趣将它用作我的软件的测试。我很高兴将生成的 CSV 文件发送给您。

标签: pdf text pdf-scraping


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

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2022-12-05
    • 2021-05-20
    相关资源
    最近更新 更多