提取目录条目和它们所链接的页码

2024-03-28 12:40:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

entry1  PageNumberEntry1LinkedTo
entry2  PageNumberEntry2LinkedTo
...

例如

^{pr2}$

(如果能根据目录表的结构在某种树型数据结构中提取出来,那就更好了,但如果不可能,可以跳过。)

我想得到一些关于什么Python或Java模块和函数可以用来实现这一点的帮助?例如Python中的PDFMiner或pypdf2,IPython或Java中的iText。。。?在


Tags: 文件目录语言pdf链接编程条目页面
1条回答
网友
1楼 · 发布于 2024-03-28 12:40:31

我检查了你的档案,看起来很奇怪。在

请参见以下屏幕截图:

enter image description here

我使用iText RUPS查看页树的根。你可能知道PDF格式的页面不知道它的页码。页面的页码由页面在页面树中的位置决定。在

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

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

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

但是,这不可能是对的,对吧?第2页只是包含了目录的另一部分,所以我不认为链接是正确的。在

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

长话短说:

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

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

你的问题是一个需要几天工作的项目。如果你想要一个有效的例子,考虑到你要求人们贡献的时间不仅仅是几个小时。在

相关问题 更多 >