一千萬個為什麽

搜索

IOS解析PDF和GOTOR鏈接的問題

我在使用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字段,其中包含指向目標文件的鏈接......任何人都有任何想法我做錯了什麽?

最好的祝福。

最佳答案

對於可能對解決方案感興趣的任何人: 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));

                }
            }

轉載註明原文: IOS解析PDF和GOTOR鏈接的問題