Миграция из QWebKit
в QWebEngine
кажется, намного сложнее, чем утверждали ребята из Qt. С QWebKit я мог легко распечатать веб-страницу через
QWebView->print(&printer);
С QWebEngine
учебный класс QWebEngine
представление не предоставляет метод print()
, Их пример браузера использует класс с именем QWebEngineFrame
который предлагает метод print()
— но в целом QWebEngineFrame
нигде не определено!
Итак, мой вопрос: как мне распечатать страницу, используя QWebEngine
?
Я думаю, что правильный способ использования QWebEngineView::render
метод, потому что QWebEngineView
это QWidget
, Он принимает устройство рисования в качестве первого аргумента, и вы можете передать QPrinter
там для печати.
Обновить: Если вы можете использовать последнюю версию Qt, в Qt 5.8 была добавлена новая функция для печати страницы:
void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback);
На самом деле он сначала печатает для временного PDF с QPrinter
Настройки.
Вот ссылка на Qt документы.
Вы можете прочитать об этом в нашем блог также.
Я бы предложил следующий код (на время):
QTextEdit *textEdit = new QTextEdit;
ui.myWebView->page()->toHtml([textEdit](const QString &result){ textEdit->setHtml(result); });
textEdit->print(somerinter);
textEdit->deleteLater();
Qt 5.7 включает поддержку печати в pdf-файлах для QWebEngine.
использование 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){});