【问题标题】:Extract TOC of PDF?提取 PDF 的目录?
【发布时间】:2023-04-02 01:24:01
【问题描述】:

我在 SWFTools 和 XPDF 的帮助下将 pdf 提取到图像/swf 和文本中。我在 PDF 脚本中运行这些。

但现在我想更进一步,尝试从 PDF 中获取 TOC 是否可以提取此信息?

【问题讨论】:

  • 如果您想使用 3rd 方应用程序执行此操作,那么我可以推荐 Debenu PDF Aerialist,它具有“目录”的导出功能。

标签: php pdf xpdf


【解决方案1】:

我认为查看PHP's PDFLib 将是一个很好的起点。如果向下滚动,您将看到大量用户发布的将 PDF 转换为 HTML 或 PDF 转换为文本的解决方案。转换后,一个相对简单的匹配函数可以提取标记的 TOC 项目并将它们放入一个数组中,然后您可以随意操作。

This StackOverflow post还有更多的解决方案。

希望这会有所帮助。

【讨论】:

  • 我已经在使用 XPDF pdf2txt...但是你会如何匹配这个? ToC 通常是手工创建的.. 信息需要在 pdf 中的某个地方.. (因为他们可以有侧面板)
  • TOC 应该只有在人们没有必要的专业工具来自动创建时才能手动创建。如果自动完成,目录中的项目将被标记为书签(我认为这就是您所说的“侧面板”)并链接到它们的页面,因此更容易匹配。如果它们是手工完成的,那么它们与该 PDF 中的任何其他文本块没有什么不同,并且让脚本成功匹配它们几乎是不可能的。
【解决方案2】:

我通过一些搜索找到了这个。看起来很有希望。

PDFMiner:http://www.unixuser.org/~euske/python/pdfminer/index.html

注意:该工具是基于 Python 的,但您应该能够通过 shell 访问来使用该工具。或者,您可以从源代码本身收集一些有用的信息,因为该项目是开源的。

来自网站:

dumppdf.py

dumppdf.py 以伪 XML 格式转储 PDF 文件的内部内容。该程序主要用于调试目的,但也可以提取一些有意义的内容(例如图像)。

示例:

$ dumppdf.py -a foo.pdf
(dump all the headers and contents, except stream objects)

$ dumppdf.py -T foo.pdf
(dump the table of contents)

$ dumppdf.py -r -i6 foo.pdf > pic.jpeg
(extract a JPEG image)

【讨论】:

  • 经过进一步调查,我自己可以找到一些对这个工具非常有用的应用程序! +1 Yusuke Shinyama 和 PDFMiner 团队的其他成员!
  • 谢谢,我会看看..但它是否也会在 XML 中生成 TOC.. 现在我正在使用 XPDF 和 PDF2SWF 来获取内容:) 但是 TOC 没有选项
  • 我想我不确定你在问什么。第二个“示例”行声称专门将 TOC 转储到 XML 文件,您可以以任何适合您的方式对其进行解析。我自己没有使用过这个工具,听起来它可以完成你想做的事情。
  • Ahhh thx 抱歉我错过了 ^^ 我会试一试或者 mupdf
  • dumppdf -T file.pdf | grep \<outline 提供了一个很好读的目录。 (dumppdf -T file.pdf | grep -E '\<outline|pageno' 也给出了页码)
【解决方案3】:

或者,您可以使用MuPDF,它是一个非常轻量级但完整的 PDF 实现,用 C 语言编写。在apps/ 子目录中,您会找到一些可以查看、转储和提取 PDF 文件信息的工具。我更喜欢 MuPDF 而不是 xpdf,因为它得到积极维护并且有更好的 PDF 支持。

否则,总是有 Poppler 实际上基于 xpdf。开发人员将其代码移植到 C++。因此,它的性能比其前身差。与 MuPDF 相比,Poppler 似乎功能稍多一些,但反过来代码要复杂得多。

不过,出于您的目的,MuPDF 应该就足够了。您可以根据apps/ 中提供的示例代码编写一个简单的应用程序,它可以提取您需要的所有信息,而无需依赖外部应用程序。

【讨论】:

    【解决方案4】:

    我尝试了dump.pdf -T,但它不适用于某些 PDF 文件。

    我刚刚找到了来自 MuPDF 的另一个名为 mutool 的工具。我不知道这是否比 dump.pdf 更好,但处理 PDF 文件 dump.pdf 会引发错误。

    以下是使用 mutool 提取 TOC 的方法

    mutool show {your-pdf-file} outline

    MuPDF

    【讨论】:

    • 很棒的方法(比dumppdf更容易可视化),它还在末尾显示页码,锚点位置在X和Y坐标中(格式“#PAGE,X,Y”,其中X 和 Y 是距左上角的距离,在 UserUnit 中,默认等于 1/72inchs=2.54/72cm,但可以更改)。第 19 页中的内容示例:+ "The name of the section" #19,135,421
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 2016-01-03
    相关资源
    最近更新 更多