在Qt中,我可以在QWebFrame :: print()中提供额外的渲染层吗?

kiz*_*zx2 5 pdf qt rendering webkit

我正在利用QWebFrame中的WebKit将HTML页面转换为PDF.在将页面发送到QPrinter之前是否可以应用一些额外的渲染逻辑?

我想要做的是能够将HTML中的链接和表单控件转换为PDF中的交互式对应,而不仅仅是矢量图形转储?

非常感谢任何指导!

kiz*_*zx2 1

我找到了一个可能的解决方案,使用QWebFrame::renderTreeDump()and QWebFrame::findAllElements()(Qt 4.6 中的新功能)。

它并不完全“提供额外的渲染层”,但完成了我想做的事情:我调用findAllElements()来抓取 DOM 树,通过设置 HTML 元素的属性来应用我想要的任何逻辑。

对于更复杂的操作,例如用我自己的渲染过程替换表单控件,我需要抓取 DOM 树和渲染树,修补 DOM 树,以便元素不会被发送到QPrinter. 最后,我抓取生成的 PDF 文件,使用从渲染树和 DOM 树获得的信息注入我自己渲染的控件。

这感觉不必要地复杂。有谁对这个问题有更优雅的解决方案吗?