在哪里可以获得pdf文档结构中的超链接(页面字典中的“注释”条目除外)?

在哪里可以获得pdf文档结构中的超链接(页面字典中的“注释”条目除外)?,pdf,quartz-2d,Pdf,Quartz 2d,我有两个带有超链接的pdf文档(doc1和doc2),例如www.somlink.com、www.somlink2.com。 根据PDF规范,我可以通过链接注释获得这些超链接。链接注释可以在pdf页面的字典中的“Annots”键下找到 所以问题是,在一个pdf文档(doc1)中,我得到了“Annots”数组,但在另一个文档(doc2)中,页面字典中没有这样的条目。 问题是,使用PDFKit.framework,即使页面字典中没有“Annots”条目,也可以使用-(NSArray*)annotat

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

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

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

因此,似乎还有另外一个地方可以指定超链接(或PDF参考中的链接注释),而不仅仅是在“Annots”数组和PDFKit.framework中,不知何故,您知道该怎么做


有什么想法可以从哪里获得这些超链接吗?

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

“一串文本”http://blah.com“不一定是链接,它只是一段描述URL的文本。这可能是造成你困惑的原因

也可以在书签中嵌入链接操作。我对PDFKit或Quartz一点也不熟悉,所以就API调用而言,您只能靠自己了

最后,(重读您的问题后),我相信注释可以从其父对象Pages继承。我得查一下那个。。。不。annotations数组必须位于叶页对象中,否则无效


你能把链接发到你的PDF吗?这里有些不对劲。

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

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