QWebEngine: imprimir una página?

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){});