理论知识: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目录的方法相关推荐

  1. python自动化提取pdf表格_[Python] 自动化办公 多种提取PDF图片的方法

    转载请注明:陈熹 chenx6542@foxmail.com (简书号:半为花间酒) 若公众号内转载请联系公众号:早起Python 这篇文章能学到的主要内容: 基于 fitz 库和正则搜索提取图片 基 ...

  2. 三种方法,用Python轻松提取PDF中的全部图片

    作者 | 陈熹.刘早起 来源 | 早起Python 头图 | 下载于视觉中国 有时我们需要将一份或者多份PDF文件中的图片提取出来,如果采取在线的网站实现的话又担心图片泄漏,手动操作又觉得麻烦,其实用 ...

  3. 三种方法,Python轻松提取PDF中全部图片

    有时我们需要将一份或者多份PDF文件中的图片提取出来,如果采取在线的网站实现的话又担心图片泄漏,手动操作又觉得麻烦,其实用Python也可以轻松搞定! 今天就跟大家系统分享几种Python提取 PDF ...

  4. PDFBox提取PDF信息

    PDFBox提取PDF信息 gitee https://gitee.com/Grantr/the-encapsulation-of-pdfbox github https://github.com/G ...

  5. 实用脚本!Python 提取 PDF 指定内容生成新文件!

    很多时候,我们并不会预知希望提取的页号,而是希望将包含指定内容的页面提取合并为新PDF,本文就以两个真实需求为例进行讲解. 01 需求描述 数据是一份有286页的上市公司公开年报PDF,大致如下 现在 ...

  6. 超级实用案例,Python 提取 PDF 指定内容生成新PDF

    很多时候,我们并不会预知希望提取的页号,而是希望将包含指定内容的页面提取合并为新PDF,本文就以两个真实需求为例进行讲解. [注]资料.代码.技术交流,文末获取 01 需求描述 数据是一份有286页的 ...

  7. PDF文件页面可以怎么提取 PDF页面提取方法

    说起PDF格式我们大概都知道,它作为我们常用的文档格式之一.我们平常将一些重要的文件保存为PDF的格式,但有时候我们对PDF文件里的页面进行提取这可能大部分人都不会,在这里我教给大家一个提取PDF文件 ...

  8. python tabula 使用方法_Python使用Tabula提取PDF表格数据

    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer.pdf2htmlEX 和 Tabula.综合考虑后,选择了 ...

  9. 3个方法提取PDF文件里的图片

    PDF文件可以保护文档内容不容易被更改,但也因为这样,有一些需求无法进行操作.比如PDF文件里的图片,不能通过另存为保存下来. 那如果想要提取PDF文件里的图片要如何操作呢?下面分享三个方法给大家. ...

  10. 提取pdf文件中文字的两种方法

    如今,在我们的工作与学习中已经不是单单使用word.Excel等格式文件了,pdf格式的文件已经被广泛地运用到我们的办公室中.大家都知道pdf文件是不可直接编辑与修改的,使用起来有些不便.那么当我们需 ...

最新文章

  1. AI手语主播通过朱广权魔鬼面试,残影级手速无惧贯口,今已正式上岗助力冰雪盛会...
  2. 华为云发布全新DevOps实践,大幅提升交付效率
  3. 北大核刊最新版2020目录_最新版CSSCI来源期刊目录及增减变化!
  4. Java代码中常见技术债务处理之Exception
  5. 反射_Class对象功能_获取Method
  6. 在gitee上创建自己的仓库步骤
  7. java编程思想怎么样_读完java编程思想后的思考?
  8. 运算符重载——关系运算符重载
  9. 小程序优化的20中策略
  10. mybatis map里面传对象_关于 MyBatis,我死磕了 10 种超好用的写法
  11. 解析字符串获取路径_node学习--path 路径模块
  12. Eclipse 下用Maven构建ssh框架web工程
  13. 华为手机一直android,华为手机内存不够用?这5个文件夹常清理,可以腾出近10个G内存...
  14. python求平面n个两两间距离_任意两平面求夹角|Python练习系列[11]
  15. 假如现在你有30分钟,你会做什么?
  16. 每天五分钟机器学习:如何计算模型的假阳性率和真阳性率?
  17. Python-玩转数据-python网络编程
  18. 北京新生儿医保办理指南
  19. Arduino I2C任意更换SDA SCL GPIO引脚
  20. 新概念2 课文和单词(9)

热门文章

  1. 湖南计算机考试题库,湖南省计算机等级考试编程题题库之十六
  2. 基于标准的多媒体视频对讲系统
  3. Less入门以及一些前端面试题
  4. 李忠汇编语言-初学-第九章详解
  5. 由iconfont引起的svg、ttf、woff、woff2图标的研究及转换(svgs2fonts)
  6. win10重置网络命令_重置网络:Win10重置网络的技巧
  7. Antd 表格样式修改
  8. 计算机无法安装hp网络打印机,hp打印机驱动安装失败怎么办 hp打印机驱动安装失败的解决办法...
  9. Vue中Swiper以及vue-awesome-swiper的安装和问题
  10. mysql查询时 全外連接_MySQL数据库左外连接、右外连接、全外连接