如何使用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
相关产品推荐
相关产品推荐

