我正在使用VFR阅读器来显示我的pdf。我需要在按钮点击时提取目录并在桌面视图中显示,然后在点击每个页面时应该指向相应的页面。
答案 0 :(得分:6)
解析PDF目录实际上并不是很难。您可以使用Apple的PDF" Voyeur"等工具。查看结构或类似Adobe Acrobat的预检浏览器:
你看到"大纲"是一个相当简单的树,可以使用各种CGPDF*
函数进行解析。这里的挑战是还要解析目标/操作类型。 PDF并没有让事情变得简单,也没有给你一个页码,相反,你通常会找到一个链接的命名目的地。这可以通过交叉引用另一个表来解决,最好在PDF规范中查找。这当然只是其中一个选项,它也可以是目的地之一的>从GoTo对命名操作(例如,下一页)到JavaScript(例如this.pageNum = x)的10种操作类型。在上图中,您会看到一个经典的GoTo动作,其中较长的字符串是命名引用。
还有一些其他特殊情况,特别是对于较旧的乳胶文档和PDF 1.1规范中的一些页面做了一些不同的事情,所以要小心实现PDF规范的所有角落案例,以免后来出现意外
大纲有时也包含URI动作,因此至少也要实现该类型。它们也可以有字体样式和颜色,所以你不会感到无聊。去过那里,在iOS和Android的商业PSPDFKit PDF SDK中完成。