【问题标题】:Creating PDF file with UIImage inserted to HTML code使用插入 HTML 代码的 UIImage 创建 PDF 文件
【发布时间】: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


    【解决方案1】:

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

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

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

    很有用

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      相关资源
      最近更新 更多