由于 iOS 14 从 Web 视图创建 PDF 无法正常工作
Posted
技术标签:
【中文标题】由于 iOS 14 从 Web 视图创建 PDF 无法正常工作【英文标题】:Since iOS 14 creating a PDF from a Webview not working correctly 【发布时间】:2020-10-07 12:32:25 【问题描述】:在 ios 14 之前,我有一个函数 createPDF_Specs,它可以从 Web 视图为我创建一个 DIN A4 PDF。 然而,从 iOS14 开始,它将 webview 的背景图片(由 htmlString 创建)移动到 PDF 中的第二个站点。奇怪的是,webview 显示正确。
第一张图片展示了 Web 视图的显示方式,第二张展示了 PDF 的结束方式。
func createPDF_Specs(formatter: UIViewPrintFormatter, filename: String) -> String
// From: https://gist.github.com/nyg/b8cd742250826cb1471f
// 2. Assign print formatter to UIPrintPageRenderer
let render = UIPrintPageRenderer()
render.addPrintFormatter(formatter, startingAtPageAt: 0)
// 3. Assign paperRect and printableRect
let page = CGRect(x: 0, y: 0, width: 841.8, height: 595.2) // A4, 72 dpi
let printable = page.insetBy(dx: -3, dy: -3)
render.setValue(NSValue(cgRect: page), forKey: "paperRect")
render.setValue(NSValue(cgRect: printable), forKey: "printableRect")
// 4. Create PDF context and draw
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, page, nil)
print(render.numberOfPages, "Number of pages")
for i in 1...render.numberOfPages
UIGraphicsBeginPDFPage();
let bounds = UIGraphicsGetPDFContextBounds()
print(bounds)
// render.drawPage(at: i - 1, in: bounds)
render.drawPage(at: i - 1, in: page)
UIGraphicsEndPDFContext()
// 5. Save PDF file
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let filePath = "\(documentsPath)/\(filename).pdf"
pdfPath = URL(string: filePath)
pdfData.write(toFile: filePath, atomically: true)
print("open \(filePath)")
return filePath
【问题讨论】:
【参考方案1】:答案:这是一个苹果虫。我向 Apple 报告了它,他们用 iOS 14.1 修复了它
【讨论】:
以上是关于由于 iOS 14 从 Web 视图创建 PDF 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章