0

如何打印WKWebView使用printOperation(with:)的内容?

第一次尝试

let info = NSPrintInfo.shared
let operation = printOperation(with: info)
operation.run()

但是我收到一条消息崩溃了:

[Printing] 错误:NSPrintOperation 视图的框架在 knowPageRange: 返回之前未正确初始化。(WKPrintingView)

但是viewon 的属性NSPrintOperation是只读的。

第二次尝试

相反,如果我尝试以模态方式运行操作并禁用打印面板,如下所示:

operation.showsPrintPanel = false

guard let window = webView.window else { return }

operation.runModal(for: window, delegate: nil, didRun: nil, contextInfo: nil)

我收到一条带有消息的警报:

要打印此文件,您必须设置打印机。

的确,我还没有设置打印机,但是打印(即保存)到 PDF 呢?

4

1 回答 1

0

我意识到你可以修改视图的框架NSPrintOperation。它必须是至少的CGRect/ ,显然它会在之后调整自己的大小,并且位置根本不重要,这最终对我有用:NSRect100x100

let info = NSPrintInfo.shared
let operation = webView.printOperation(with: info)
operation.view?.frame = webView.bounds

guard let window = webView.window else { return }

operation.runModal(for: window, delegate: nil, didRun: nil, contextInfo: nil)

于 2021-11-04T13:20:08.857 回答