FPDF 每次迭代都会创建一个带有 1 个额外页面的 pdf 文件

问题描述

我从 FPDF 库中获得了一个函数来创建 pdf。 比方说,我有 4 个订单,我需要为每个订单创建 pdf,所以我遍历它们,

orders = [10,11,12,13]
for o in orders: 
    generate_pdf(o)

函数 generate_pdf:

from fpdf import FPDF
pdf = FPDF()
def generate_pdf(DokId):
    pdf.add_page()
    header = "Order #{}".format(DokId)
    
    pdf.set_font('Arial','B',20)
    w = pdf.get_string_width(header) + 6
    pdf.set_x((210 - w) / 2)
    pdf.cell(w,9,header,'C')
    pdf.line(20,18,210-20,18)
    pdf.output('{}.pdf'.format(DokId),'F')
    return None

对于我列表中的第一个 el,我有 1 页的文件“10.pdf”,下一页 - 2 页,等等。 如何避免这种情况并为循环中的每个订单号只创建一页

提前致谢

解决方法

我没有使用过 FPDF,但我猜测问题是您每次都重新使用相同的 pdf 对象,因此在每次调用 add_page 后,您都会向同一个文档添加另一个页面而不是一个新页面.

尝试添加

pdf = FPDF()

在您的 pdf.add_page() 调用之前。