Изображение JBIG2 не загружается при преобразовании NSdata в PDF - PullRequest
0 голосов
/ 11 октября 2018

При создании PDF из NSData с использованием следующего кода

CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((CFDataRef)pdfDocumentData);
CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(dataProvider);

int i = (int) CGPDFDocumentGetNumberOfPages(document);
NSLog(@"Number Of pages: %d",i);
strTotalPage = [NSString stringWithFormat:@"%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++) {
        NSLog(@"PAGE NUMBER: %d",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
if(i>0){
   [Utility saveFileInDocumentDirectory:(__bridge NSData *)mutableData fileName:[NSString stringWithFormat:@"%@.pdf",_fileName] inDirectory:[NSString stringWithFormat:@"%@_PDFFolder",mUser.id]];
}
else{
    [DatabaseClass isLongPress:@"NO" UserID:mUser.id CategoryName:strCategoryName CategoryID:strProductID];
    [Utility removeSpecificFileFromDirectory:[NSString stringWithFormat:@"%@_LibraryPDF",mUser.id] fileName:strEncryptFile];
    strEncryptionKey = @"";
    strEncryptionIV = @"";
    strPDFFileName = @"";
    strEncryptFile = @"";
    [DatabaseClass updateLibrary:strEncryptionIV EncryptKey:strEncryptionKey EncrypFile:strEncryptFile PDFFileName:strPDFFileName UserID:mUser.id CategoryName:strCategoryName CategoryID:strProductID];
    [DatabaseClass updatePageNumber:@"" TotalPageNumber:@"" isDownload:@"NO" UserID:mUser.id CategoryName:strCategoryName CategoryID:strProductID];
    [Utility removeSpecificDirectoryFromDocumentDirectory:[NSString stringWithFormat:@"%@_PDFFolder",mUser.id]];
}

//CleanUP
CGDataConsumerRelease(dataConsumer);
CGPDFDocumentRelease(document);
CFRelease(mutableData);

[self.view setUserInteractionEnabled:YES];
[mSpinnerView hideFromView:self.view animated:YES];
if(i>0){
    [self showPDF:[NSString stringWithFormat:@"%@.pdf",_fileName]];
}

Я получаю "Недопустимый идентификатор символа в словаре символов JBIG2", эта ошибка и сбой приложения.

...