我得到了错误,但我试图得到一个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.mediaBox
、mediaBox
和几乎所有其他变体。它在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/