菜鸟教程小白 发表于 2022-12-11 17:40:22

html - 使用 UIViewPrintFormatter 从 Html 创建的 Pdf 不显示本地镜像


                                            <p><p>我正在从带有图像的 html 文件创建 pdf。我尝试通过将 html 加载到 WebView 中从 Html 和 UIWebView 创建。以下是用于这两种方法的方法</p>

<p>1.来自html</p>

<pre><code>   func exportHTMLContentToPDF(HTMLContent: String) {
    let printPageRenderer = CustomPrintPageRenderer()

    let printFormatter = UIMarkupTextPrintFormatter(markupText: HTMLContent)
    printPageRenderer.addPrintFormatter(printFormatter, startingAtPageAtIndex: 0)

    let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer)

    pdfData.writeToFile(pdfPath(), atomically: true)

}
</code></pre>

<p>2.从UiWebView通过加载Html</p>

<pre><code>func createPdfFromViewFormatter(viewFormatter:UIViewPrintFormatter) {

    let printPageRenderer = CustomPrintPageRenderer()

    printPageRenderer.addPrintFormatter(viewFormatter, startingAtPageAtIndex: 0)
    let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer)

    pdfData.writeToFile(pdfPath(), atomically: true)


}
</code></pre>

<p>pdf创建方法`</p>

<pre><code>    private func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -&gt; NSData! {
    let data = NSMutableData()

    UIGraphicsBeginPDFContextToData(data, CGRect(x: 0.0, y: 0.0, width: printPageRenderer.printableRect.width, height: printPageRenderer.printableRect.height), nil)


    printPageRenderer.prepareForDrawingPages(NSRange(location: 0, length:printPageRenderer.numberOfPages() ))


    for i in 0..&lt;printPageRenderer.numberOfPages() {


      UIGraphicsBeginPDFPage()

      printPageRenderer.drawPageAtIndex(i, inRect: UIGraphicsGetPDFContextBounds())

    }

    UIGraphicsEndPDFContext()


    return data
}
</code></pre>

<p>问题是 html 中的图像未显示在创建的 pdf 中。但是在 UIWebView 中加载时显示。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我遇到了同样的问题:
<a href="https://stackoverflow.com/questions/40022032/ios-swift-sharing-pdf-documents-with-images" rel="noreferrer noopener nofollow">IOS Swift sharing PDF documents with images</a>
我相信这是一个错误。到目前为止,我发现的唯一解决方案是创建一个我隐藏的虚拟 UIWebView。我在 UIWebView 中加载 HTML,然后创建 PDF。这是我的代码:</p>

<pre><code>    override func viewDidLoad() {
    super.viewDidLoad()

    hiddenWebView.loadHTMLString(htmlText, baseURL: nil)
    hiddenWebView.isHidden = true
}

override func viewDidAppear(_ animated: Bool) {
    pdfDocument = getPdf()
    let tmpDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory())
    let fileURL = tmpDirectoryURL.appendingPathComponent(&#34;document.pdf&#34;)
    pdfDocument.write(to: fileURL, atomically: false)
    documentWebView.loadRequest(URLRequest(url: fileURL))
}
</code></pre>

<p>希望对你有帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于html - 使用 UIViewPrintFormatter 从 Html 创建的 Pdf 不显示本地镜像,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/39764019/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/39764019/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: html - 使用 UIViewPrintFormatter 从 Html 创建的 Pdf 不显示本地镜像