使用FPDF循环自动排列图片遇布局异常求助
问题分析与修复
你的代码存在两个核心问题:
- 分页触发条件错误:你设置的
png_count%3 == 0不符合每页2张的需求,导致分页时机错乱。 - 新增页面后未重置
start_y:新页面的图片起始Y坐标沿用了上一页的最终值,直接导致第三张图跑到页面底部。
修复后的代码如下:
png_count = 0 start_y = 50 img_ht = 115 page_img_count = 0 # 跟踪当前页面已放置的图片数量 for name in imagelist: # 放置当前图片 pdf.image(name, 20, start_y, 160, 100.4) page_img_count += 1 png_count += 1 # 当前页面放满2张,且不是最后一张图时,触发分页 if page_img_count == 2 and png_count < len(imagelist): pdf.add_page() start_y = 50 # 重置新页面的起始Y坐标 page_img_count = 0 # 重置当前页面的图片计数 else: # 更新下一张图的Y坐标(仅当前页面还有空间时) start_y += img_ht
关键修改说明:
- 新增
page_img_count变量,专门管理单页内的图片计数,避免和全局的png_count混淆,逻辑更清晰。 - 调整分页条件为当前页面已放满2张,且不是最后一张图,既保证每页2张的布局,又不会在最后一张图后生成空白页。
- 每次新增页面时强制重置
start_y为初始值50,同时重置page_img_count为0,确保新页面的第一张图从正确位置开始渲染。
修改后即可实现你想要的布局:前两张在第一页,接下来两张在第二页,最后一张在第三页,所有图片位置均正常显示。
内容的提问来源于stack exchange,提问作者Emile GROS
相关产品推荐
相关产品推荐

