Seite 1 von 1
PDF aus QTextEdit heraus erstellen - Formatierungsprobleme
Verfasst: 12. August 2009 15:10
von tribari
Hallo allerseits,
ich habe ein QTextEdit und füge in dieses diversen Text mit Hilfe der insertHtml() Methode ein.
Da ich nun Html-Code verwenden kann habe ich meinen Text formatiert wie folgt:
<h1>Überschrift</h1><br><b>Setting:</b> Value<br>
Das klappt auch soweit...
mit m_pTextEdit->document()->print() drucke ich dann das Dokument auf PDF aus... auch kein Thema.
Aber wie bekomme ich es hin, das ich evtl.
ein DIV erstelle welches ich rechts im Dokument floaten lasse?
Danke schonmal für die Tips
Verfasst: 13. August 2009 07:26
von CaptnChaos
Das ist doch HTML spezifisch und hat nix mit Qt zu tun oder?
Verfasst: 13. August 2009 08:53
von upsala
Außerdem gibts noch eine Übersicht was von Qt unterstützt wird:
http://doc.trolltech.com/4.4/richtext-html-subset.html
Verfasst: 13. August 2009 11:07
von tribari
danke für die Antworten...
hatte schon die Unterstützten HTML Tags gefunden...
hatte es auch schon so ausprobiert
<div float='right'>Text</div>
aber da dies nicht klappte wunderte ich mich doch arg

Jetzt so im Nachhinein betrachtet merk ich auch das dies garkein gültiger Html-Code ist *pfeif*
Ich werde es noch einmal mit der oben gegebenen Zeile probieren...
danke schonmal

Verfasst: 13. August 2009 11:14
von tribari
es geht leider immer noch nicht
Der Text wird nachwievor links auf dem PDF-Dokument angezeigt...
Noch jemand eine Idee wodran es liegen könnte?
Verfasst: 13. August 2009 11:34
von CaptnChaos
QTextEdit scheint das nicht zu unterstützen. Je nachdem was du vorhast nimm QWebView. Da wirst du dann keine Probleme haben.
Verfasst: 13. August 2009 13:41
von tribari
sorry - aber QWebView steht mir leider nicht zur Verfügung (QT 4.3.4).
Leider ist ein Umstieg derzeit nicht möglich, da ich mit Librarys von externen Entwicklern arbeite, welche auf dieser Version von QT arbeiten.
Ich dachte QTextDocument unterstützt das Html-Subset... und der QTextEdit dient nur zur Darstellung des ganzen.
Ne Anzeige auf der Oberfläche benötige ich nicht - es soll nur ein Protokoll im PDF-Format erzeugt werden, welches spezifische Informationen enthält.
Dieses würde ich natürlich gerne "formatiert" haben - daher hatte ich versucht über die Html-Tags sozusagen das ganze in Tabellen und/oder Divs zu realisieren....
Ich bekomme es nur hin, Text untereinander zu schreiben... den kann ich dann auch färben, fett machen usw. ... aber die rechte Hälfte der Seite bleibt dabei ungenutzt....
Verfasst: 13. August 2009 20:19
von Mani99
Poste doch mal deinen kompletten html code, event. kann man da was richten!
Verfasst: 14. August 2009 10:27
von tribari
So ich habe mir nochmal eine kleine Testumgebung geschaffen um nachvollziehen zu können warum dieses nicht klappen will.
Einfach ein Widget mit einem QTextEdit Feld - und Einem Pushbutton zum speichern.
Ich gebe Html-Code in mein TextEdit-Feld ein - drücke den Speichern Button und folgender Code wird ausgeführt:
Code: Alles auswählen
QString text;
text = ui.textEdit->toPlainText();
doc = new QTextDocument();
doc->setHtml(text);
doc->print(&printer);
QFile files("test.html");
if (!files.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QTextStream out(&files);
out << doc->toHtml() << "\n";
files.close();
Ich erstelle mir neben dem Pdf-Dokument welches im per QPrinter drucke noch eine Html-Datei welche mir den Html-Code aufzeigen soll - welcher nun dabei Herauskommt.
Wenn ich nun folgenden Html-Code im TextEdit eingebe:
Code: Alles auswählen
<div style="float:left;">
<b>Überschrift 1</b><br/>
Hallo Welt<br/>
Hallo Welt<br/>
</div>
<div style="float:right;">
<b>Überschrift 2</b><br/>
Hallo Welt<br/>
Hallo Welt<br/>
</div>
Erhalte ich eine Html-Datei mit folgendem Inhalt:
Code: Alles auswählen
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Überschrift 1</span><br />Hallo Welt<br />Hallo Welt<br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Überschrift 2</span><br />Hallo Welt<br />Hallo Welt<br /></p></body></html>
Sowohl bold und div tags werden komplett verschluckt und umgeformt... und genau daran hapert es.
Wie bekomme ich es sinnvoll hin, ein vernünftig formatiertes PDF-Dokument zu erzeugen?