Seite 1 von 1

text mit HTML als Bild generieren

Verfasst: 28. August 2012 10:49
von jw202
Hallo,

ich hätte folgendes Anliegen:

ich möchte ein Programm schreiben, dass einen Text (mit HTML) entgegennimmt und diesen entsprechend der HTML Formatierung auf ein Bild der vorgegebenen Größe überträgt. Ich bin mittlerweile so weit, dass ich mit QPainter ein QImage erstellen kann, was alle Anforderungen erfüllt, außer jene Tatsache mit HTML. Bisher kann ich mit painter.drawText(.....) den Text wunderbar positionieren, Allerdings sollten einzelne Wörter unterschiedliche Farben haben.


Ein Lösungsansatz wäre QTextDocument, was aber relativ schlecht geht, da es hier nur ein einzige Funktion gibt, nämlich

Code: Alles auswählen

void drawContents ( QPainter * p, const QRectF & rect = QRectF() )
diese Funktion ist aber relativ zum vergessen, da es keine Möglichkeit gibt, um den Text zu positionieren. Die Funktion scheint relativ unflexibel zu sein, da der Inhalt vom QTextDocument beim zu rendernden Bild grundsätzlich rechts oben positioniert wird (obwohl das bei mir ausdrücklich nicht gewünscht wird). Außerdem gibt es keine sinnvolle Methode um die Größe der Ausgabe zu erhalten. Ich hätte jedoch gern, dass der eingegebene HTML-Text zentriert auf einem QImage-Formular an der entsprechenden Position zentriert dargestellt wird.


Ich bitte um Vorschläge?

PS.: grundsätzlich ist HTML nicht nötig, falls es einen brauchbaren Ersatz gibt. Ich bräuchte theoretisch nur fett, kursiv, unterstrichen, durchgestrichen, freie farbwahl und font-face. Allerdings ist wichtig: diese Attribute sollten sich nicht nur auf den Gesamttext beziehen, sondern auch einzelne Wörter oder Sätzer hervorheben können.

Re: text mit HTML als Bild generieren

Verfasst: 28. August 2012 15:07
von conan2011
Bevor du einen eigenen HTML-Interpreter implementierst, hast du dir schonmal die Klasse QWebKit angeschaut?

Re: text mit HTML als Bild generieren

Verfasst: 29. August 2012 11:30
von jw202
hey, danke für die gute Idee. Ich arbeite schon daran

Momentan existiert ein neues Problem. Wenn ich den HTML rendere, dann geht der Text über die Größe der QWebView hinaus. Wie kann ich einstellen, wie groß die Seite ist?


LG