我可以在pdf文档结构中获取超链接(除了页面字典中的“Annots”条目)?

时间:2010-08-12 12:17:53

标签: pdf quartz-2d

我有两个带有超链接的pdf文档(doc1和doc2),例如www.somlink.com,www.somlink2.com。 根据PDF规范,我可以通过链接注释获得这些超链接。链接注释可以在“Annots”键下的pdf页面词典中找到。

    CGPDFDictionaryRef pageDictionary = CGPDFPageGetDictionary(someCGPDFPage);
CGPDFArrayRef annots;
CGPDFDictionaryGetArray(pageDictionary, "Annots", &annots);

所以问题是在一个pdf文档(doc1)中我得到了“Annots”数组,但在另一个文档(doc2)中,页面字典中没有这样的条目。 事实是,使用PDFKit.framework,即使页面字典中没有“Annots”条目,您也可以使用 - (NSArray *)注释方法在PDFPage类中获取这些注释。

我无法在iPad / iPhone上使用PDFKit.framework,因此我正在使用Quartz框架:)

所以似乎还有另一个地方可以指定超链接(或PDF参考中的链接注释),不仅在“Annots”数组和PDFKit.framework中,我们知道如何做到这一点。

我可以在哪些想法获得这些超链接?

2 个答案:

答案 0 :(得分:1)

您可以点击的页面上的链接必须是注释。期。没有注释,没有链接。

一串文字“http://blah.com”不一定是链接,它只是描述URL的一段文字。这可能是导致你混淆的原因。

也可以在书签中嵌入链接操作。我对PDFKit或Quartz一点都不熟悉,所以就API调用而言,你是独立的。

最后,(重读了你的问题),我相信注释可以从他们的父页面对象继承。不得不看那个......不。注释数组必须位于叶页面对象中,否则它无效。

您可以发布PDF链接吗?这里的事情不对。

答案 1 :(得分:1)

像Adobe Reader这样的PDF查看器只允许在纯文本上单击和导航,如果它看起来像超链接 - 即以http://,https://,ftp://开头,最后是一些URL分隔符比如太空。就这么简单;)