微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用插入到 HTML 代码的 UIImage 创建 PDF 文件

如何解决使用插入到 HTML 代码的 UIImage 创建 PDF 文件

这是一个很好的文档化example 如何使用 html 字符串创建 pdf 文件

图片外一切正常

我有 UIImage 对象,当我通过 WKWebView 预览它时,我想在 HTML 代码中使用它

<img src="#logo_IMAGE#" style="width:100%; max-width:300px; background-color: #cdcdcd">

这就是我加载 WKWebView 的方式

webView.loadHTMLString(htmlStr,baseURL: nil)

我找到了如何使用 Base64 编码 here解决方案。在 WKWebView 中预览 HTML 内容看起来不错。图片在网页上。

但是当我使用 html 字符串生成一个 PDF 文件时,该字符串在 src 标签中包含我的 Base64 编码图像,生成的 PDF 文件不会显示图像。

所以第一张图片是 WKWebView 中的预览:

enter image description here

第二个是基于相同的html内容生成PDF:

enter image description here

如您所见,徽标不见了。

我将跳过整个 HTML 代码创建功能,但这里是我如何从中创建 PDF 的代码

func exportHTMLContentToPDF(HTMLContent: String) {
        let printPageRenderer = CustomPrintPageRenderer()
        let printFormatter = UIMarkupTextPrintFormatter(markupText: HTMLContent)
        printPageRenderer.addPrintFormatter(printFormatter,startingAtPageAt: 0)
        let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer: printPageRenderer)
        pdfFilename = getDocDir() + "/Invoice" + invoiceNumber + ".pdf"
        pdfData?.write(toFile: pdfFilename,atomically: true)

        print(pdfFilename)
    }
    
    func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -> NSData! {
        let data = NSMutableData()
     
        UIGraphicsBeginPDFContextToData(data,CGRect.zero,nil)
        UIGraphicsBeginpdfpage()
        printPageRenderer.drawPage(at: 0,in: UIGraphicsGetPDFContextBounds())
        UIGraphicsEndPDFContext()
     
        return data
    }
    
    func getDocDir() -> String {
        return NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask,true)[0]
    }

解决方法

这是一个工作代码的链接 https://github.com/nyg/HTMLWithImagesToPDF

如何将图像从 html 文件加载到 PDF 有很多变体。

我使用了 base46,它对我有用。但是代码中指定了不同的解决方案。

很有用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?