我在使用pdfs上的GOTOR链接获取外部文件的地址时遇到问题。使用石英。 我从苹果开发者区域得到了一些例子,实际上能够直到数据字典上的GOTOR入口:这是我使用的代码:
if (strcmp(actionType, "GoToR") == 0) // GoTo action type
{
NSLog(@"Annotation is of type GotoR");
if (CGPDFDictionaryGetArray(actionDictionary, "D", &destArray) == false)
{
const char *actionFile = NULL; // Annotation action type string
CGPDFDictionaryGetName(actionDictionary, "F", &actionFile);
CGPDFDictionaryGetString(actionDictionary, "D", &destName);
NSLog(@"link is %@ filename is:%s",CGPDFStringCopyTextString(destName),actionFile);
}
}
点击链接,我从NSLOG获得以下输出:
链接是REF-0000059文件名是:( null)
在PDF格式中,参考文献中指出GOTOR注释应该有一个带有目标文件链接的F字段......任何人都有任何想法我做错了什么?
最好的问候。
答案 0 :(得分:0)
对于可能对解决方案感兴趣的任何人: GOTOR F字段既可以是字符串,也可以是数组,因此要在每种情况下都能工作,我们必须检查两种可能性:
if (strcmp(actionType, "GoToR") == 0) // GoTo action type
{
NSLog(@"Annotation do tipo GotoR");
if (CGPDFDictionaryGetArray(actionDictionary, "D", &destArray) == false)
{
CGPDFStringRef actionFile = NULL;
CGPDFDictionaryRef linkDictionary = NULL;
if (CGPDFDictionaryGetDictionary(actionDictionary, "F", &linkDictionary) == true){
CGPDFDictionaryGetString(linkDictionary, "F", &actionFile);
}
else{
CGPDFDictionaryGetString(actionDictionary, "F", &actionFile);
}
*actionFile = NULL; // Annotation action type string
CGPDFDictionaryGetString(actionDictionary, "D", &destName);
NSLog(@"link is %@ filename is:%@",CGPDFStringCopyTextString(destName),CGPDFStringCopyTextString(actionFile));
}
}