geekdoc-python-zh/docs/pythonlibrary/python-pdf-creation-with-pd...

3.5 KiB
Raw Blame History

Python:使用 pdfdocument 创建 PDF

原文:https://www.blog.pythonlibrary.org/2013/10/17/python-pdf-creation-with-pdfdocument/

我使用 Reportlab 用 Python 做了很多 PDF 报告的创建。偶尔我也会加入 PyPDF。所以我一直在寻找其他成熟的 Python PDF 工具。PDFDocument 并不完全成熟但是有点意思。PDFDocument 项目实际上是 Reportlab 的包装器。可以在 github 上获取。我发现这个项目很容易使用,但相当有限。让我们花几分钟来看看它是如何工作的。

深入 pdf 文档

学习新事物的最好方法通常是去尝试。这条规则的唯一例外是,如果它是易碎的并且很贵。那你可能想看看手册。既然开源软件不是这样的,那我们就试一试吧!

注意:要运行这段代码,您需要下载并将其安装到您的本地 Python 安装或 virtualenv


from pdfdocument.document import PDFDocument

#----------------------------------------------------------------------
def createPDF(path):
    """
    Create a simple PDF
    """
    pdf = PDFDocument(path)
    pdf.init_report()
    addr = {'first_name':"John", 'last_name':"Hanes",
            'address':"123 Ding Dong Lane", 
            'zip_code':"75002", 'city':"Dakota"}
    pdf.address(addr)
    pdf.p("This is a paragraph!")
    pdf.generate()

if __name__ == "__main__":
    createPDF("test.pdf")

如果一切顺利,您应该最终得到一个看起来像下面这样的 PDF 文档:

pdfdocument_example

你可以在这里下载 PDF 文件:test.pdf

您可能会注意到出于某种原因PDFDocument 将邮政编码放在城市的前面。您还会注意到,您不能添加州值,因此邮寄该文档可能会有困难。奇怪的是,所有这些都被硬编码到包中。在 github 上的最新版本(截止到 2013 年 10 月 17 日)在 address 方法里可以看到,接近下课了。我必须创建许多需要额外地址行的报告,这也不支持。仅供参考:如果你用 Python 报告做了大量的邮件工作,这个项目可能不适合你。

根据文档,您可以使用 PDFDocument 通过 PDF 模板创建信函和报告。用法如下所示:


pdf.init_report()
# Or:
pdf.init_letter()

还支持在顶部包含红十字和水印的“机密”报告。还有一些特殊的换行使样式更改更容易例如设置粗体、heading1、small 等字体属性。最后,有一些 helper 方法可以让 Django 集成更容易。

包扎

虽然我不觉得这个项目很有用,但你也许可以在自己的工作或爱好项目中找到一些用处。或者,您可能会发现下面相关文章中的某个项目对您有用。

相关文章