10

QWebKit从to的迁移QWebEngine似乎比 Qt 家伙声称的要复杂得多。使用 QWebKit,我可以通过以下方式轻松打印网页

QWebView->print(&printer);

QWebEngineQWebEngine视图不提供方法print()。他们的浏览器示例使用了一个名为的类,该类QWebEngineFrame提供了一种方法print()——但整体QWebEngineFrame没有在任何地方定义!

所以我的问题是:如何使用 打印页面QWebEngine

4

4 回答 4

9

我认为使用QWebEngineView::render方法的正确方法是因为QWebEngineViewQWidget. 它接受绘画设备作为第一个参数,您可以通过QPrinter那里进行打印。

更新:如果您可以使用最新版本的 Qt,在 Qt 5.8 中添加了打印页面的新功能:

void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback);

实际上,它首先使用QPrinter设置打印到临时 PDF。

这是 Qt文档的链接。

您也可以在我们的博客中了解这一点。

于 2015-09-22T08:40:38.090 回答
3

我会提供以下代码(一段时间):

    QTextEdit *textEdit = new QTextEdit;
    ui.myWebView->page()->toHtml([textEdit](const QString &result){ textEdit->setHtml(result); });
    textEdit->print(somerinter);
    textEdit->deleteLater();
于 2016-05-05T12:17:01.140 回答
2

Qt 5.7 在QWebEngine的 pdf 文件中包含打印支持。

使用printToPdf函数将当前页面导出为 pdf 文件。例子:

const QString fileName = QFileDialog::getSaveFileName(0,
                                                tr("Save pdf"),
                                                ".",
                                                tr("PDF Files (*.pdf)"));
if (fileName.isEmpty()) {
    return;
}
ui->webView->page()->printToPdf(fileName);
于 2016-07-13T12:25:00.903 回答
1

QWebView->page()->print(&printer, [=](bool){});

于 2018-02-02T17:36:49.830 回答