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

如何使用python-docx修改图片位置与文字环绕属性

python-docx实现Word图片位置与环绕属性自定义的方法

可以实现,python-docx官方未封装对应设置的高级接口,我们可以通过操作文档底层XML元素完成配置,完整实现代码如下:

from docx import Document
from docx.shared import Cm
from docx.oxml import OxmlElement
from docx.oxml.ns import qn

# 初始化文档
doc = Document()
# 添加本地图片,宽度可根据需求调整
pic = doc.add_picture("你的本地图片路径.png", width=Cm(10))
# 获取图片对应的XML节点
inline = pic._inline
graphic = inline.graphic

# ------------------- 按需求配置属性 -------------------
# 1. 配置浮动图片基础属性
docPr = OxmlElement("wp:docPr")
docPr.set("id", "1")
docPr.set("name", "自定义图片")

# 2. 水平属性:右对齐,参照基准为页边距
position_h = OxmlElement("wp:positionH")
position_h.set("relativeFrom", "margin")
align_node = OxmlElement("wp:align")
align_node.text = "right"
position_h.append(align_node)

# 3. 垂直属性:绝对位置2.15厘米,参照基准为页面向下偏移
position_v = OxmlElement("wp:positionV")
position_v.set("relativeFrom", "page")
offset_node = OxmlElement("wp:posOffset")
# 自动转换厘米为Word内部的EMU单位
offset_node.text = str(int(Cm(2.15).emu))
position_v.append(offset_node)

# 4. 文字环绕:浮于文字上方
wrap_none = OxmlElement("wp:wrapNone")

# 替换原内联图片为浮动图片配置
parent = inline.getparent()
parent.remove(inline)
anchor = OxmlElement("w:anchor")
anchor.append(docPr)
anchor.append(position_h)
anchor.append(position_v)
anchor.append(wrap_none)
anchor.append(graphic)
parent.append(anchor)

# 保存文档
doc.save("输出文档.docx")

参数对应说明:

  • 文字环绕设置:添加wp:wrapNone节点,对应Word「浮于文字上方」的环绕效果
  • 水平属性配置:positionH的relativeFrom属性设为margin即参照页边距,wp:align文本设为right即右对齐,匹配需求
  • 垂直属性配置:positionV的relativeFrom属性设为page即参照页面,posOffset填入2.15厘米对应的EMU数值,实现页面向下偏移2.15厘米的效果

注意:插入多张图片时需保证每个图片的id属性不重复,图片路径、尺寸可根据实际需求调整。

内容的提问来源于stack exchange,提问作者yukta sarode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:36:01