提取pdf目录的方法

Posted 北冥鱼_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提取pdf目录的方法相关的知识,希望对你有一定的参考价值。

理论知识:http://stackoverflow.com/questions/4643489/how-do-i-retrieve-a-page-number-or-page-reference-for-an-outline-destination-in

原理就是:通过CGPDFDocumentGetCatalog方法可以获取pdf的元信息,这是一个类似Dictionary的结构,而目录信息就放在里面,需要自己解析出来。

在这里:https://github.com/below/PDF-Voyeur,有一个人写的开源项目,可以查看pdf的元信息,而我也是根据他的代码来找出pdf的目录的。

比如这本书:

用PDF-Voyeur打开之后看到的是这样的:

/Outlines这个节点代表的就是目录,点开Outlines之后会看到/First和/Last,这两个就是第一个和最后一个目录

而/First下面又包含/Next,所有的目录就像链表一样这样串联起来的。

在目录的节点下面可以看到title,就是目录的名字,但是要找到跳转的页数就不容易了。根据本文第一个链接里面的回答,目录索引的方式有3种(仅我所知道的,我相信肯定还有另外的方式):

  1. 用/Dest来索引,Dest是一个array,这时候/Dest下面第一个对象就是page的对象。跟节点下面的pages对象包含的就是所有的page对象,代表每一页,把/Dest下面的page跟所有的page对比,用==判断,就可以找出页码。需要注意的是pages有的时候下面不直接包含page对象,而是像子目录一样包含了很多层级,需要判断节点的type是pages还是page。

  2. 用/Dest索引,但是Dest是一个name,这时候需要在根节点下面的/Dests里面找到对应名字的节点,然后从里面找到page对象,再用类型1里面的方法来找到页数

  3. 用/A来索引,这种情况跟第一个类似,只要在/D下面找到page对象就好了


Voyeur程序下载:Voyeur。(打开没有主界面,需要从菜单File来打开一个pdf文件)

Demo:https://github.com/phaibin/PDFContents


原文链接:http://phaibin.tk/2012/01/06/ti-qu-pdfmu-lu-de-fang-fa



以上是关于提取pdf目录的方法的主要内容,如果未能解决你的问题,请参考以下文章

MAYA影视动漫高级模型制作全解析出_完整版PDF电子书下载 带索引书签目录高清版

提取pdf目录的方法

python 产生Bingo表格的程式,里面的数字是乱数,预设一页产生12个表格,结果会输出为PDF。参数是要产生的页数,输出档案会在当前目录下的bingo.pdf

使用Python自定义页数分割PDF文件

PDF.js 如何取到PDF的目录页码

[pdf转ppt免费不限页数]pdf转ppt免费不限页数如何转换?PDF转PPT的方法是什么?