QWebEngine:打印一页?

时间:2015-09-22 08:20:14

标签: c++ qt printing qt5 qt5.5

QWebKitQWebEngine的迁移似乎比Qt家伙声称的要复杂得多。有了QWebKit,我可以通过

轻松打印网页
QWebView->print(&printer);

使用QWebEngineQWebEngine视图不提供方法print()。他们的浏览器示例使用名为QWebEngineFrame的类,它提供方法print() - 但整个QWebEngineFrame未在任何地方定义!

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

4 个答案:

答案 0 :(得分:9)

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

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

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

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

以下是Qt docs的链接。

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

答案 1 :(得分:2)

我会提供以下代码(暂时):

    QTextEdit *textEdit = new QTextEdit;
    ui.myWebView->page()->toHtml([textEdit](const QString &result){ textEdit->setHtml(result); });
    textEdit->print(somerinter);
    textEdit->deleteLater();

答案 2 :(得分:2)

Qt 5.7包括对QWebEngine的pdf文件的打印支持。

使用printToPdf功能导出pdf文件中的当前页面。例如:

localStorage[myVarName] = value;   

答案 3 :(得分:1)

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