Swift: 將WKWebView轉(zhuǎn)成PDF

WKWebView詳解--OC版
使用的webViewWKWebView,核心代碼是Swift4.0

import UIKit

class PDFRender: UIPrintPageRenderer {
    // A4紙大小 595*842
    let pageFrame:CGRect = CGRect(x: 0.0, y: 0.0, width: 595.2, height: 841.8) 
    
    override init() {
        super.init()
        
        // 設(shè)置打印紙的尺寸大小
        self.setValue(pageFrame, forKey: "paperRect")
        // 設(shè)置內(nèi)容區(qū)域大小
        self.setValue(pageFrame, forKey: "printableRect")
    }
    /// 繪制PDF并生成NSData
    func drawPDF() -> NSData! {
        
        let data:NSMutableData = NSMutableData()
        // 小心!第二個(gè)參數(shù)如果設(shè)置為CGRect.zero,PDF尺寸就會(huì)是默認(rèn)的 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
    }
}
// 創(chuàng)建打印渲染
let printPageRenderer:PDFRender = PDFRender()
// 獲取渲染格式
let viewFormatter:UIViewPrintFormatter = webView.viewPrintFormatter()
// 設(shè)置渲染格式
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)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容