gpt4 book ai didi

ios - 在 WKWebView 中使用图像从 HTML 生成 PDF

转载 作者:搜寻专家 更新时间:2023-10-31 19:27:28 25 4
gpt4 key购买 nike

我正在尝试在我的应用中生成发票 PDF。这个想法是可以打印发票,然后生成 PDF 以稍后通过电子邮件发送。

一切正常,包括打印格式,但当我导出为 PDF 时,PDF 中的 Logo 图像消失了。

这是我在 WKWebView 中的原始 HTML

enter image description here这是我的可打印版本

但是当我导出为 PDF 时,它看起来像这样: enter image description here Logo 丢失。

我的 HTML 是这样的:

        <tr>
<td>
<table class="headerTable">
<tr>
<td width="33%"><img src="logo.png" style="width:80%; max-width:250px"></td>
<td width="1%"></td>
<td width="33%"><b>Realengo</b><br>Avenida Santa Cruz 1251<br>Realengo - Rio de Janeiro<br>Telefone: (21) 2401-0271</td>
<td width="33%"><b>Centro</b><br>Rua Buenos Aires 111<br>Centro - Rio de Janeiro<br>Telefone: (21) 2151-1189</td>
</tr>
</table>
</td>
</tr>

有人知道为什么我的图片不是 PDF 格式吗?

最佳答案

swift 4.2信用:http://www.swiftdevcenter.com/create-pdf-from-uiview-wkwebview-and-uitableview/

extension WKWebView {

// Call this function when WKWebView finish loading
func exportAsPdfFromWebView() -> String {
let pdfData = createPdfFile(printFormatter: self.viewPrintFormatter())
return self.saveWebViewPdf(data: pdfData)
}

func createPdfFile(printFormatter: UIViewPrintFormatter) -> NSMutableData {

let originalBounds = self.bounds
self.bounds = CGRect(x: originalBounds.origin.x, y: bounds.origin.y, width: self.bounds.size.width, height: self.scrollView.contentSize.height)
let pdfPageFrame = CGRect(x: 0, y: 0, width: self.bounds.size.width, height: self.scrollView.contentSize.height)
let printPageRenderer = UIPrintPageRenderer()
printPageRenderer.addPrintFormatter(printFormatter, startingAtPageAt: 0)
printPageRenderer.setValue(NSValue(cgRect: UIScreen.main.bounds), forKey: "paperRect")
printPageRenderer.setValue(NSValue(cgRect: pdfPageFrame), forKey: "printableRect")
self.bounds = originalBounds
return printPageRenderer.generatePdfData()
}

// Save pdf file in document directory
func saveWebViewPdf(data: NSMutableData) -> String {

let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let docDirectoryPath = paths[0]
let pdfPath = docDirectoryPath.appendingPathComponent("webViewPdf.pdf")
if data.write(to: pdfPath, atomically: true) {
return pdfPath.path
} else {
return ""
}
}
}

extension UIPrintPageRenderer {

func generatePdfData() -> NSMutableData {
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, self.paperRect, nil)
self.prepare(forDrawingPages: NSMakeRange(0, self.numberOfPages))
let printRect = UIGraphicsGetPDFContextBounds()
for pdfPage in 0 ..< self.numberOfPages {
UIGraphicsBeginPDFPage()
self.drawPage(at: pdfPage, in: printRect)
}
UIGraphicsEndPDFContext();
return pdfData
}
}

关于ios - 在 WKWebView 中使用图像从 HTML 生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49824797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com