1

我已经有了NSView,为此NSView我添加了一些子视图,它们是NSView(命名为:)的子类Square。正方形在不同位置上是 50x50。我想NSView用背景颜色RedBlue屏幕截图上的这个白色背景来渲染这个 s。

在此处输入图像描述

- (void)saveAsPDF
{

NSString *homeDirectory = NSHomeDirectory();
NSURL *fileURL = [NSURL fileURLWithPath:[homeDirectory stringByAppendingPathComponent:@"plik.pdf"]];

CGRect mediaBox = self.bounds;

CGContextRef pdfContext = CGPDFContextCreateWithURL((__bridge CFURLRef)(fileURL), &mediaBox, NULL);

CGPDFContextBeginPage(pdfContext, nil);

for (Square *square in squareGroup) {
    [square.layer renderInContext:pdfContext];
}

CGPDFContextEndPage(pdfContext);

CGContextRelease(pdfContext);

只有我得到的是空白的PDF文件。如何在 pdfContext 中正确绘制这些正方形?

4

1 回答 1

3

您必须调用CGPDFContextClose才能写入 PDF 数据:

// ...

CGPDFContextEndPage(pdfContext);

// Close the PDF document
CGPDFContextClose(pdfContenxt);

CGContextRelease(pdfContext);

// ...

文档指出,关闭上下文会导致写入数据,这可能解释了为什么您在没有关闭的情况下得到一个空白 PDF:

关闭上下文后,所有待处理的数据都写入上下文目的地,PDF 文件就完成了。关闭 PDF 文档后,无法将其他数据写入目标上下文。

于 2013-01-28T21:02:48.580 回答