如何解决使用插入到 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 中的预览:
如您所见,徽标不见了。
我将跳过整个 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 举报,一经查实,本站将立刻删除。