FPDF 每次迭代都会创建一个带有 1 个额外页面的 pdf 文件
FPDF creates a pdf file with 1 extra page with every iteration
我从 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, 0, 0, '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() 调用之前。
我从 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, 0, 0, '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() 调用之前。