如何使用Python,Reportlab和pdfrw在pdf的第二页中添加文本?

时间:2019-02-12 21:47:07

标签: python pdf reportlab pdfrw

我正在尝试使用CSV文件中的个人数据自动为客户填充2页长的pdf文件。我正在使用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)

所以我的问题很简单:如何用不同的数据填充第二页?我尝试了几乎所有想到的方法,但都没有成功。预先感谢David

0 个答案:

没有答案