Para Python que necesita la lib fdfgen y PDFTK
comentario de @Hugh Bothwell es 100% correcto así que voy a extender esa respuesta con una aplicación de trabajo.
Si se encuentra en Windows, también deberá asegurarse de que tanto python como pdftk estén incluidos en la ruta del sistema (a menos que desee usar nombres largos de carpeta).
Aquí está el código de auto-lotes llenar una colección de formularios PDF a partir de un archivo de datos 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)
Nota: No debe ser por cohetes cirugía para averiguar cómo personalizar esto. Las declaraciones de variables iniciales contienen la configuración personalizada.
En el CSV, en la primera fila cada columna contendrá el nombre del campo correspondiente en el archivo PDF. Se ignorarán todas las columnas que no tengan campos correspondientes en la plantilla.
En la plantilla PDF, simplemente cree campos editables donde desee que se llenen sus datos y asegúrese de que los nombres coincidan con los datos CSV.
Para esta configuración específica, simplemente coloque este archivo en la misma carpeta que su NVC.csv, NVC.pdf, y una carpeta llamada 'salida'. Ejecútelo y automaticamente hace el resto.
Ver http://stackoverflow.com/questions/1890570/how- can-i-auto-populate-a-pdf-form-in-django-python –