由于 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 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章