gpt4 book ai didi

swift - 如何从 CGPDFPage 获取 PDF 框大小

转载 作者:行者123 更新时间:2023-11-28 10:54:36 25 4
gpt4 key购买 nike

我遇到了错误,但是我尝试在 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.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com