【发布时间】:2020-12-13 02:29:33
【问题描述】:
我知道如何获取 webview 的 html,但就我而言,很多 html 只是加载内容的 javascript。有没有办法获取窗口中显示的内容?我登录了 webview.enclosedScrollView.documentView 并返回 nil。
有没有办法捕捉渲染的内容?
【问题讨论】:
我知道如何获取 webview 的 html,但就我而言,很多 html 只是加载内容的 javascript。有没有办法获取窗口中显示的内容?我登录了 webview.enclosedScrollView.documentView 并返回 nil。
有没有办法捕捉渲染的内容?
【问题讨论】:
您可以从 HTML 生成 PDF - 请参阅以下网站: https://coderwall.com/p/gssuka/rendering-html-pdf-report-for-printing-from-uiwebview
我目前正在将该代码与 WKWebview 一起使用。首先阅读文章,因为您将需要 PRV300dpiPrintRenderer 类(您可能需要将其更新为更新的 Swift 语法)。我的代码:
func printHTMLContents() -> NSData {
/* Generates PDF from HTML */
self.setDictationIcon(display: false)
let A4Size = CGSize(width: 2480, height: 3504) // A4 in pixels at 300dpi
let renderer = PRV300dpiPrintRenderer()
let formatter = webView.viewPrintFormatter()
formatter.perPageContentInsets = UIEdgeInsets.zero
renderer.addPrintFormatter(formatter, startingAtPageAt: 0)
let topPadding: CGFloat = 115.0
let bottomPadding: CGFloat = 117.0
let leftPadding: CGFloat = 100.0
let rightPadding: CGFloat = 100.0
let printableRect = CGRect.init(x: leftPadding, y: topPadding, width: A4Size.width - leftPadding - rightPadding, height: A4Size.height - topPadding - bottomPadding)
let A4Rect = CGRect.init(x: 0, y: 0, width: A4Size.width, height: A4Size.height)
renderer.setValue(NSValue.init(cgRect: A4Rect), forKey: "paperRect")
renderer.setValue(NSValue.init(cgRect: printableRect), forKey: "printableRect")
let data = renderer.pdfData()
return data
}
【讨论】: