代码之家  ›  专栏  ›  技术社区  ›  Alan Plum

生成ODT/DOC(X)并转换为PDF,无OO.o/MS

  •  6
  • Alan Plum  · 技术社区  · 15 年前

    我有一个WSGI应用程序,可以生成发票并将其存储为PDF格式。

    到目前为止,我已经用FPDF(或等效工具)解决了类似的问题,像GUI一样从头开始生成PDF。遗憾的是,这意味着整个格式化逻辑(定位页眉、页脚和内容、样式)都在应用程序中,而实际上不应该在应用程序中。

    由于模板已经存在于Office格式(ODT、DOC、DOCX)中,我更愿意将其作为基础并填充实际内容。我已经找到了Appy框架,它可以通过带注释的ODT文件实现这一点。

    这仍然存在一个更大的问题,即:将ODT(或DOC,或DOCX)转换为PDF。在服务器上。运行Linux。没有GUI库。因此,没有OO.o或MS Office。

    实际填写的内容实际上是相当有限的:一些段落,其中一些可能是可选的,一个或两个标题,总是在同一个地方,以及表中的几行。在HTML中,这将是微不足道的。

    编辑:基本上,我想要一个可以从ODF文件生成ODT文件作为模板的库,以及一个可以将结果转换为PDF的库(这可能是关键)。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Pär Wieslander    15 年前

    我不知道如何进行自动ODT->PDF转换,但更简单的方法可能是将发票生成为HTML,然后使用 http://www.xhtml2pdf.com/ . 我自己也没有试过图书馆,但它看起来确实很有希望。

        2
  •  1
  •   Hieu    12 年前

    >>>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”。所以我假设它是odt。您可以使用QPrinter打印到pdf文件。

    http://qt-project.org/doc/qt-4.8/