【问题标题】:Creating and writing to a pdf file in Python在 Python 中创建和写入 pdf 文件
【发布时间】:2018-02-07 18:37:15
【问题描述】:

为什么这不起作用:

with open('file.pdf', 'w') as outfile:
    outfile.write("Hello")

代码运行良好,但 .pdf 文件无法打开。普通文本文件和pdf有什么区别? 如果我想在 python 中创建并写入 pdf 文件怎么办?

【问题讨论】:

  • 欣赏您的雄心壮志,不幸的是,写入 PDF 需要额外的库,例如 PyPDF 或 Reportlabs。搜索那些。
  • 文本文件和pdf有很多不同之处。用文本编辑器打开一个pdf文件,你会看到。
  • @itsneo PyPDF 似乎已经过时了。我发布了一个带有更新的答案。你怎么看?
  • [此处的最小 PDF 文件](brendanzagaeski.appspot.com/0004.html) 的合理解释。说明提供的示例代码无法按原样工作的原因。

标签: python file pdf


【解决方案1】:

每种类型的文件都有自己的内部格式 - 一组规则,用于定义要表示的信息的位置。通常文件扩展名(在这种情况下为“.pdf”)设置为告诉您文件使用的内部格式,但不能绝对保证。

如果您使用 Python 将字符串写入文件,该文件将包含您放入的内容,在这种情况下,只有五个 ASCII 字符 H、e、l、l 和 o。这将对应于文本文件的正常格式。因此,在这种情况下,您创建了一个文本文件,但在其上添加了“.pdf”扩展名。它的内部格式仍然是一个文本文件,如果你把它重命名为'file.txt',你会发现你可以打开它(用文本编辑器)。

如果您想创建一个真正的 PDF 文件(具有正确的 PDF 内部格式的文件),您需要使用可以编写该类型文件的专用包。 @gsamaras 和 @rasmus-lyngdal-christensen 提出了一些很好的建议(Reportlab、PyPDF2 和 fpdf)。

【讨论】:

    【解决方案2】:

    您可以安装 fpdf 库,然后:

    from fpdf import FPDF
    
    pdf = FPDF()
    pdf.add_page()
    pdf.set_xy(0, 0)
    pdf.set_font('arial', 'B', 13.0)
    pdf.cell(ln=0, h=5.0, align='L', w=0, txt="Hello", border=0)
    pdf.output('test.pdf', 'F')
    

    【讨论】:

      【解决方案3】:

      普通文本文件和pdf有什么区别?

      PDF 文件具有特定格式。你可以阅读更多here。文本是一个简单得多的文件,因此当您尝试打开一个认为它是 PDF 但没有此格式的文件时,该文件将无法打开。

      如果我想在 python 中创建和写入 pdf 文件该怎么办?

      您需要使用一个模块,例如PyPDF2ReportlabFPDF。此外阅读Python PDF library

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多