【发布时间】:2021-05-20 21:37:50
【问题描述】:
这是一个很好的文档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)
我找到了一个解决方案here 使用 Base64 编码。在 WKWebView 中预览 HTML 内容看起来不错。图片在网页上。
但是当我使用 html 字符串生成 PDF 文件时,该文件在 src 标签中包含我的 Base64 编码图像,生成的 PDF 文件不会显示图像。
所以第一张图片是WKWebView中的预览:
第二个是基于相同的html内容生成PDF:
您可能会看到徽标丢失。
我将跳过整个 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]
}
【问题讨论】:
标签: ios swift pdf uiimage uiprintpagerenderer