代码之家  ›  专栏  ›  技术社区  ›  kizzx2

在qt中,我是否可以qwebframe::print()提供其他渲染层?

  •  5
  • kizzx2  · 技术社区  · 16 年前

    我正在利用来自QWebFrame的WebKit将HTML页面转换为PDF。在页面发送到qprinter之前,是否可以应用一些附加的呈现逻辑?

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

    非常感谢您的指导!

    1 回复  |  直到 16 年前
        1
  •  1
  •   kizzx2    16 年前

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

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

    对于更复杂的操作,例如用我自己的呈现过程替换表单控件,我需要同时清除DOM树和呈现树,修补DOM树,这样元素就不会被发送到 QPrinter . 最后,我使用从渲染树和DOM树中获得的信息,对生成的PDF文件进行刮削,为控件注入自己的渲染。

    这感觉不必要的复杂。有人能更优雅地解决这个问题吗?