是否可以使用CGPDFDocument
或其他方式访问 PDF 文档中的“内部”链接?我正在构建一个简单的阅读器应用程序,并希望以 PDF 形式提供我的内容,但如果我不能支持文档中页面之间的链接,这可能不起作用。
这个问题类似,但没有解决如何支持超链接的问题。
是否可以使用CGPDFDocument
或其他方式访问 PDF 文档中的“内部”链接?我正在构建一个简单的阅读器应用程序,并希望以 PDF 形式提供我的内容,但如果我不能支持文档中页面之间的链接,这可能不起作用。
这个问题类似,但没有解决如何支持超链接的问题。
在这里查看我的答案。基本上,您需要熟悉 PDF 链接注释。
请参阅此示例代码...pdf超链接在此有效
如果您使用Quartz 打开和查看 PDF,那么是的,看起来您可以访问内部链接。Quartz 还可以让你添加新的 PDF 链接。我没有任何关于 iPhone/Mac 开发的第一手经验,但是他们让你添加超链接却不使用它们会很奇怪。
您需要分两步进行。
第一:解析您的 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 做出相应响应。