从 WebKit 打印时,它似乎会自动对输出强加一个收缩因子。有没有办法在打印时禁用收缩,最好不修改 WebKit 源代码?
我认为可以使用 Qt 4.6 主干并使用具有更长高度的 setFixedLayout 来诱使 WebKit 不缩小,但我还没有尝试过。也许有一种方法可以访问底层的 WebKit,这样我就可以做到这一点?
编辑:Chrome 通过扩展打印布局高度来处理这个问题。
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/print_web_view_helper.cc?view=markup
使用 QT 4.5 是不可能的,因为几个月前我自己也遇到了这个问题。不过,我现在不了解 Qt 4.6。
罪魁祸首在src/3rdparty/webkit/WebCore/page/PrintContext.cpp中的第 115 和 126 行。如您所见,收缩因子甚至不是常数,而是经过计算以使内容最适合可用打印区域。
设置两个常量来控制允许的收缩范围 (PrintingMinimumShrinkFactor和PrintingMaximumShrinkFactor) 以1解决问题。我当时非常彻底地分析了这个问题,但我没有想出比修补 Qt 更好的解决方案。