OGeek|极客世界-中国程序员成长平台

标题: iphone - 从 NSMutableData 动态创建 PDF [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 20:40
标题: iphone - 从 NSMutableData 动态创建 PDF

我有一个包含 PDF 文件的 NSMutableData 对象。我知道如何打开存储在系统中的 PDF,我可以这样做:

CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), (CFStringRef)pathToPDF, NULL, NULL);
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);

但现在我不想将文件存储在系统上,而是动态创建 PDF 对象(因为 PDF 作为加密 PDF 存储在系统上,我不想保存解密后的出于安全原因的文件。)

因此,我不想从文件中加载 CGPDFDocumentRef pdf,而是直接从 NSMutableData 对象中加载它。

我该怎么做?

提前致谢!



Best Answer-推荐答案


使用 CGDataProvider 从任意来源获取字节:

NSData *encrypted = [NSData dataWithContentsOfFile: ...];
if (encrypted) {
    NSData *decrypted = MyDecrypt(encrypted);
    if (decrypted) {
        CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((CFDataRef)decrypted);
        if (dataProvider) {
            CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(dataProvider);
            CGDataProviderRelease(dataProvider);
        }
    }
}

您还可以创建一个 CGDataProvider 实例,如果这更适合您的流程,则可以使用回调进行动态解密。有关详细信息,请参阅文档。

关于iphone - 从 NSMutableData 动态创建 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416387/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4