Đối với Python bạn sẽ cần lib fdfgen và pdftk
bình luận @Hugh Bothwell là chính xác 100% vì vậy tôi sẽ mở rộng mà câu trả lời với một thực hiện làm việc.
Nếu bạn đang ở trong cửa sổ, bạn cũng sẽ cần đảm bảo cả trăn và pdftk được chứa trong đường dẫn hệ thống (trừ khi bạn muốn sử dụng tên thư mục dài).
Dưới đây là đoạn code để tự động batch-điền vào một tập hợp các hình thức PDF từ một tệp dữ liệu CSV:
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)
Lưu ý: Không nên rocket-phẫu thuật để tìm ra cách để tùy chỉnh này. Các khai báo biến ban đầu chứa cấu hình tùy chỉnh.
Trong CSV, trong hàng đầu tiên, mỗi cột sẽ chứa tên của tên trường tương ứng trong tệp PDF. Bất kỳ cột nào không có các trường tương ứng trong mẫu sẽ bị bỏ qua.
Trong mẫu PDF, chỉ cần tạo trường có thể chỉnh sửa nơi bạn muốn dữ liệu của mình điền vào và đảm bảo các tên khớp với dữ liệu CSV.
Đối với cấu hình cụ thể này, chỉ cần đặt tệp này trong cùng thư mục với NVC.csv, NVC.pdf và thư mục có tên 'đầu ra'. Chạy nó và nó tự động làm phần còn lại.
Nguồn
2013-01-10 02:37:32
Xem http://stackoverflow.com/questions/1890570/how- can-i-auto-populate-a-pdf-form-in-django-python –