我已经NSView
了NSView
我添加了一些子视图,这些子视图是NSView
的子类(名称为Square
)。不同位置的正方形为50x50。我希望使用背景颜色NSView
或Red
呈现这个Blue
的白色背景,如屏幕截图所示。
- (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中正确绘制这个方块?
答案 0 :(得分:3)
您必须致电CGPDFContextClose以便写入PDF数据:
// ...
CGPDFContextEndPage(pdfContext);
// Close the PDF document
CGPDFContextClose(pdfContenxt);
CGContextRelease(pdfContext);
// ...
documentation注意到关闭上下文会导致数据写入,这可能解释了为什么在没有关闭的情况下获取空白PDF的原因:
关闭上下文后,所有待处理数据都将写入上下文 目的地,PDF文件已完成。没有其他数据可以 在PDF文档关闭后写入目标上下文。