以编程方式使用的文档标准是什么?

时间:2010-06-21 06:25:11

标签: python pyqt document

我正在编写一个需要以文档形式输入的程序,它需要替换一些值,插入一个表,然后将其转换为PDF。它是用Python + Qt(PyQt)编写的。是否有任何众所周知的文档标准可以很容易地以编程方式使用?它必须是跨平台的,最好是开放的。

  1. 我查看了Microsoft Doc和Docx,它们是二进制格式,我无法编辑它们。 Python有绑定,但它们只在Windows上。

  2. Open Office的ODT / ODF压缩在一个xml文件中,所以我可以编辑那个,但是没有命令行工具或任何以编程方式将文件转换为PDF的方法。 Open Office提供绑定,但您需要从命令行运行Open Office,启动服务器等。我的客户可能没有安装Open Office。

  3. RTF可以从Python读取,但我找不到任何方法/库来将RTF文档转换为PDF格式。

  4. 目前我正在从Microsoft Word导出为HTML,替换值并使用PyQt将其转换为PDF。但它失去了格式化功能,看起来很糟糕。我很惊讶没有一个知名的库可以让你编辑各种文档格式并将它们转换成其他格式,我错过了什么?

    更新:感谢您的建议,我将介绍使用Latex。

    谢谢, 杰克逊

5 个答案:

答案 0 :(得分:9)

您是否考虑过使用LaTeX文档?

它们非常适合以编程方式使用(编译文档?你一定很喜欢......),并且你可以使用几个Python框架,例如plasTeX和{{3} }。

将LaTeX文档导出为PDF几乎是即时的。

答案 1 :(得分:2)

既然你已经在使用PyQt,那么看看Qt的内置RTF processing module看起来不错也许值得一试。这是详细content manipulation的文档,包括插入表。此外,QPrinter模块的默认打印到文件格式恰好是PDF格式。

如果不了解您的特定需求,很难说这些是否能满足您的需求,但由于您的应用程序已经将PyQt作为依赖项,因此在不评估您已经可用的功能的情况下再引入任何内容似乎很愚蠢。

但是,Qt框架的非GUI部分经常被忽视。

编辑:包含更多链接。

答案 2 :(得分:1)

您可能想尝试ReportLab。开源版本可以编写PDF,商业版本有很多非常好的抽象,允许从单个输入输出到各种不同的格式。

答案 3 :(得分:0)

我不知道你的节目的那种有趣,Tex很好,我会配合它 另一种可能的选择是Excel格式,用xlrd解析它 我已经使用了几次,而且非常简单 Excel文件很好,原因如下:

  1. 众所周知的格式易于编辑
  2. 您可以使用约束和表
  3. 准备预定义模板

答案 4 :(得分:0)

创建XML文档,将它们转换为XSL / fo并使用Fop或RenderX进行渲染。如果您使用docbook作为主要输入,则可以免费使用工具链将其转换为PDF,RTF,HTML等。

使用起来相当古怪,而不是我的乐趣,但它确实可以提供,并且可以嵌入到应用程序中,AFAICT。

创建docbook非常简单,因为它具有广泛的语义标记,表支持等,以提供可以可靠格式化的“有意义”标记。 XSL样式表是模块化的,允许定制或替换部件以生成您自己的外观。

适用于包含大量文本的相对自由流量的文档。

为了填写空白类型的文档,定期报告引擎可能更适合,或者一些直接的XSL样式表直接吐出XSL-fo。