IOS 9 beta 5:CGPDFDocumentCreateWithURL仅返回密码保护的pdf文件

时间:2015-08-11 06:05:15

标签: iphone xcode pdf ios9

我正在使用以下行创建PDF参考:

********** CGPDFDocumentRef thePDFDocRef = CGPDFDocumentCreateWithURL(theURL); **********

thePDFDocRef返回NULL,但加载没有密码保护的文件也可以正常运行ios 9 beta 5。

只有问题是ios 9 beta 5,但它适用于ios 9 beta 4及以下版本,如ios 8,7,6等......

 CGPDFDocumentRef CGPDFDocumentCreateX(CFURLRef theURL, NSString *password)
{
CGPDFDocumentRef thePDFDocRef = NULL;

if (theURL != NULL) // Check for non-NULL CFURLRef
{
    thePDFDocRef = CGPDFDocumentCreateWithURL(theURL);

    if (thePDFDocRef != NULL) // Check for non-NULL CGPDFDocRef
    {
        if (CGPDFDocumentIsEncrypted(thePDFDocRef) == TRUE) // Encrypted
        {
            // Try a blank password first, per Apple's Quartz PDF example

            if (CGPDFDocumentUnlockWithPassword(thePDFDocRef, "") == FALSE)
            {
                // Nope, now let's try the provided password to unlock the PDF

                if ((password != nil) && ([password length] > 0)) // Not blank?
                {
                    char text[128]; // char array buffer for the string conversion

                    [password getCString:text maxLength:126 encoding:NSUTF8StringEncoding];

                    if (CGPDFDocumentUnlockWithPassword(thePDFDocRef, text) == FALSE) // Log failure
                    {
                        #ifdef DEBUG
                            NSLog(@"CGPDFDocumentCreateX: Unable to unlock [%@] with", theURL);
                        #endif
                    }
                }
            }

            if (CGPDFDocumentIsUnlocked(thePDFDocRef) == FALSE) // Cleanup unlock failure
            {
                CGPDFDocumentRelease(thePDFDocRef), thePDFDocRef = NULL;
            }
        }
    }
}
else // Log an error diagnostic
{
    #ifdef DEBUG
        NSLog(@"CGPDFDocumentCreateX: theURL == NULL");
    #endif
}

return thePDFDocRef;

}

1 个答案:

答案 0 :(得分:2)

我在iOS 9 Beta 5中也发现了同样的问题。 预览不要求密码或打开受保护的PDF。

iOS Mail应用程序中的行为也相同。 STEP:将pdf附加到邮件并尝试打开...

必须是iOS 9 Beta 5错误...