QWebEngine: распечатать страницу?

Миграция из QWebKit в QWebEngine кажется, намного сложнее, чем утверждали ребята из Qt. С QWebKit я мог легко распечатать веб-страницу через

QWebView->print(&printer);

С QWebEngine учебный класс QWebEngine представление не предоставляет метод print(), Их пример браузера использует класс с именем QWebEngineFrame который предлагает метод print() — но в целом QWebEngineFrame нигде не определено!

Итак, мой вопрос: как мне распечатать страницу, используя QWebEngine?

9

Решение

Я думаю, что правильный способ использования QWebEngineView::render метод, потому что QWebEngineView это QWidget, Он принимает устройство рисования в качестве первого аргумента, и вы можете передать QPrinter там для печати.

Обновить: Если вы можете использовать последнюю версию Qt, в Qt 5.8 была добавлена ​​новая функция для печати страницы:

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

На самом деле он сначала печатает для временного PDF с QPrinter Настройки.

Вот ссылка на Qt документы.

Вы можете прочитать об этом в нашем блог также.

8

Другие решения

Я бы предложил следующий код (на время):

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

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);
2

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

1
По вопросам рекламы [email protected]