当前位置: 代码网 > it编程>前端脚本>Python > 使用Python实现快速在Word文档中插入图片

使用Python实现快速在Word文档中插入图片

2026年08月19日 Python 我要评论
在 word 文档的日常处理中,插入图片是一项高频操作。无论是生成产品说明书、制作报告封面,还是在合同模板中嵌入公司 logo,图片都是传达信息的重要载体。然而,当需要批量生成包含图片的文档时,手动操

在 word 文档的日常处理中,插入图片是一项高频操作。无论是生成产品说明书、制作报告封面,还是在合同模板中嵌入公司 logo,图片都是传达信息的重要载体。然而,当需要批量生成包含图片的文档时,手动操作不仅效率低下,还容易出现尺寸不一致、位置偏移等问题。通过 python 编程方式向 word 文档中插入图片,可以精确控制图片的大小、位置、文字环绕方式等属性,实现文档的自动化生成。本文将介绍如何使用 python 在 word 文档中插入图片,并涵盖位置控制、文字环绕、批量添加和透明色设置等常用操作。

环境准备

本文使用 spire.doc for python 库来操作 word 文档。该库提供了 appendpicture()docpicture 等接口,支持在段落级别和文档级别插入图片,并允许对图片的尺寸、位置、环绕样式进行精细配置。通过以下命令安装:

pip install spire.doc

安装完成后,在脚本中导入所需模块即可开始使用。

基本图片插入

在 word 文档中插入图片最直接的方式是调用段落的 appendpicture() 方法。该方法接收一个图片文件路径,会在段落末尾追加一个图片对象,并返回该对象的引用,以便后续对图片属性进行设置。这种方式适合在新建文档中按顺序追加图文内容。

from spire.doc import *
from spire.doc.common import *

outputfile = "/insertimage.docx"

# 创建文档并添加节
document = document()
section = document.addsection()

# 添加段落并插入图片
paragraph = section.addparagraph()
paragraph.format.horizontalalignment = horizontalalignment.left
picture = paragraph.appendpicture("logo1.png")

# 设置图片大小
picture.width = 80
picture.height = 50

# 添加说明文字
paragraph = section.addparagraph()
paragraph.format.linespacing = 20
tr = paragraph.appendtext("以上为插入的示例图片。")
tr.characterformat.fontname = "宋体"
tr.characterformat.fontsize = 14

document.savetofile(outputfile, fileformat.docx)
document.close()

上述代码通过 document() 创建一个空白文档,调用 addsection() 添加节后,在节中新增段落并调用 appendpicture() 插入图片。返回的 picture 对象支持 widthheight 属性,单位为磅。如果不设置这两个属性,图片将以原始尺寸显示,可能导致图片过大而影响排版,因此在实际使用中建议根据文档版式统一指定尺寸。

使用 docpicture 控制位置与环绕

appendpicture() 方法虽然简单,但图片会跟随段落流式排列,无法精确控制其在页面中的绝对位置。当需要将图片放置在页面的指定坐标,或设置文字环绕效果时,应使用 docpicture 对象。docpicture 是 spire.doc 中表示文档图片的核心类,支持设置 horizontalpositionverticalposition 以及 textwrappingstyle 等高级属性。

from spire.doc import *
from spire.doc.common import *

inputfile = "/示例文档.docx"
outputfile = "/insertimagewithposition.docx"

# 加载文档
doc = document()
doc.loadfromfile(inputfile)

# 获取一个节
section = doc.sections[0]

# 创建图片对象并加载图片文件
picture = docpicture(doc)
picture.loadimage("/logo1.png")

# 设置纵向与横向的定位基准为“页面”
picture.verticalorigin = verticalorigin.page
picture.horizontalorigin = horizontalorigin.page

# 设置图片在页面中的绝对位置
picture.horizontalposition = 100
picture.verticalposition = 120

# 设置图片尺寸
picture.width = 80
picture.height = 50

# 设置文字环绕样式
picture.textwrappingstyle = textwrappingstyle.through

# 将图片插入到指定段落的起始位置
paragraph = section.addparagraph()
paragraph.childobjects.insert(0, picture)

doc.savetofile(outputfile, fileformat.docx)
doc.close()

这段代码的关键在于通过 docpicture(doc) 创建独立的图片对象,再调用 loadimage() 加载图片文件。horizontalpositionverticalposition 分别指定图片左上角的水平和垂直坐标,单位为磅。textwrappingstyle 属性决定文字如何围绕图片排列,through 表示文字穿透环绕,还有 square(四周环绕)、topandbottom(上下环绕)、behind(衬于文字下方)等多种可选值。最后通过 childobjects.insert() 将图片插入到段落的指定位置,实现精确的插入点控制。

在每一页添加图片

在某些场景下,如添加公司 logo 或水印图片,需要让图片出现在文档的每一页中。由于 word 的页面内容是动态流动的,无法直接在每一页上插入图片。解决思路是将图片放置在页眉或页脚中——页眉页脚的内容会自动在每一页重复显示。通过设置图片的 verticaloriginhorizontaloriginpage,可以将图片相对于页面进行定位,从而突破页眉页脚的默认区域限制。

