2010-06-04 3 views
5

Ich nutze WebKit von QWebFrame, um HTML-Seiten in PDF zu konvertieren. Ist es möglich, eine zusätzliche Rendering-Logik anzuwenden, bevor die Seite an den QPrinter gesendet wird?In Qt, kann ich QWebFrame :: print() zusätzliche Rendering-Layer liefern?

Was ich tun möchte, ist in der Lage, Links und Formularsteuerelemente in HTML zu interaktiven Pendants in PDF zu konvertieren, anstatt nur ein Vektor-Grafik-Dump?

Vielen Dank für jede Anleitung!

Antwort

1

Ich fand eine mögliche Lösung mit QWebFrame::renderTreeDump() und QWebFrame::findAllElements() (neu in Qt 4.6).

Es ist nicht ganz "zusätzliche Rendering-Ebenen liefern," aber was ich tun will: Ich rufe findAllElements(), um den DOM-Baum zu kratzen, wenden Sie jede gewünschte Logik durch Festlegen der Attribute des HTML-Elements.

Für kompliziertere Operationen, wie das Ersetzen von Formularsteuerelementen durch meinen eigenen Renderprozess, muss ich sowohl den DOM-Baum als auch den Renderbaum abkratzen, an den DOM-Baum basteln, damit das Element nicht an QPrinter gesendet wird. Am Ende kratze ich die resultierende PDF-Datei, injiziere meine eigenen gerenderten für Kontrollen mit den Informationen, die ich aus dem Renderbaum und dem DOM-Baum erhalten habe.

Das fühlt sich unnötig kompliziert an. Hat jemand eine elegantere Lösung für dieses Problem?