QWebEnginePage.print 使用 QPrintPreviewDialog 导致预览为空

QWebEnginePage.print with QPrintPreviewDialog results in empty preview

我有一个程序过去使用 QWebKit 在对话框中显示和打印自定义生成的 HTML 报告,现在,我想将整个程序转换为 QWebEngine。到目前为止一切正常,只有打印不行!

到目前为止,我使用 QWebView.print() 将整个 HTML 数据移交给 QPrintPreviewDialog,这根本不是问题。现在,据我了解,我认为我必须使用 QWebEngineView.QWebEnginepage.print(printer object, callback) 来实现相同的目的。

遗憾的是,到目前为止我尝试的一切都没有奏效。 QPrintPreviewDialog 的预览窗格始终保持为空,打印完成后返回给回调的结果始终为 False - 尽管打印机对象始终有效,即使在回调中也是如此。

我尝试了不同的东西,它们以某种方式起作用,因此我认为 QWebEnginePage.print() 函数有问题或 PyQt 中有错误,但事实上,我没有,也许它我是不是做错了什么。

成功的解决方法(我不喜欢 ;-)):

  1. 不要使用 QPrintPreviewDialog,而是通过 QWebEngineView.QWebEnginePage.printToPDF(filename) 生成输出:有效!

  2. 生成一个临时 QTextedit 对象并通过 QPrintPreviewDialog 打印:也有效,但格式错误 HTML 在我的例子中...

有人可以告诉我,如果我在这里假设有问题,或者是否有关于如何使用 QWebEngineView 通过 QPrintPreviewDialog 打印 HTML 的下降示例?

QtWebEngine 当前不支持打印到打印预览,请参阅 QTBUG-57982。不过直接打印到 QPrinter 是可行的。