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

python-docx的add_picture()是否存在fit-to-page属性实现图片自适应页面

Python-docx插入图片自适应页面尺寸解决方案

核心逻辑为获取当前页面可编辑区域的尺寸,结合图片原始宽高比动态计算缩放参数,无需硬编码固定尺寸。

完整实现代码

import os
from docx import Document

# 初始化文档对象(保留你原有代码的doc定义即可)
doc = Document()

# 1. 计算页面可编辑区域的宽高(默认取第一节的页面配置,多节场景可自行调整索引)
current_section = doc.sections[0]
available_width = current_section.page_width - current_section.left_margin - current_section.right_margin
available_height = current_section.page_height - current_section.top_margin - current_section.bottom_margin

# 2. 插入段落和图片,不指定固定尺寸,读取图片原始宽高
p1 = doc.add_paragraph(' ')
pic = doc.add_picture(os.path.join(base_path, fi))
para = doc.paragraphs[-1]

# 3. 等比例缩放图片,保证不超出页面可编辑区域
img_original_width = pic.width
img_original_height = pic.height
# 取最小缩放比例,确保宽高都不会超出页面边界
scale_ratio = min(available_width / img_original_width, available_height / img_original_height)
# 仅当图片大于页面可编辑区域时缩放,小图保留原始尺寸,不需要可删除该判断
if scale_ratio < 1:
    pic.width = int(img_original_width * scale_ratio)
    pic.height = int(img_original_height * scale_ratio)

补充说明

  • 若希望所有图片都撑满页面宽度,无论原图大小,直接删除if scale_ratio < 1:的判断即可
  • 文档存在多个节时,插入图片到对应节只需将doc.sections[0]的索引修改为目标节的序号即可
  • 方案自动适配页面边距配置,默认模板、自定义模板均可正常使用

内容的提问来源于stack exchange,提问作者Solomon Raja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:54:06