如何访问 PDF 文档 (iPhone) 中的超链接?
Posted
技术标签:
【中文标题】如何访问 PDF 文档 (iPhone) 中的超链接?【英文标题】:How to access hyperlinks in PDF documents (iPhone)? 【发布时间】:2010-11-17 21:09:07 【问题描述】:是否可以使用CGPDFDocument
或其他方式访问 PDF 文档中的“内部”链接?我正在构建一个简单的阅读器应用程序,并希望以 PDF 形式提供我的内容,但如果我不支持文档中页面之间的链接,这可能无法正常工作。
This question类似,但没有解决如何支持超链接的问题。
【问题讨论】:
页面之间的链接到底是什么意思?您是在谈论第 1 页上的链接,该链接转到第 4 页,还是您在谈论阅读器中的第 1 页紧随其后的第 2 页?顺便说一句,如果您谈论的是页面之间的可点击链接,请记住,PDF 文档中的超链接只是页面上可点击的热点矩形,与它们显示为超链接的文本没有直接关系。从这个意义上说,PDF 文档与 html 文档不同。 我的意思是支持从一个页面到文档中其他任意页面的链接。我会将它用于目录,以及在随机位置引用其他页面。所以是的,我真正在寻找的是一种类似 HTML 的方式来导航 PDF 文档。没有这个我可以处理“下一个/上一个/主页”导航的简单情况,但理想情况下我也想支持任意导航。谢谢。 这是一些示例代码,来自我自己的问题:***.com/questions/4080373/… 【参考方案1】:查看我的回答here。基本上,您需要熟悉 PDF 链接注释。
【讨论】:
【参考方案2】:查看此示例代码...pdf 超链接适用于此
https://github.com/vfr/Reader
【讨论】:
【参考方案3】:如果您使用的是Quartz to open and view a PDF,那么是的,您似乎可以访问内部链接。 Quartz 还可以让您add new links 转为 PDF。我没有任何 iPhone/Mac 开发的第一手经验,但是他们让你添加超链接却不使用它们会很奇怪。
【讨论】:
这些链接都指向 Mac OS X 参考库,而不是 iPhone OS。手机上不存在 PDFKit。 是的,以上两个链接都只是打开 osx 参考库列表。它没有提供任何适当的信息。它是如何被接受的? -1 对不起伙计们,我不再做 iPhone 开发了,所以这实际上是一个被放弃的问题。我无法验证这是否是一个可接受的答案,所以我只是“不接受”它。【参考方案4】:您需要分两步进行。
首先:解析您的 pdf 以找到标记的内容运算符
这是一个解析代码的例子:
-(void)parseContent()
CGPDFOperatorTableRef myTable;
myTable = CGPDFOperatorTableCreate();
CGPDFOperatorTableSetCallback(myTable, "BMC", &myOperator_BMC);
CGPDFContentStreamRef myContentStream = CGPDFContentStreamCreateWithPage(page);
CGPDFScannerRef myScanner = CGPDFScannerCreate(myContentStream, myTable, autoZoomAreas);
CGPDFScannerScan(myScanner);
CGPDFScannerRelease(myScanner);
CGPDFContentStreamRelease(myContentStream);
void myOperator_BMC(CGPDFScannerRef s, void *info)
const char *name;
CGPDFScannerPopName(s, &name);
(您需要完成并调整此代码以符合您的要求)
第二:响应 toucheEnded 消息以处理对这些区域的点击并使 UI 做出相应响应。
【讨论】:
以上是关于如何访问 PDF 文档 (iPhone) 中的超链接?的主要内容,如果未能解决你的问题,请参考以下文章