我得到了错误,但我试图得到一个PDF页面的媒体框在Swift.:

if let pdf = CGPDFDocument(pdfURL) {
    let numberOfPages = pdf.numberOfPages
    for index in 0...numberOfPages {
        let pdfPage = pdf.page(at: index)
        print(CGPDFPageGetBoxRect(pdfPage!, kCGPDFMediaBox))

}

我也试过:
print(pdfPage.getBoxRect(kCGPDFMediaBox))

以及使用PDFDisplayBox.mediaBoxmediaBox和几乎所有其他变体。它在python中工作得很好。
我也可以使用PDFPage(与CGPDFPage相反)来获得精细的信息,但我需要使用CGPDFPage来完成PDFPage无法完成的其他任务
第二部分是:据我所知,mediaBox结果不影响旋转。因此,横向页面可能有一个旋转90度的纵向媒体框。有什么简单的方法可以得到“实际”的显示尺寸,还是我必须自己进行转换?

最佳答案

PDF页面的编号从1开始,而不是从零开始。以及getBoxRect()
在Swift 3中接受enum CGPDFBox参数。所以这应该管用:

for pageNo in 1...pdf.numberOfPages {
    if let pdfPage = pdf.page(at: pageNo) {
        let mediaBox = pdfPage.getBoxRect(.mediaBox)
        print(mediaBox)
    }
}

PDF边框不考虑页面旋转。
以下操作可能可以计算旋转框(未测试):
// Get rotation angle and convert from degrees to radians:
let angle = CGFloat(pdfPage.rotationAngle) * CGFloat.pi / 180
// Apply rotation transform to media box:
let rotatedBox = mediaBox.applying(CGAffineTransform(rotationAngle: angle))

关于swift - 如何从CGPDFPage获取PDF框大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44407140/

10-10 02:35