Я пытаюсь автоматически заполнить двухстраничный pdf-файл личными данными из CSV-файла для моих клиентов.Я использую Python, Reportlab и пакет pdfrw.
Мне уже удалось успешно заполнить первую страницу PDF, но я не могу заполнить вторую страницу.Ниже мой код (взят из https://medium.com/@zwinny/filling-pdf-forms-in-python-the-right-way-eb9592e03dba, спасибо) и немного изменен.Я должен признать, что я не понимаю код полностью, но я думаю, что проблема заключается в функции слияния.И, вероятно, также в функции get_overlay_canvas.Просто угадай.
def get_overlay_canvas(name) -> io.BytesIO:
data = io.BytesIO()
pdf = canvas.Canvas(data, pagesize=A4)
pdf.setFont('arial', 12)
pdf.drawString(x=484, y=690, text='2018')
pdf.drawString(x=70, y=504, text=name)
pdf.line(193, 413, 205, 432) # izrišemo linijo 1
pdf.line(205, 413, 193, 432) # izrišemo linijo 2
pdf.save()
data.seek(0)
return data
def merge(overlay_canvas: io.BytesIO, template_path: str) -> io.BytesIO:
template_pdf = pdfrw.PdfReader(template_path)
overlay_pdf = pdfrw.PdfReader(overlay_canvas)
for page, data in zip(template_pdf.pages, overlay_pdf.pages):
overlay = pdfrw.PageMerge().add(data)[0]
pdfrw.PageMerge(page).add(overlay).render()
form = io.BytesIO()
pdfrw.PdfWriter().write(form, template_pdf)
form.seek(0)
return form
def save(form: io.BytesIO, filename: str):
with open(filename, 'wb') as f:
f.write(form.read())
import_data(data_file)
Итак, мой вопрос прост: как мне заполнить вторую страницу другими данными?Я перепробовал почти все, что приходит мне в голову, но безуспешно.Заранее спасибо, Дэвид