from spire.doc import *
from spire.doc.common import *

inputfile = "/参考文档.docx"
outputfile = "addimagetoeachpage.docx"

# 打开 word 文档
document = document()
document.loadfromfile(inputfile)

imgpath = "logo1.png"

# 在页脚中添加图片并设置位置
picture = document.sections[0].headersfooters.footer.addparagraph().appendpicture(imgpath)

# 将图片的原点设为页面,使图片可以在整个页面范围内定位
picture.verticalorigin = verticalorigin.page
picture.horizontalorigin = horizontalorigin.page
picture.verticalalignment = shapeverticalalignment.bottom
picture.textwrappingstyle = textwrappingstyle.none

document.savetofile(outputfile, fileformat.docx)
document.close()

上述代码在文档第一节(sections[0])的页脚(footer)中添加段落并插入图片。默认情况下,页脚中的图片只能出现在页脚区域内,但通过将 verticaloriginhorizontalorigin 设置为 page,图片的坐标参考系从页脚区域切换为整个页面,此时 verticalalignment.bottom 会将图片固定在页面底部。textwrappingstyle.none 表示图片不与正文文字产生环绕关系,避免影响正文的排版布局。

设置图片的透明色

在某些设计场景中,可能需要将图片中的某种背景色设为透明,使图片与文档背景融合。spire.doc 提供了 transparentcolor 属性,可以将图片中指定的纯色像素变为透明。这一功能适用于处理具有单色背景的 logo 或图标。

from spire.doc import *
from spire.doc.common import *

inputfile = "./data/imagetemplate.docx"
outputfile = "settransparentcolor.docx"

# 加载文档
doc = document()
doc.loadfromfile(inputfile)

# 获取第一节的第一段
paragraph = doc.sections[0].paragraphs[0]

# 遍历段落中的子对象,找到图片并设置透明色
for k in range(paragraph.childobjects.count):
    obj = paragraph.childobjects.get_item(k)
    if isinstance(obj, docpicture):
        picture = obj
        picture.transparentcolor = color.get_blue()

doc.savetofile(outputfile, fileformat.docx)
doc.close()

这段代码遍历段落中的所有子对象,通过 isinstance(obj, docpicture) 判断是否为图片类型。找到图片后,将 transparentcolor 设置为蓝色(color.get_blue()),图片中所有与该颜色匹配的像素将变为透明。需要注意,透明色匹配是基于精确颜色值的,如果图片中的背景色与目标颜色存在细微色差,可能无法完全去除,建议在图片制作阶段尽量使用纯色背景。

实用技巧

调整已有图片的尺寸

对于已存在图片的文档,可以通过遍历段落的 childobjects 集合来定位图片并重置其尺寸,这在批量统一文档中图片大小的场景中非常实用。

from spire.doc import *
from spire.doc.common import *

inputfile = "./data/imagetemplate.docx"
outputfile = "resetimagesize.docx"

doc = document()
doc.loadfromfile(inputfile)

section = doc.sections[0]
paragraph = section.paragraphs[0]

# 重置段落中第一张图片的尺寸
for i in range(paragraph.childobjects.count):
    docobj = paragraph.childobjects.get_item(i)
    if isinstance(docobj, docpicture):
        picture = docpicture(docobj)
        picture.width = 50
        picture.height = 50
        break

doc.savetofile(outputfile, fileformat.docx)
doc.close()

上述代码通过 docpicture(docobj) 将已有的文档对象转换为图片对象,再设置 widthheight 属性。结合循环遍历所有段落,即可实现文档中全部图片的尺寸统一调整。

设置文字环绕类型

除了 textwrappingstyle 之外,textwrappingtype 属性可以进一步控制文字环绕的具体方式。例如 textwrappingtype.both 表示文字从图片的两侧环绕,适用于居中放置的图片。

for i in range(doc.sections.count):
    sec = doc.sections.get_item(i)
    for j in range(sec.paragraphs.count):
        para = sec.paragraphs.get_item(j)
        for k in range(para.childobjects.count):
            docobj = para.childobjects.get_item(k)
            if docobj.documentobjecttype == documentobjecttype.picture:
                picture = docobj
                picture.textwrappingstyle = textwrappingstyle.through
                picture.textwrappingtype = textwrappingtype.both

这段代码遍历文档中所有节、所有段落中的图片对象,统一设置环绕样式为 through 并指定环绕类型为 both,使文字从图片左右两侧同时环绕。

总结

本文介绍了使用 python 在 word 文档中精准插入与定位图片的方法。通过灵活配置图片的尺寸、文字环绕样式及透明度等属性,能够实现图文混排的全自动化,大幅提升排版效率,满足不同场景下的文档设计需求。

以上就是使用python实现快速在word文档中插入图片的详细内容,更多关于python word插入图片的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com