程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了UIMarkupTextPrintFormatter永远不会渲染base64图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决UIMarkupTextPrintFormatter永远不会渲染base64图像?

开发过程中遇到UIMarkupTextPrintFormatter永远不会渲染base64图像的问题如何解决?下面主要结合日常开发的经验,给出你关于UIMarkupTextPrintFormatter永远不会渲染base64图像的解决方法建议,希望对你解决UIMarkupTextPrintFormatter永远不会渲染base64图像有所启发或帮助;

我找到了解决方案!

导出到pdf会在渲染过程完成之前进行。如果您放入很小的图片,它将显示在pdf中。如果图片太大,则渲染过程会花费太多时间,但是pdf导出不会等待渲染完成。

因此,我要做的就是以下几点:

在导出为pdf之前,我先在WebVIEw中显示HTML的结果。WebVIEw可以正确呈现所有内容,现在当我按导出到pdf时,pdf可以正确显示其中的所有图像。

因此,我认为这是一个巨大的滞后,无法告诉pdf导出器等待渲染过程完成。

解决方法

我在Swift 3.0中根据html内容创建了pdf文件:

/**
 *
 */
func exportHtmlContentToPDF(HTMLContent: String,filePath: String) {
    // let webView = UIWebView(frame: CGRect(x: 0,y: 0,width: 694,height: 603));

    // webView.loadHTMLString(HTMLContent,baseURL: nil);

    let pdfPrinter = PDFPrinter();
    let printFormatter = UIMarkupTextPrintFormatter(markupText: HTMLContent);
    // let printFormatter = webView.viewPrintFormatter();

    pdfPrinter.addPrintFormatter(printFormatter,startingAtPageAt: 0);

    let pdfData = self.drawPDFUsingPrintPageRenderer(printPageRenderer: pdfPrinter);

    pdfData?.write(toFile: filePath,atomically: true);
}

/**
 *
 */
func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -> NSData! {
    let data = NSMutableData();

    UIGraphicsBeginPDFContextToData(data,CGRect.zero,nil);

    printPageRenderer.prepare(forDrawingPages: NSMakeRange(0,printPageRenderer.numberOfPages));

    let bounds = UIGraphicsGetPDFContextBounds();

    for i in 0...(printPageRenderer.numberOfPages - 1) {
        UIGraphicsBeginPDFPage();

        printPageRenderer.drawPage(at: i,in: bounds);
    }

    UIGraphicsEndPDFContext();

    return data;
}

除了我的base64编码图像外,其他所有内容都可以正常渲染。在Web视图中或在Safari或chrome浏览器中的HTML内容本身可以正确显示,并且可以正确显示所有图像。但是图像永远不会渲染到pdf中。

为什么不渲染图像?如何使它们渲染?

大佬总结

以上是大佬教程为你收集整理的UIMarkupTextPrintFormatter永远不会渲染base64图像全部内容,希望文章能够帮你解决UIMarkupTextPrintFormatter永远不会渲染base64图像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: