La migración de QWebKit
a QWebEngine
parece ser mucho más complicada de lo que afirman los individuos de Qt. Con QWebKit pude imprimir una página web fácilmente a través de
QWebView->print(&printer);
Con la clase QWebEngine
vista QWebEngine
no proporciona un método print()
. El ejemplo de su navegador utiliza una clase llamada QWebEngineFrame
que ofrece un método print()
, ¡pero el QWebEngineFrame
completo no está definido en ninguna parte!
Entonces, mi pregunta: ¿cómo QWebEngine
una página usando QWebEngine
?
Creo que la forma correcta de usar el método QWebEngineView::render
es porque QWebEngineView
es un QWidget
. Acepta el dispositivo de pintura como primer argumento y puede pasar QPrinter
allí para imprimir.
Actualización : si puede usar la última versión de Qt, en Qt 5.8 se agregó una nueva función para imprimir la página:
void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback);
En realidad, primero se imprime en PDF temporal con la configuración de QPrinter
.
Aquí está el enlace a los documentos Qt.
Puedes leer sobre esto en nuestro blog también.
Ofrecería el siguiente código (por un tiempo):
QTextEdit *textEdit = new QTextEdit; ui.myWebView->page()->toHtml([textEdit](const QString &result){ textEdit->setHtml(result); }); textEdit->print(somerinter); textEdit->deleteLater();
Qt 5.7 incluye soporte de impresión en archivos pdf para QWebEngine .
Utilice la función printToPdf para exportar la página actual en un archivo pdf. Ejemplo:
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){});