如何用Python FPDF为每个PDF打印不同内容?循环输出内容一致问题排查
问题原因及解决方法
你的问题出在复用了同一个FPDF实例,导致所有PDF都包含循环过程中累积的内容,而因为cell的位置完全相同,最终显示的始终是第一个添加的内容(0)。
具体分析:
你把pdf = FPDF()和pdf.add_page()放在了循环外面,意味着整个循环都在操作同一个PDF对象:
- 第一次循环(i=0):添加内容为0的cell,输出
0.pdf,此时PDF里只有0; - 第二次循环(i=1):在同一个页面的相同位置添加内容为1的cell,此时PDF里同时存在0和1的cell(位置重叠),输出
1.pdf; - 后续循环以此类推,每个新的cell都叠在之前的cell上面,但由于渲染顺序或视觉覆盖的问题,你看到的始终是最底层的0。
修复代码:
需要把PDF实例的创建和页面添加放到循环内部,确保每个PDF都是独立的:
for i in range(10): pdf = FPDF() pdf.add_page() pdf.cell(w=100, h=100, txt='{0}'.format(i), border=0, ln=0, align='c', fill=False, link='') pdf.output('{0}.pdf'.format(i))
这样每次循环都会生成一个全新的PDF文件,每个文件里只有对应i值的内容。
内容的提问来源于stack exchange,提问作者user4258696
相关产品推荐
相关产品推荐

