Ich habe eine WSGI-Anwendung, die Rechnungen generiert und sie als PDF speichert.ODT/DOC (X) generieren und in PDF konvertieren, ohne OO.o/MS
Bisher habe ich ähnliche Probleme mit FPDF (oder Äquivalenten) gelöst, die PDF von Grund auf wie eine GUI zu generieren. Leider bedeutet das, dass die gesamte Formatierungslogik (Positionierung von Kopf- und Fußzeilen und Inhalten, Styling) in der Anwendung liegt, wo sie eigentlich nicht sein sollte.
Da die Vorlagen bereits in Office-Formaten (ODT, DOC, DOCX) existieren, würde ich diese lieber als Basis verwenden und den eigentlichen Inhalt ausfüllen. Ich habe das Appy-Framework gefunden, das ziemlich genau das mit annotierten ODT-Dateien macht.
Das lässt immer noch das größere Problem offen, tho: Konvertieren von ODT (oder DOC oder DOCX) in PDF. Auf einem Server. Linux läuft. Ohne GUI-Bibliotheken. Und damit ohne OO.o oder MS Office.
Ist das überhaupt möglich oder ist es besser, das Styling in meinem Code zu behalten?
Der eigentliche Inhalt, der ausgefüllt werden würde, ist tatsächlich ziemlich eingeschränkt: ein paar Absätze, von denen einige optional sein können, eine Überschrift oder zwei, immer an der gleichen Stelle und ein paar Zeilen einer Tabelle. In HTML wäre das trivial.
EDIT: Grundsätzlich möchte ich eine Bibliothek, die ODT-Dateien aus ODF-Dateien als Vorlagen generieren kann und eine Bibliothek, die das Ergebnis in PDF konvertieren kann (das ist wahrscheinlich die Crux).
ich das Problem mit diesem Ansatz gedacht wären, dass Fußzeilen/Header würde immer noch direkt behandelt werden müssen - ich habe auf jeder Seite die Fußzeile an der gleichen Stelle zu halten. Ich weiß, dass CSS viele Druckoptionen hat, aber ich bin mir nicht sicher, ob es das kann (beweise mich falsch). –
Es scheint, XHTML2PDF/Pisa unterstützt Kopf- und Fußzeilen über einige CSS-Erweiterungen. Werfen Sie einen Blick auf http://www.xhtml2pdf.com/doc/pisa-de.html - Abschnitt 7.4 enthält ein Beispiel zum Erstellen einer Fußzeile auf jeder Seite eines Dokuments. –
Das scheint den Trick zu machen. Groß! Ich werde ein bisschen damit herumspielen müssen, aber ich denke, es ist eine perfekte Lösung, um das Styling aus dem Code herauszuhalten. Es bleibt immer noch die Redundanz, ein ODF/DOC (X) Template als XHTML/CSS + neu zu erstellen, aber das ist nur ein geringes Problem. –