【发布时间】:2010-09-23 16:58:57
【问题描述】:
我正在尝试将 pdf 页面绘制到 pdf 上下文中,然后将其保存到磁盘。我似乎无法弄清楚出了什么问题。有人可以给我一些指点。谢谢。
- (void)testQuartz:(NSData *)pdfDocumentData
{
//Create the pdf document reference
CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((CFDataRef)pdfDocumentData);
CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(dataProvider);
CGDataProviderRelease(dataProvider); //Release the data provider
//Create the pdf context
CGPDFPageRef page = CGPDFDocumentGetPage(document, 0);
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, 0);
CGContextDrawPDFPage(pdfContext, page);
}
else
{
NSLog(@"Failed to create the document");
}
//Write to disk
[(NSMutableData *)mutableData writeToFile:@"/Users/David/Desktop/test.pdf" atomically:YES];
//Clean up
CGDataConsumerRelease(dataConsumer);
CFRelease(mutableData);
CGPDFDocumentRelease(document);
}
【问题讨论】:
-
那么什么不起作用?不是在编译吗?您在构建时是否收到错误或警告?您的日志消息是否正在输出?
-
执行代码时我没有收到任何警告或错误。我知道有问题,因为 pdf 文件无法打开。
标签: objective-c cocoa pdf quartz-2d