我有a PDF file,它包含一个目录,其中每个条目链接到文件中的一个页面。在
我该如何用Python或Java(或其他一些语言)编程来提取以下形式的目录:
entry1 PageNumberEntry1LinkedTo
entry2 PageNumberEntry2LinkedTo
...
例如
^{pr2}$(如果能根据目录表的结构在某种树型数据结构中提取出来,那就更好了,但如果不可能,可以跳过。)
我想得到一些关于什么Python或Java模块和函数可以用来实现这一点的帮助?例如Python中的PDFMiner或pypdf2,IPython或Java中的iText。。。?在
我检查了你的档案,看起来很奇怪。在
请参见以下屏幕截图:
我使用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]
内的文本。这并非不可能,但也并非总是小事。在你的问题是一个需要几天工作的项目。如果你想要一个有效的例子,考虑到你要求人们贡献的时间不仅仅是几个小时。在
相关问题 更多 >
编程相关推荐