Я сохраняю файл PDF с помощью CGPDF под iOS 10. Для этого я загружаю существующую страницу PDF и записываю ее в новый файл с контекстом. При этом информация о повороте теряется, и в полученном PDF-файле все страницы перестраиваются под углом 0°.
let writeContext: CGContext = CGContext(finalPDFURL, mediaBox: nil, nil)!
// Loop through all pages
let page: CGPDFPage = ...
var mediaBox = page.getBoxRect(.mediaBox)
writeContext.beginPage(mediaBox: &mediaBox)
writeContext.drawPDFPage(page)
writeContext.endPage()
// Loop finished
writeContext.closePDF()
Затем я придумал этот код, который прекрасно справляется с вращением, но, кажется, рисует содержимое с небольшим смещением. Использование его с PDF-файлом, в котором есть текст или что-либо еще близкое к полям, приводит к обрезанию содержимого. Позже попытался также установить x, y и т. Д. В словаре pageInfo, но я думаю, что я что-то неправильно понял, см. 2-й вопрос ниже.
let page: CGPDFPage = ...
// Set the rotation
var pageDict = [String: Int32]()
pageDict["Rotate"] = CGFloat.init(page.rotationAngle)
writeContext.beginPDFPage(pageDict as CFDictionary?)
writeContext.drawPDFPage(page)
writeContext.endPDFPage()
Итак, мои вопросы,
1) Как использовать первый подход, но с поддержкой вращения? Или второй, но без обрезки контента?
2) Где я могу найти полный список всех доступных пар ключ-значение pageInfo для этого метода? https://developer.apple.com/reference/coregraphics/cgcontext/1456578-beginpdfpage
Спасибо!