2009-08-03 94 views
3

從WebKit打印時,它似乎會自動在輸出上施加一個收縮因子。有沒有辦法在打印時禁用收縮,最好不要修改WebKit源代碼?
我認爲這可能是使用Qt 4.6中繼和使用setFixedLayout更高的高度,欺騙WebKit不縮小,但我還沒有嘗試過。也許有一種方法可以獲得底層的WebKit,所以我可以做到這一點?Qt WebKit Printing Shrink Factor

編輯: Chrome通過擴展打印佈局高度來解決這個問題。
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/print_web_view_helper.cc?view=markup

回答

3

對於QT 4.5來說這是不可能的,因爲幾個月前我遇到了這個問題。不過,我現在不瞭解Qt 4.6。

罪魁禍首在第012行和第126行的src/3rdparty/webkit/WebCore/page/PrintContext.cpp中。正如您所看到的,收縮因子甚至不是恆定的,而是經過計算以使內容在可用打印區域上最適合。

將控制允許縮小範圍的兩個常量(PrintingMinimumShrinkFactorPrintingMaximumShrinkFactor)設置爲1可解決此問題。當時我對問題進行了深入分析,並沒有提出比修補Qt更好的解決方案。

+0

本來很酷的列出了你改變的變量的名字,如第103行:do {和109 is:printedPagesHeight + = currPageHeight; 我假設值的變化是: const float PrintingMinimumShrinkFactor = 1.25f; 和 const float PrintingMaximumShrinkFactor = 2.0f; 現在分別在線120和126上。在方法中找到名爲:\t void PrintContext :: begin(float width).. – 2011-11-14 12:32:03