Swift でいくつかの PDF ページを作成したいと思います。
これは、PDFページを作成するための私のコードです
// Initialize context and other stuff
CGPDFContextBeginPage(pdfContext, aDictionary);
CGContextDrawPDFPage(pdfContext, pdfPageRef)
CGPDFContextEndPage(pdfContext)
「aDictionary」変数に問題があります。kCGPDFContextMediaBox キーの下にメディア ボックス (CGRect 型の変数) の値を追加したいと思います。ドキュメントには次のことが記載されています。
The media box for the document or for a given page. This key is optional. If present, the value of this key must be a CFData object that contains a CGRect (stored by value, not by reference).
Objective-C では、CGRect から CFData を作成するのはかなり簡単ですが、Swift では作成方法がわかりません。ここに私の目的のCコードがあります:
CGRect mediaBox = CGRectZero;
CFDataCreate(kCFAllocatorDefault, (const UInt8 *)&mediaBox, sizeof(mediaBox));
Swift バリアントとは何ですか?
どういうわけか CFData オブジェクトを作成したとしましょう。次の「難しい」ステップは、これを CFDictionary に追加することです。これが私が試した方法です:
let pageDictionary = CFDictionaryCreateMutable(nil, 0, nil, nil);
CFDictionarySetValue(pageDictionary, key: &kCGPDFContextMediaBox, value: data);
これらの 2 行で、次のエラーが表示されます。CFString is not convertible to '@lvalue inout $T3'
これら2つのエラーを修正するにはどうすればよいですか?