QWebEnginePage 打印到 PDF 不会像 Google Chrome 一样打印 PDF 中的可选文本

Posted

技术标签:

【中文标题】QWebEnginePage 打印到 PDF 不会像 Google Chrome 一样打印 PDF 中的可选文本【英文标题】:QWebEnginePage print to PDF doesn't print selectable text in the PDF like Google Chrome 【发布时间】:2018-05-15 12:15:32 【问题描述】:

我正在尝试使用 print() 方法和此方法所需的 QPrinter 实例从 QWebEngineView 打印 html 文档。

我遇到的问题是在生成的 PDF 中我无法选择任何可用的文本。 PDF 在某种程度上是普通的,就像 PDF 文件中的图片一样。 考虑到 Qt 的 WebEngine 与 Chromium (Google Chrome) 中的 WebEngine 相同,它们的行为方式应该相同,但在从 Chrome 导出的 PDF 上,我可以选择文本。 有没有办法控制 pdf 的导出方式?

附:我没有使用 printToPdf() 方法,因为它会生成一个非常大的 pdf(大约 5MB)。

【问题讨论】:

您的打印效果如何?你的打印代码是什么? chrome 使用不同的协议来打印“chrome://print”,我们在 QWebEngieView 中无法访问它,至少在 qml 中我确信它 【参考方案1】:

以页面/pdf质量为代价,可以将QWebEngineView页面注入html,并将html加载到可以打印的QTextDocument..

webview->page()->toHtml([this](const QString& result)handlePagePrint(result););

void handlePagePrint(QString result)

    QTextDocument td;
    td.setHtml(result);
    td.print(&printer);

【讨论】:

这不会是我们希望在打印预览中看到的完全相同的页面,因为打印样式与“在 css 中指定”的页面样式不同。

以上是关于QWebEnginePage 打印到 PDF 不会像 Google Chrome 一样打印 PDF 中的可选文本的主要内容,如果未能解决你的问题,请参考以下文章

将 QWebEngineHistory 保存并加载到 QWebEnginePage

怎么把多张cad打印成一张pdf

html2pdf取消隐藏后不会打印隐藏的div?

[NativeScript中用于PDF打印的Android实现

在没有 Adob​​e 的情况下使用 Ghostscript 在 Ricoh MP 4000 打印机上批量打印 PDF 文件

word文档转换成pdf内容格式会变吗