gpt4 book ai didi

python - 从 python 或 bash 批量填写 PDF 表单

转载 作者:太空狗 更新时间:2023-10-29 17:40:55 37 4
gpt4 key购买 nike

我有一个 PDF 表格需要填写很多次(准确地说是时间表)。现在,由于我不想手动执行此操作,所以我一直在寻找一种使用 python 脚本或可在 bash 脚本中使用的工具来填写它们的方法。

有没有人有这方面的经验?

最佳答案

对于 Python,您需要 fdfgen 库和 pdftk

@Hugh Bothwell 的评论是 100% 正确的,所以我将用一个有效的实现来扩展这个答案。

如果您在 Windows 中,您还需要确保 python 和 pdftk 都包含在系统路径中(除非您想使用长文件夹名称)。

这是从 CSV 数据文件自动批量填充 PDF 表单集合的代码:

import csv
from fdfgen import forge_fdf
import os
import sys

sys.path.insert(0, os.getcwd())
filename_prefix = "NVC"
csv_file = "NVC.csv"
pdf_file = "NVC.pdf"
tmp_file = "tmp.fdf"
output_folder = './output/'

def process_csv(file):
headers = []
data = []
csv_data = csv.reader(open(file))
for i, row in enumerate(csv_data):
if i == 0:
headers = row
continue;
field = []
for i in range(len(headers)):
field.append((headers[i], row[i]))
data.append(field)
return data

def form_fill(fields):
fdf = forge_fdf("",fields,[],[],[])
fdf_file = open(tmp_file,"w")
fdf_file.write(fdf)
fdf_file.close()
output_file = '{0}{1} {2}.pdf'.format(output_folder, filename_prefix, fields[1][1])
cmd = 'pdftk "{0}" fill_form "{1}" output "{2}" dont_ask'.format(pdf_file, tmp_file, output_file)
os.system(cmd)
os.remove(tmp_file)

data = process_csv(csv_file)
print('Generating Forms:')
print('-----------------------')
for i in data:
if i[0][1] == 'Yes':
continue
print('{0} {1} created...'.format(filename_prefix, i[1][1]))
form_fill(i)

注意:弄清楚如何自定义它不应该是火箭手术。初始变量声明包含自定义配置。

在 CSV 中,第一行中的每一列将包含 PDF 文件中相应字段名称的名称。模板中没有对应字段的任何列都将被忽略。

在 PDF 模板中,只需在您希望填充数据的位置创建可编辑字段,并确保名称与 CSV 数据匹配。

对于此特定配置,只需将此文件与 NVC.csv、NVC.pdf 和名为“output”的文件夹放在同一文件夹中。运行它,它会自动完成剩下的工作。

关于python - 从 python 或 bash 批量填写 PDF 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10476265/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com