9

是否可以使用CGPDFDocument或其他方式访问 PDF 文档中的“内部”链接?我正在构建一个简单的阅读器应用程序,并希望以 PDF 形式提供我的内容,但如果我不能支持文档中页面之间的链接,这可能不起作用。

这个问题类似,但没有解决如何支持超链接的问题。

4

4 回答 4

2

在这里查看我的答案。基本上,您需要熟悉 PDF 链接注释。

于 2010-08-09T22:35:02.950 回答
1

请参阅此示例代码...pdf超链接在此有效

https://github.com/vfr/Reader

于 2011-09-08T10:40:13.913 回答
0

如果您使用Quartz 打开和查看 PDF,那么是的,看起来您可以访问内部链接。Quartz 还可以让你添加新的 PDF 链接。我没有任何关于 iPhone/Mac 开发的第一手经验,但是他们让你添加超链接却不使用它们会很奇怪。

于 2009-08-11T02:06:48.560 回答
0

您需要分两步进行。

第一:解析您的 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 做出相应响应。

于 2010-08-31T10:40:04.277 回答