Vin*_*los 4 pdf xcode ios swift wkwebview
我正在尝试在我的应用程序中生成发票PDF。想法是可以打印发票,而不是生成PDF,以便以后通过电子邮件发送。
一切都在工作,包括打印格式,但是当我导出为PDF时,PDF中的徽标图像消失了。
这是WKWebView中我的原始HTML
我的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>
Run Code Online (Sandbox Code Playgroud)
有人知道为什么我的图像没有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
}
}
Run Code Online (Sandbox Code Playgroud)
WKWebView iOS14 已支持导出PDF
import PDFKit
let config = WKPDFConfiguration()
webView.createPDF(configuration: config) { result in
switch result {
case .success(let data):
print("create pdf success: \(data)")
case .failure(let error):
print("create pdf failure: \(error)")
}
}
Run Code Online (Sandbox Code Playgroud)
https://developer.apple.com/documentation/webkit/wkwebview/3650490-createpdf
| 归档时间: |
|
| 查看次数: |
1710 次 |
| 最近记录: |