我在 iOS 10 下使用 CGPDF 保存 PDF 文件。为此,我加载现有的 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 一起使用会导致内容被截断。后来尝试在 pageInfo 字典上设置 x、y 等,但我想我在这里误解了一些东西,请参阅下面的第二个问题。
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
谢谢!