Python 如何在 docx 的指定位置插入图片,并设置图片大小?

想要在 docx 的指定位置插入结果图片,并且设置图片大小,最好可以在 table 的一个 cell 中插入图片,但是使用 python-docx 尝试,好像插入时只能插入在文件末端?


Python 如何在 docx 的指定位置插入图片,并设置图片大小?
3 回复

python-docx 库在指定位置插入图片并控制大小,关键是用 add_picture 方法并指定 widthheight 参数。下面是一个直接可用的例子:

from docx import Document
from docx.shared import Inches, Cm, Pt  # 常用单位

# 1. 打开或创建文档
doc = Document('existing_document.docx')  # 或 Document() 创建新文档

# 2. 确定插入位置(这里以在第一个段落后面插入为例)
target_paragraph = doc.paragraphs[0]  # 获取第一个段落
run = target_paragraph.add_run()      # 在该段落创建一个新 run

# 3. 插入图片并设置大小(三种方式任选)
# 方式一:使用英寸(常用)
run.add_picture('your_image.jpg', width=Inches(3.0), height=Inches(2.0))

# 方式二:使用厘米
# run.add_picture('your_image.jpg', width=Cm(7.62), height=Cm(5.08))

# 方式三:使用磅值(Pt)
# run.add_picture('your_image.jpg', width=Pt(216), height=Pt(144))

# 4. 保存文档
doc.save('output_document.docx')

关键点说明:

  • 指定位置:通过选择特定的段落(doc.paragraphs[index])或表格单元格来定位。
  • 控制大小widthheight 参数接受 InchesCmPt 等单位的对象,只设置一个参数会自动按比例缩放。
  • 插入方式:图片是作为段落内 Run 对象的一部分插入的,会出现在该段落的文本之后。

如果要在两个现有段落之间插入,可以先在目标位置添加一个新段落:

# 在文档开头插入一个新段落
new_paragraph = doc.add_paragraph()
new_paragraph.add_run().add_picture('image.jpg', width=Inches(2.5))

简单说就是选对位置调用 add_picture 时带上尺寸参数就行。


听说 docx 是个 zip 压缩了 xml 文件的文件,你先插入一个图片作为模板文件,然后替换图片可以不?

谢谢, 后来翻了一下 python-docx 的 Issues,发现大神之前发布了解决方法,链接如下:
https://github.com/python-openxml/python-docx/issues/10

代码如下:
paragraph = cell.paragraphs[0]
run = paragraph.add_run()
run.add_picture(‘image.png’)

回到顶部