簡體   English   中英

在Linux上使用python填寫和替換表格的最佳方法

[英]Best way to fill out and flattern form in PDF using python on Linux

我有一個包含一個表單字段的pdf模板文件。 我想填寫並展平此表格,然后將其另存為新文件。

我正在尋找能夠執行此操作的Python庫,但是我還將接受使用Linux cli程序的解決方案。

每個Adobe Docs都有一個更好的方法,將可編輯表單字段的位位置更改為1,使其變為ReadOnly。 我在這里提供了完整的解決方案:

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
            })

回答我自己的問題,我發現最好的解決方案是結合使用Python庫和pdftk程序。

該過程在該庫的github頁上進行了描述。

我不想將.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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM