Как создать PDF из UIWebview - PullRequest
1 голос
/ 28 октября 2019

Невозможно создать PDF из шаблона HTML на устройствах iOS. Он отображает все остальное, кроме Image [Local, а также Image на стороне сервера. Даже использовал UIWebview (так как моя цель приложения iOS - 10,3), но все еще не может отрендериться в PDF. Я успешно отобразил предварительный просмотр в UIWebview, но когда дело доходит до pdf, я получаю только динамический текст, ничего больше.

@objc func downloadPDF(){

    let render = UIPrintPageRenderer()
    render.addPrintFormatter(webView.viewPrintFormatter(), startingAtPageAt: 0);


    let page = CGRect(x: 0, y: 10, width: webView.frame.size.width, height: webView.frame.size.height) // take the size of the webView
    let printable = page.insetBy(dx: 0, dy: 0)
    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, CGRect.zero, nil)
    for i in 1...render.numberOfPages {

        UIGraphicsBeginPDFPage();
        let bounds = UIGraphicsGetPDFContextBounds()
        render.drawPage(at: i - 1, in: bounds)
    }
    UIGraphicsEndPDFContext();
    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]

    print(documentsPath)

    pdfData.write(toFile: "\(documentsPath)/\(self.pdfTitle).pdf", atomically: true)
    AppConfigurations.shared.popAlert(To: "PDF Generate", for: documentsPath, callingView: self)
    self.pdfPath = "\(documentsPath)/\(self.pdfTitle).pdf"

}

@objc func downloadPDF(){

    let render = UIPrintPageRenderer()
    render.addPrintFormatter(webView.viewPrintFormatter(), startingAtPageAt: 0);


    let page = CGRect(x: 0, y: 10, width: webView.frame.size.width, height: webView.frame.size.height) // take the size of the webView
    let printable = page.insetBy(dx: 0, dy: 0)
    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, CGRect.zero, nil)
    for i in 1...render.numberOfPages {

        UIGraphicsBeginPDFPage();
        let bounds = UIGraphicsGetPDFContextBounds()
        render.drawPage(at: i - 1, in: bounds)
    }
    UIGraphicsEndPDFContext();
    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]

    print(documentsPath)

    pdfData.write(toFile: "\(documentsPath)/\(self.pdfTitle).pdf", atomically: true)
    AppConfigurations.shared.popAlert(To: "PDF Generate", for: documentsPath, callingView: self)
    self.pdfPath = "\(documentsPath)/\(self.pdfTitle).pdf"

}

Я ожидаю, что я хочу создать PDF с соответствующим фоновым изображениеми html-стилизация с локальным и серверным изображением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...