6

請求書を生成して PDF として保存する WSGI アプリケーションがあります。

これまでのところ、FPDF (または同等のもの) で同様の問題を解決し、GUI のようにゼロから PDF を生成しました。悲しいことに、これは、フォーマット ロジック全体 (ヘッダー、フッター、コンテンツの配置、スタイリング) がアプリケーション内にあってはならない場所にあることを意味します。

Office 形式 (ODT、DOC、DOCX) のテンプレートが既に存在するため、単純にそれらをベースとして使用し、実際のコンテンツを入力することをお勧めします。私は Appy フレームワークを見つけました。これは、注釈付きの ODT ファイルでほぼ同じことを行います。

ODT(またはDOC、またはDOCX)をPDFに変換するという、より大きな問題がまだ残っています。サーバー上。Linux を実行しています。GUI ライブラリなし。したがって、OO.o や MS Office は必要ありません。

これはまったく可能ですか、それとも私のコードでスタイリングを維持したほうがよいでしょうか?

記入される実際のコンテンツは、実際には非常に制限されています。いくつかの段落 (オプションの場合もあります)、常に同じ場所にある 1 つまたは 2 つの見出し、および表のいくつかの行です。HTML では、これは些細なことです。

EDIT:基本的に、テンプレートとして機能するODFファイルからODTファイルを生成できるライブラリと、結果をPDFに変換できるライブラリが必要です(これがおそらく核心です)。

4

2 に答える 2

2

自動 ODT -> PDF 変換の方法はわかりませんが、請求書を HTML として生成し、http://www.xhtml2pdf.com/を使用して PDF に変換する方法がより簡単な方法かもしれません。私はライブラリを自分で試したことはありませんが、間違いなく有望なようです。

于 2009-11-30T13:20:04.737 に答える
1

PyQt4 では QTextDocument、QTextCursor、および QTextDocumentWriter を使用できます。odt ファイルへの書き込み方法を示す簡単な例:

>>>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

この場合、odt と odf の違いがわからない場合。ファイルの種類を確認したところ、「application/vnd.oasis.opendocument.text」と表示されていました。だから私はそれが奇妙だと思います。QPrinter を使用して PDF ファイルに印刷できます。

詳細情報: http://qt-project.org/doc/qt-4.8/

于 2012-10-04T14:50:25.313 に答える