После получения зашифрованного файла данных со стороны сервера я расшифровываю его, сохраняю в каталоге документов и показываю в PDF-ридере. Работает нормально.
{
CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((CFDataRef)pdfDocumentData);
CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(dataProvider);
int i = (int) CGPDFDocumentGetNumberOfPages(document);
NSLog(@"Number Of pages: %d",i);
//Create the pdf context
CGPDFPageRef page = CGPDFDocumentGetPage(document, 1); //Pages are numbered starting at 1
CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
CFMutableDataRef mutableData = CFDataCreateMutable(NULL, 0);
CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData(mutableData);
CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, &pageRect, NULL);
if (CGPDFDocumentGetNumberOfPages(document) > 0)
{
//Draw the page onto the new context
//page = CGPDFDocumentGetPage(document, 1); //Pages are numbered starting at 1
for (int j = 0; j < i; j++) {
page = CGPDFDocumentGetPage(document, j+1);
CGPDFContextBeginPage(pdfContext, NULL);
CGContextDrawPDFPage(pdfContext, page);
CGPDFContextEndPage(pdfContext);
}
}
else
{
NSLog(@"Failed to create the document");
}
CGContextRelease(pdfContext); //Release before writing data to disk.
//Write to disk
[Utility saveFileInDocumentDirectory:(__bridge NSData *)mutableData fileName:[NSString stringWithFormat:@"%@.pdf",_fileName] inDirectory:[NSString stringWithFormat:@"%@_LibraryPDF",mUser.id]];
//CleanUP
CGDataConsumerRelease(dataConsumer);
CGPDFDocumentRelease(document);
CFRelease(mutableData);
[self showPDF:[NSString stringWithFormat:@"%@.pdf",_fileName]];
}
-(void)showPDF:(NSString *)_fileName// data:(NSData *)_data
{
NSString *strPDF = [Utility getFilePathFromDocumentDirectory:_fileName inFolder:[NSString stringWithFormat:@"%@_LibraryPDF",mUser.id]];
NSLog(@"%@",strPDF);
ReaderDocument *document = [ReaderDocument withDocumentFilePath:strPDF password:nil];
if (document != nil){
ReaderViewController *mReaderViewController = [[ReaderViewController alloc] initWithReaderDocument:document];
mReaderViewController.delegate = self; // Set the LazyPDFViewController delegate to self
[self.navigationController pushViewController:mReaderViewController animated:NO];
}
}
Но у меня вопрос, могу ли я показать этот расшифрованный файл данных в программе чтения PDF, не сохраняя этот каталог документов в формате PDF?