Я хотел бы создать несколько страниц PDF в Swift.
Это мой код для создания страницы PDF
// Initialize context and other stuff
CGPDFContextBeginPage(pdfContext, aDictionary);
CGContextDrawPDFPage(pdfContext, pdfPageRef)
CGPDFContextEndPage(pdfContext)
У меня проблема с переменной "aDictionary". Я хотел бы добавить значение медиабокса (который является переменной типа CGRect) под ключом kCGPDFContextMediaBox. Документация говорит мне следующее: 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 довольно легко создать CFData из CGRect, но в Swift я не уверен, как это сделать. Вот мой код target-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);
Для этих двух строк я получаю следующую ошибку: CFString is not convertible to '@lvalue inout $T3'
Есть ли у вас какие-либо подсказки, как я могу исправить эти две ошибки?