我在使用PDF上的GOTOR链接获取外部文件的地址时遇到问题。使用石英。
我从apple开发人员区域获得了一些示例,并且实际上能够获得数据字典上的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文件名是:(空)

在PDF格式参考中指出,GOTOR批注应具有一个F字段,并带有指向目标文件的链接...任何人都知道我在做什么错吗?

最好的祝福。

最佳答案

对于可能对该解决方案感兴趣的任何人:
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));

                }
            }

关于iphone - IOS解析PDF和GOTOR链接时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7407684/

10-11 23:12