1

私は持っていますNSView、そしてこれに私は(という名前NSViewの:)のサブクラスであるいくつかのサブビューを追加しました。正方形はさまざまな位置で50x50です。スクリーンショットのように、これを背景色またはこの白い背景でレンダリングしたいと思います。NSViewSquareNSViewRedBlue

ここに画像の説明を入力してください

- (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

PDFデータを書き込むには、CGPDFContextCloseを呼び出す必要があります。

// ...

CGPDFContextEndPage(pdfContext);

// Close the PDF document
CGPDFContextClose(pdfContenxt);

CGContextRelease(pdfContext);

// ...

ドキュメントには、コンテキストを閉じるとデータが書き込まれることが記載されています。これにより、閉じずに空白のPDFを取得する理由が説明される場合があります。

コンテキストを閉じた後、保留中のすべてのデータがコンテキストの宛先に書き込まれ、PDFファイルが完成します。PDFドキュメントを閉じた後は、宛先コンテキストに追加のデータを書き込むことはできません。

于 2013-01-28T21:02:48.580 に答える