将图像绘制为PDF

时间:2013-11-23 19:28:22

标签: objective-c cocoa pdf cgcontext

我想将整页图像绘制成PDF,但我总是很难绕过CGContextRef s,所以我不知道该怎么做错误。

注意,这是非iOS 。我正在制作桌面应用程序。

到目前为止,我有这个:

-(void) addImage:(NSURL*) url toPage:(size_t) page toPDF:(CGPDFDocumentRef) pdf
{
    NSImage *image = [[NSImage alloc] initWithContentsOfURL:url];
    image = [image imageScaledToFitSize:pageSize.size];  //From Matt Gemmell's Crop extensions category

    [image lockFocus];

    CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];
    [image drawInRect:pageSize];
    [image unlockFocus];


    CGPDFPageRef pageRef = CGPDFDocumentGetPage(pdf, page);

    CGPDFContextBeginPage(context, pageInformation);
    CGContextDrawPDFPage(context, pageRef);
    CGPDFContextEndPage(context);
}

然而,我遇到了错误:

  

CGPDFContextEndPage:无效的上下文0x61000017b540。这是一个严重的错误。该应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降低。此通知是礼貌的:请解决此问题。在即将到来的更新中,它将成为一个致命的错误。

请问我的背景有什么问题?

1 个答案:

答案 0 :(得分:1)

您需要创建并使用CGPDFContext。不同的上下文特定于不同的呈现过程/目标,因此您需要选择正确的上下文。因此,请查看使用CGPDFContextCreateWithURL创建PDF上下文以将数据写入文件。