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
[NativeScript中用于PDF打印的Android实现
在没有 Adobe 的情况下使用 Ghostscript 在 Ricoh MP 4000 打印机上批量打印 PDF 文件