gpt4 book ai didi

java - 提取目录条目及其链接到的页码

转载 作者:行者123 更新时间:2023-11-30 08:16:55 25 4
gpt4 key购买 nike

我有a PDF file ,其中包含一个目录,其中每个条目都链接到文件中的一个页面。

我该如何用Python或Java(或其他一些语言)编程来提取以下形式的目录:

entry1  PageNumberEntry1LinkedTo
entry2 PageNumberEntry2LinkedTo
...

例如

Section 2.6. Argument Arrays  2
Section 2.7. Thread-Safe Functions 2

(如果能按照目录结构提取到某种树形数据结构中那就更好了,如果不可能的话可以跳过。)

我想获得一些关于可以使用哪些 Python 或 Java 模块和函数来完成此任务的帮助?例如Python中的PDFMiner或pypdf2,IPython或Java中的iText,...?

最佳答案

我检查了你的文件,它看起来很奇怪。

请参阅以下屏幕截图:

enter image description here

我用了iText RUPS查看页面树的根。您可能知道 PDF 中的页面不知道其页码。页面的页码由页面在页面树中的位置决定。

在屏幕截图中,您可以看到第 1 页的页面字典(对象 3)的一部分(它是第 1 页,因为 3 0 R/Kids 数组中的第一个元素)。

我已经打开带有注释的数组,我看到一个带有 /GoTo 的链接注释行动。此操作告诉 PDF 查看器跳转到页面字典为对象号 58 的页面。

当我们检查页面树(实际上只不过是没有任何叶子的单个分支)时,我们看到 58 0 R指页面 2(页面树中的第二项)。

但是,这不可能是正确的,不是吗?第 2 页仅包含目录的另一部分,因此我认为这些链接不正确。

看起来好像您是基于网页创建的 PDF,因为我看到 /PA引用 HTML 页面的条目。

长话短说:

您需要循环遍历每个页面中的所有注释并查找 /Link注释。然后,您必须检查操作的值 ( /A )。这将为您提供您正在查找的页面的对象 ID。

至于文本:显然,文本不存储在注释中。对于屏幕截图中显示的链接,您必须搜索矩形内的文本 [107.2 754.3 235.6 763.6] 。这并非不可能,但并不总是微不足道的。

您的问题是一个需要几天工作的项目。如果您想要一个可行的示例,请考虑到您要求人们贡献的不仅仅是几个小时的时间。

关于java - 提取目录条目及其链接到的页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com