【问题标题】:Best way to fill out and flattern form in PDF using python on Linux在 Linux 上使用 python 填写和展平 PDF 表单的最佳方法
【发布时间】:2014-09-10 23:16:23
【问题描述】:

我有一个包含一个表单域的 pdf 模板文件。我想填写并展平此表格,然后将其另存为新文件。

我正在寻找能够执行此操作的 Python 库,但我也会接受使用 Linux cli 程序的解决方案。

【问题讨论】:

    标签: python pdf


    【解决方案1】:

    根据 Adob​​e Docs 有一个更好的方法来执行此操作,将可编辑表单字段的位位置更改为 1 以使其只读。我在这里提供了一个完整的解决方案:

    https://stackoverflow.com/a/55301804/8382028

    但总体而言,您可以使用 PyPDF2 填充字段,然后遍历注释并执行以下操作:

    for j in range(0, len(page['/Annots'])):
        writer_annot = page['/Annots'][j].getObject()
        for field in data_dict: 
            if writer_annot.get('/T') == field:
                writer_annot.update({
                    NameObject("/Ff"): NumberObject(1)   # make ReadOnly
                })
    

    【讨论】:

      【解决方案2】:

      回答我自己的问题,我发现的最佳解决方案是结合使用 Python 库和程序 pdftk

      the github page for the library 描述了该过程。

      我不想将.fdf 文件保存到磁盘中,所以这是我的方法

      from fdfgen import forge_fdf
      from subprocess import Popen, PIPE
      
      fields = [("field1", "foo"),
                ("field2", "bar")]
      fdf = forge_fdf("", fields, [], [], [])
      pdftk = ["pdftk", "template.pdf", "fill_form", "-", 
                "output", "out.pdf", "flatten"]
      proc = Popen(pdftk, stdin=PIPE)
      output = proc.communicate(input=fdf)
      if output[1]: 
          raise IOError(output[1])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-26
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2020-11-05
        • 2018-04-10
        相关资源
        最近更新 更多