如何从 CGPDFPage 获取 PDF 框大小
How to get PDF box size from CGPDFPage
我遇到了错误,但是我尝试在 Swift 中获取 PDF 页面的媒体框。:
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 度的纵向媒体框。有没有简单的方法来获得 "actual" 显示尺寸,还是我必须自己进行转换?
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 中获取 PDF 页面的媒体框。:
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 度的纵向媒体框。有没有简单的方法来获得 "actual" 显示尺寸,还是我必须自己进行转换?
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))