You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:36:14