这是一个很好的文档示例,如何使用 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 编码的解决方案。在 WKWebView 中预览 HTML 内容看起来不错。图片在网页上。
但是,当我使用包含我的 Base64 编码图像的 html 字符串src
生成 PDF 文件时,生成的 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]
}