2009-08-03 2 views
3

Beim Drucken über WebKit wird der Ausgabe automatisch ein Schrumpfungsfaktor zugewiesen. Gibt es eine Möglichkeit, das Schrumpfen beim Drucken zu deaktivieren, vorzugsweise ohne die WebKit-Quelle zu ändern?
Ich denke, es ist möglich, mit Qt 4.6 Trunk und SetFixedLayout mit einer höheren Höhe, um WebKit nicht zu schrumpfen, aber ich habe es noch nicht versucht. Vielleicht gibt es einen Weg, um das zugrunde liegende WebKit zu bekommen, damit ich das machen kann?Qt WebKit Printing Shrink Factor

EDIT: Chrome befasst sich damit, die Höhe des Drucklayouts zu erweitern.
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/print_web_view_helper.cc?view=markup

Antwort

3

Es ist nicht möglich mit QT 4.5 zu tun, da ich vor ein paar Monaten selbst auf dieses Problem stieß. Ich weiß aber jetzt nicht über Qt 4.6.

Der Täter ist in src/3rdparty/webkit/WebCore/page/PrintContext.cpp in Zeile 115 und 126. Wie Sie sehen, ist der Schrumpfungsfaktor nicht einmal konstant, sondern ist so berechnet, dass der Inhalt am besten auf dem verfügbaren Druckbereich passt.

Die Einstellung beider Konstanten zur Steuerung des zulässigen Schrumpfbereichs (PrintingMinimumShrinkFactor und PrintingMaximumShrinkFactor) bis 1 behebt das Problem. Ich habe das Problem damals sehr gründlich analysiert und keine bessere Lösung gefunden, als Qt zu patchen.

+0

Wäre cool gewesen, die Namen der Variablen aufzulisten, die Sie als Zeile 103 geändert haben: do {und 109 ist: printedPagesHeight + = currPageHeight; Ich nehme an, die Werte zu ändern sind: const float PrintingMinimumShrinkFactor = 1.25f; und const float PrintingMaximumShrinkFactor = 2.0f; Welche sind jetzt auf den Linien 120 und 126. Gefunden in der Methode namens: \t void PrintContext :: begin (Schwimmerbreite) .. –

+0

Ja, Sie haben Recht. Ich habe diesen Teil meiner Antwort geklärt. – sebasgo