Iphone 从NSMutableData动态创建PDF
我有一个NSMutableData对象,它包含一个PDF文件。我知道如何打开存储在系统上的PDF,可以这样做:Iphone 从NSMutableData动态创建PDF,iphone,ios,xcode,ipad,xcode4,Iphone,Ios,Xcode,Ipad,Xcode4,我有一个NSMutableData对象,它包含一个PDF文件。我知道如何打开存储在系统上的PDF,可以这样做: CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), (CFStringRef)pathToPDF, NULL, NULL); CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL); 但现在我不想将文件存储在系统上,而是动态
CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), (CFStringRef)pathToPDF, NULL, NULL);
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);
但现在我不想将文件存储在系统上,而是动态创建PDF对象(因为PDF作为加密PDF存储在系统上,出于安全原因,我不想保存解密后的文件)
因此,我希望直接从NSMutableData对象加载CGPDFDocumentRef pdf,而不是从文件加载CGPDFDocumentRef pdf
我该怎么做
提前谢谢 使用
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
的实例,如果它更适合您的流程,则可以使用回调动态解密。有关详细信息,请参阅文档。当我使用CGPDFDocumentCreateWithProvider创建CGPDFDocumentRef时,它立即开始回调,并要求pdf中的几乎所有字节,这需要更多时间来完成“CGPDFDocumentRef pdf=CGPDFDocumentCreateWithProvider(dataProvider);”。你能告诉我为什么会发生这种情况吗?只有当我们从pdf中获取任何页面时,它才应该回调,对吗?这应该是一个单独的问题,而不是评论。我对CG的实现细节一无所知。