QWebEngine:打印页面?
QWebEngine: print a page?
从 QWebKit
到 QWebEngine
的迁移似乎比 Qt 人员声称的要复杂得多。使用 QWebKit 我可以通过
轻松打印网页
QWebView->print(&printer);
用QWebEngine
class QWebEngine
视图没有提供方法print()
。他们的浏览器示例使用名为 QWebEngineFrame
的 class,它提供了一个方法 print()
- 但整个 QWebEngineFrame
未在任何地方定义!
所以我的问题是:如何使用 QWebEngine
打印页面?
我认为使用 QWebEngineView::render
方法的正确方法是因为 QWebEngineView
是 QWidget
。它接受绘画设备作为第一个参数,您可以将 QPrinter
传递给那里进行打印。
更新: 如果你可以使用最新版本的Qt,在Qt 5.8中新增了打印页面的功能:
void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback);
实际上它首先使用 QPrinter
设置打印到临时 PDF。
这里是 link 到 Qt docs.
您也可以在我们的 blog 中阅读相关内容。
我会提供以下代码(暂时):
QTextEdit *textEdit = new QTextEdit;
ui.myWebView->page()->toHtml([textEdit](const QString &result){ textEdit->setHtml(result); });
textEdit->print(somerinter);
textEdit->deleteLater();
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);
QWebView->page()->print(&printer, [=](bool){});
从 QWebKit
到 QWebEngine
的迁移似乎比 Qt 人员声称的要复杂得多。使用 QWebKit 我可以通过
QWebView->print(&printer);
用QWebEngine
class QWebEngine
视图没有提供方法print()
。他们的浏览器示例使用名为 QWebEngineFrame
的 class,它提供了一个方法 print()
- 但整个 QWebEngineFrame
未在任何地方定义!
所以我的问题是:如何使用 QWebEngine
打印页面?
我认为使用 QWebEngineView::render
方法的正确方法是因为 QWebEngineView
是 QWidget
。它接受绘画设备作为第一个参数,您可以将 QPrinter
传递给那里进行打印。
更新: 如果你可以使用最新版本的Qt,在Qt 5.8中新增了打印页面的功能:
void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback);
实际上它首先使用 QPrinter
设置打印到临时 PDF。
这里是 link 到 Qt docs.
您也可以在我们的 blog 中阅读相关内容。
我会提供以下代码(暂时):
QTextEdit *textEdit = new QTextEdit;
ui.myWebView->page()->toHtml([textEdit](const QString &result){ textEdit->setHtml(result); });
textEdit->print(somerinter);
textEdit->deleteLater();
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);
QWebView->page()->print(&printer, [=](bool){});