0

这是一个很好的文档示例,如何使用 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]
    }
4

1 回答 1

0

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

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

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

很有用

于 2021-02-19T19:50:46.397 回答