iOS 將WKWebView內的HTML列印為PDF

來源:互聯網
上載者:User

標籤:print   輸出   paper   ref   string   port   err   super   frame   

 

 

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

// 建立列印渲染let printPageRenderer:PDFRender = PDFRender()// 擷取渲染格式let viewFormatter:UIViewPrintFormatter = webView.viewPrintFormatter()// 設定渲染格式printPageRenderer.addPrintFormatter(viewFormatter, startingAtPageAt: 0)// 將HTML渲染為PDFlet pdfData:NSData = printPageRenderer.drawPDF()// 輸出檔案let pdfFilename:String = "\(NSHomeDirectory())/Documents/test.pdf"// 儲存pdfData.write(toFile: pdfFilename, atomically: true)// 擷取檔案的儲存位置let url = URL.init(fileURLWithPath: pdfFilename)

 

 

 

PDFReader類的實現

import UIKitclass PDFRender: UIPrintPageRenderer {    // A4紙大小 595*842    let pageFrame:CGRect = CGRect(x: 0.0, y: 0.0, width: 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

iOS 將WKWebView內的HTML列印為PDF

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.