Dokumente drucken und exportieren

Alles rund um die Programmierung mit Qt
Antworten
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Dokumente drucken und exportieren

Beitrag von odt »

Hallo Miteinander

Ich stehe gerade vor der Herausforderung, Dokumente zu drucken und exportieren. Wie habt Ihr dies in Euren Applikationen gelöst?

Viele Grüsse, Reto


Es gibt drei verschiedene Dokumentarten:
- Strukturierte Dokumente (z.B. Handbuch): Mehrere Seitenformatierungen pro Dokument, Kopf- und Fusszeilen, Flusskontrolle (Absätze nicht trennen, mit Folgendem zusammenhalten, Schusterjungen und Hurenkinder), Einrückungen (erste Zeile), Tabulatoren, Aufzählungen, Tabellen, Inhaltsverzeichnis.
- Gelayoutete Dokumente (z.B. Rechnung): Der Seitenumbruch ist programmgesteuert, d.h. bei einem Seitenumbruch muss ich das Zwischentotal ausgeben.
- Tabellarische Dokumente (z.B. individuelle Auswertungen, Adressliste) analog Calc oder Excel

Die Dokumente werden aus einem portablen (Qt, Ux, Win) Programm sowohl server- als auch clientseitig generiert. Eine manuelle Nachbearbeitung ist nicht vorgesehen. Die Dokumente sollen gedruckt und in den folgenden Formaten exportiert werden können: PDF, OpenDocument (odt, odf), HTML, rtf, doc, docx. Zusätzlich sollte ich clientseitig noch in die Zwischenablage kopieren können, damit im Libre- und MS-Office (Word, Excel) eingefügt werden kann.

QTextDocument unterstützt leider keine verschiedenen Seitenformatierungen pro Dokument. XSL-FO schreckt mich ab, da ich keine Logik (Subtotale berechnen) ins XML packen möchte. Zudem möchte ich kein Java voraussetzen. Da das Programm auch auf einem Ux-Server (ohne X) laufen soll, fällt die exklusive Option, Libre- oder MS-Office zu Fernsteuern weg. RTK::Report ToolKit ist Ux-spezisch. eXaro ist relativ wenig dokumentiert. kugar muss ich noch anschauen.

Momentan favorisiere ich, die Dokumente via QPainter zu „zeichnen“. Damit habe ich den Seitenumbruch „im Griff“ und kann drucken und PDF's erstellen. Der OpenDocument-Export scheint auch möglich (qtextodfwriter.cpp hat rund 800 Codezeilen). HTML ist eh simpel. Rtf und die Microsoft-Formate sind ähnlich komplex. Clientseitig könnte ich via Fernsteuerung ins Office exportieren.
Antworten