0

我正在使用 VFR 阅读器来显示我的 pdf。我需要在单击按钮时提取目录并将其显示在表格视图中,然后在点击每个页面时它应该指向相应的页面。我为此搜索并获得了这些链接

  1. 从 pdf 文件创建目录
  2. http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-adding-a-table-of-contents-to-an-ipad-reader/

我开始知道,要获得 TOC,我们必须使用“CGPDFDocumentGetCatalog(pdf doc)”。但在我的读者中,“CGPDFDocumentGetCatalog(pdf doc)”根本没有被调用。现在如何从我的 pdf 文件中提取我的目录?请帮我解决这个问题。我为此苦苦挣扎了一周。提前致谢。

4

1 回答 1

0

不幸的是,我认为您提到的两个答案指向不同的实施策略,它们都可能有效但不同。

第一个问题是您拥有并希望在应用中显示的 PDF 文件是什么样的。PDF 文件中没有预定义的 TOC 对象,只有不同的方法可以模拟它。最常见的两种方式是:

A) 书签,这是一种将小段文本添加到结构化树中的方法,其中每段文本都指向 PDF 文件中的特定位置。这些书签可以在设计应用程序中或以后添加(有特定的工具可以这样做),它们可以实现任何结构。

B) 您的 PDF 文件可能包含看起来像是书籍中经典目录的内容,基本上只是开始页面上的文本,还可以选择带有指向书中特定位置的超链接。

您引用的第二个链接显示了如何创建可以在其中显示 TOC 的用户界面。剩下的问题是确定要在 TOC 窗口中显示的项目。在您指向的第二个链接中,提出的解决方案是提供特定于一本特定书籍的硬编码项目。当然,当您只想显示任何书籍时,这种方法并不是很有用。

因此,您剩下的问题是如何确定要显示的项目以及它们链接到的位置。

如果您考虑我上面的可能性 A):带有书签的 PDF 文件,答案可能相对简单。您指向的答案 1 解释了如何查看 PDF 文件中的不同结构 - 书签就是这样的结构(在 PDF 规范的第 12.3 节中定义:http: //www.adobe.com/content/dam/Adobe/ zh/devnet/acrobat/pdfs/PDF32000_2008.pdf

这意味着您可以使用此处显示的技术来遍历 PDF 文件中的不同对象,并找到每个书签。书签将为您提供要显示的文本以及单击时文本应跳转到的 PDF 文件中的实际位置。

如果您考虑我上面的可能性 B):没有书签但经典 TOC 的 PDF 文件,这将更难解决。这样的目录只是一个或多个页面上的简单文本,可选地带有超链接。当然,您可以尝试查找这些页面上的所有文本(如果您可以找出目录开始和结束的页面),但您还必须找出该项目链接到的位置。如果不涉及超链接,那将是一项艰巨的任务。

所以你的第一个问题应该是你想解决这个问题的通用性。您知道要显示哪些 PDF 文件吗?您可以自己为这些文件设计一个 TOC(如您的解决方案 2 中所示)吗?如果没有,您能确定所有 PDF 文件都包含书签吗?这些问题的答案将在很大程度上决定你的其余策略......

于 2012-12-04T08:24:58.283 回答