zoukankan      html  css  js  c++  java
  • iOS 将WKWebView内的HTML打印为PDF

    使用的webview为WKWebView,核心部分代码(Swift 4):

    // 创建打印渲染
    let printPageRenderer:PDFRender = PDFRender()
    // 获取渲染格式
    let viewFormatter:UIViewPrintFormatter = webView.viewPrintFormatter()
    // 设置渲染格式
    printPageRenderer.addPrintFormatter(viewFormatter, startingAtPageAt: 0)
    // 将HTML渲染为PDF
    let pdfData:NSData = printPageRenderer.drawPDF()
    // 输出文件
    let pdfFilename:String = "(NSHomeDirectory())/Documents/test.pdf"
    // 保存
    pdfData.write(toFile: pdfFilename, atomically: true)
    // 获取文件的保存位置
    let url = URL.init(fileURLWithPath: pdfFilename)

    PDFRender类的实现

    import UIKit
    
    class PDFRender: UIPrintPageRenderer {
        // A4纸大小 595*842
        let pageFrame:CGRect = CGRect(x: 0.0, y: 0.0,  595, height: 842) 
        
        override init() {
            super.init()
            
            // 设置打印纸的尺寸大小
            self.setValue(pageFrame, forKey: "paperRect")
            // 设置内容区域大小
            self.setValue(pageFrame, forKey: "printableRect")
        }
        /// 绘制PDF并生成NSData
        func drawPDF() -> NSData! {
            
            let data:NSMutableData = NSMutableData()
            // 小心!第二个参数如果设置为CGRect.zero,PDF尺寸就会是默认的 612*792
            UIGraphicsBeginPDFContextToData(data, pageFrame, nil)
            self.prepare(forDrawingPages: NSRange.init(location: 0, length: self.numberOfPages))
            
            let bounds:CGRect = pageFrame
            for i in 0..<self.numberOfPages{
                UIGraphicsBeginPDFPage()
                self.drawPage(at: i, in: bounds)
            }
            UIGraphicsEndPDFContext()
            return data
        }
    }

      


    Ficow原创,转载请注明出处:http://www.cnblogs.com/ficow/p/7859462.html

  • 相关阅读:
    7、cad图纸打印
    对账
    练习10—去掉图片文字
    6、cad里面如何快速将图纸的线条全部变成黑色
    5、cad如何快速选中图纸上所有文字
    4、如何修改cad的背景色为白色
    练习九—快速修饰面部光影
    iOS alloc&init探索
    export default / export const
    Vue2.0+组件库总结
  • 原文地址:https://www.cnblogs.com/ficow/p/7859462.html
Copyright © 2011-2022 走看看