Frage

Ich habe eine WSGI-Anwendung, die Rechnungen und speichert sie als PDF erzeugt.

Bisher habe ich ähnliche Probleme mit FPDF (oder Äquivalente) gelöst, die PDF-Datei von Grund auf wie ein GUI zu erzeugen. Leider bedeutet dies die gesamte Formatierungslogik (Positionierung Kopf- und Fußzeilen und Inhalt, Styling) ist in der Anwendung, wo es wirklich nicht sein sollte.

Wie die Vorlagen bereits in Office-Formaten vorliegen (ODT, DOC, DOCX), ich würde es vorziehen, einfach diejenigen als Basis zu verwenden und in dem eigentlichen Inhalt füllen. Ich habe den Appy Rahmen gefunden, was ziemlich viel tut das mit Anmerkungen versehen ODT-Dateien.

Das immer noch das größere Problem offen läßt, tho: Umwandlung von ODT (oder DOC oder DOCX) in PDF. Auf einem Server. Ausführen von Linux. Ohne GUI-Bibliotheken. Und so, ohne OO.o oder MS Office.

Ist das überhaupt möglich, oder bin ich besser dran, das Styling in meinem Code zu halten?

Der eigentliche Inhalt, die tatsächlich sehr eingeschränkt in ist gefüllt werden würden: ein paar Absätze, von denen einige optional sein kann, eine Überschrift oder zwei, immer an der gleichen Stelle, und ein paar Zeilen einer Tabelle. In HTML wäre dies trivial sein.

EDIT: Grundsätzlich mag ich eine Bibliothek, die als Vorlagen und eine Bibliothek handeln ODT-Dateien von ODF-Dateien erzeugen kann, die das Ergebnis in PDF umwandeln können (das ist wahrscheinlich der Kern)

.
War es hilfreich?

Lösung

Ich weiß nicht, wie etwa automatische ODT gehen -> PDF-Konvertierung, sondern ein einfacher Weg sein könnte Ihre Rechnungen als HTML zu erzeugen und sie in PDF konvertieren mit http://www.xhtml2pdf.com/ . Ich habe nicht die Bibliothek selbst versucht, aber es scheint auf jeden Fall vielversprechend aus.

Andere Tipps

Sie können QTextDocument, QTextCursor und QTextDocumentWriter in PyQt4 verwenden. Ein einfaches Beispiel zu zeigen, wie man eine odt-Datei schreiben:

>>>from pyqt4 import QtGui
# Create a document object
>>>doc = QtGui.QTextDocument()
# Create a cursor pointing to the beginning of the document
>>>cursor = QtGui.QTextCursor(doc)
# Insert some text
>>>cursor.insertText('Hello world')
# Create a writer to save the document
>>>writer = QtGui.QTextDocumentWriter()
>>>writer.supportedDocumentFormats()
[PyQt4.QtCore.QByteArray(b'HTML'), PyQt4.QtCore.QByteArray(b'ODF'), PyQt4.QtCore.QByteArray(b'plaintext')]
>>>odf_format = writer.supportedDocumentFormats()[1]
>>>writer.setFormat(odf_format)
>>>writer.setFileName('hello_world.odt')
>>>writer.write(doc) # Return True if successful
True

Wenn nicht sicher, ob der Unterschied zwischen odt und ODF in diesem Fall. Ich habe den Dateityp und es sagte: ‚application / vnd.oasis.opendocument.text‘. Also gehe ich davon aus es odt ist. Sie können mithilfe QPrinter in eine PDF-Datei drucken.

Weitere Informationen unter: http://qt-project.org/doc/qt-4.8/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top