【问题标题】:Is there any Python 3 module to create PDF files? [closed]是否有任何 Python 3 模块来创建 PDF 文件? [关闭]
【发布时间】:2012-08-14 19:30:09
【问题描述】:

我一直在寻找能够创建 PDF 并与我当前在 Python 3 中的项目集成的东西。通常的参考是 ReportlabpyPDF。但是这两个还不兼容 Python 3。我确实看到自 2010 年以来,Reportlab 中有一些关于该端口的discussion,但截至今天我找不到任何关于该端口的参考。

另一种选择是使用 Python 3 中的中间格式,以便在另一个程序中使用,并使用子进程调用进行包装。 Relatorio 这样做。我可能会考虑做类似的事情,甚至生成 XHTML/CSS 并使用xhtml2pdf

【问题讨论】:

  • Reportlab 正在移植中:bitbucket.org/rptlab/reportlab/branch/py33
  • Reportlab 3(发布February 2013)现在支持 Python 3.3+
  • 实际上,Reportlab 和它的“更好”界面 django-easy-pdf 现在都可以在 Python 3 上运行(现在 xhtml2pdf 已经支持 beta Python 3)——我解释了如何让事情正常工作here
  • 对于仍在寻找 Reportlab 和 fpdf 替代品的人,请查看 pdfme。它是python中最强大的创建PDF文档的库。

标签: python python-3.x pdf-generation


【解决方案1】:

街区里有一个看起来很有前途的新孩子。 它支持分页符等打印 css 功能。

试试weasyprint

【讨论】:

  • OP 专门讨论在 Python 3 中使用 PDF 处理器,而不是独立服务。编辑:没关系,我看到 weasyprint 在 github 上并且可以编写脚本。这是一个更相关的链接:github.com/Kozea/WeasyPrint
【解决方案2】:

带有pycairo(不是py2cairo,用于python 2)绑定的cairo 库与python 3.x 一起使用,并且可以生成PDF 输出(等等)。

【讨论】:

  • 按照您的建议,我开始在 cairo/pango 周围寻找一些图书馆,我发现了这个 savannah.nongnu.org/projects/pypdflib,它有一些很好的文档抽象。它没有正式支持 python3,但基于对 cairo 和 pango 上对 python3 的支持,通过一些修改似乎是可行的。
  • 是的,cairo 本身很适合绘图,但只能用于创建文本。 Pypdflib 听起来不错。另一种方法可能是使用 pango (pango.org) 和 cairo 作为文本。如果你安装 pygtk,它有一个 pangocairo 模块。但是除了一些例子之外,没有太多的文档。
  • 只是为了通知 python 3 和 pdf 的未来冒险,我最终将 python2 库移植到 python 3 bitbucket.org/cyraxjoe/py3fpdf
  • @cyraxjoe 您的 bitbucket 链接是 404-ing。
  • 感谢提醒,现在托管在 github github.com/cyraxjoe/pypfop
【解决方案3】:

最后我发现使用 pycario/pango 很困难,pycairo 仍然错过了一些用于 png 的方法,并且 python3 还不太支持 PIL,还带有很多依赖项(使用 pycario 的想法)所以我最终将 python 2 库移植到 python 3,不是很先进,但可以完成一些基本 pdf 的工作,它被称为 py3fpdf

--- 更新 --

事实证明 p3fpdf 没有完成 n_n' 的工作。所以为了讲完这个故事,我为apache fop 做了一个预处理器,它被称为pypfop。我最近才与整个项目解耦,这是一项正在进行的工作,特别是文档,示例可能是说明性的。

【讨论】:

    【解决方案4】:

    您可以获得 HTML/CSS 路由并使用prince,尽管它不是免费软件。

    如果你的源码不是太复杂,你也可以试试纯python解决方案,如http://code.activestate.com/recipes/189858-python-text-to-pdf-converter/

    【讨论】:

      【解决方案5】:

      你可以掏钱打电话给text2pdf

      【讨论】:

      • 问题已经建议使用 xhtml2pdf 作为替代方案,因此“对 text2pdf 执行相同操作”并不能真正回答问题。
      【解决方案6】:

      2.7 和 3.3 的端口目前正在进行中:

      https://github.com/nakagami/reportlab

      PIL 尚未移植到 Python3,因此 ReportLab 将无法完全运行。

      【讨论】:

        【解决方案7】:

        Pillow 是 PIL 到 Python 3 的一个很好的移植版本,现在可以在 Debian 实验版和 Ubuntu 13.04 中使用。这应该会解除对 ReportLab 的 Python 3 端口的阻塞,我很乐意看到。 @nakagami:python3 setup.py build 对我来说,你的 github 报告似乎失败了,但它可能很肤浅。你的端口有多官方?您是否联系过 RL 人员,看看他们是否对您的工作感兴趣?我不认为他们的代码在公共 vcs 中可用。

        【讨论】:

          猜你喜欢
          • 2010-09-21
          • 1970-01-01
          • 1970-01-01
          • 2013-11-17
          • 2019-08-26
          • 1970-01-01
          • 2012-08-17
          • 1970-01-01
          • 2013-11-03
          相关资源
          最近更新 更多