仅在64位iOS设备上获取错误的PDF页面

时间:2014-07-20 22:38:10

标签: ios pdf

我有一个只在64台设备上出现问题的iOS应用。问题所在的功能在于:

- (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中获取单个分页并将其转换为NSMutableData,以便可以通过电子邮件发送。它在64位设备上遇到的问题是它正在抓取错误的页面(之前有18页)。有谁能看到这个问题?

1 个答案:

答案 0 :(得分:0)

向size_t添加一个显式强制转换 - 如果你将其隐含在32位和64位之间

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