iOS方法有时会检索错误的页面

时间:2014-07-20 23:59:18

标签: ios pdf

我有一个iOS功能,可以从长PDF中抓取单个页面并将其更改为NSMutableData,以便通过电子邮件发送。这是功能。

- (NSMutableData *)getPage:(NSInteger)pageNumber
{
    NSLog(@"%ld",(long)pageNumber);

    CGPDFDocumentRef SourcePDFDocument = CGPDFDocumentCreateWithURL((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"full" ofType:@"pdf"]]); // Create the CGPDFDocument from the URL
    if (SourcePDFDocument == NULL) {
        return nil;
    }

    // Reference to Page current Page
    CGPDFPageRef SourcePDFPage = CGPDFDocumentGetPage(SourcePDFDocument, pageNumber);

    CGRect mediaBox = CGPDFPageGetBoxRect(SourcePDFPage, kCGPDFMediaBox);
    NSMutableData *outputData = [NSMutableData data];
    CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData((__bridge CFMutableDataRef)outputData);
    CGContextRef context = CGPDFContextCreate(consumer, &mediaBox, NULL);
    // draw
    CGContextBeginPage(context, &mediaBox);
    CGContextDrawPDFPage(context, SourcePDFPage);
    CGContextEndPage(context);
    // cleanup
    CGDataConsumerRelease(consumer);
    CGContextRelease(context);

    return outputData;
}

问题是,对于任何大于或等于PDF的页面,该方法都会返回错误的页面。当我得到第397页时,我得到第399页,当我得到第786页时,我得到了第788页。这种情况发生在64位和32位设备上。我知道这是此函数的问题,因为NSLogged pageNumber是正确的数字。我该如何解决这个问题?

0 个答案:

没有答案