如何使用 Python 给 Word 文档添加水印

在合同、报告、草稿等文档中,水印是一种常见的视觉标记:它可以标明"机密""草稿"等状态,也可以叠加公司 Logo 做品牌标识。手动在 Word 里逐个打开文件加水印,遇到几十份文档时既耗时又容易遗漏。用 Python 可以批量、统一地把文本或图片水印加到一批 Word 文档上,特别适合自动生成带版权的报告,或对外分发前的标记处理。本文以 Spire.Doc for Python 为例,演示文本水印、图片水印的添加,以及水印的移除。

为什么用 Python 添加水印

通过脚本处理水印有几个实际好处:

  • 批量处理:一次脚本给成百上千份文档统一加水印,无需人工逐个操作。
  • 样式一致:字体、字号、颜色、倾斜角度都由代码控制,保证每份文档效果完全相同。
  • 可重复:把加水印做成流水线的一步,配合转换、合并等其它操作自动执行。

环境准备

安装 Spire.Doc 库:

bash 复制代码
pip install Spire.Doc

在脚本中引入模块:

python 复制代码
from spire.doc import *
from spire.doc.common import *

添加文本水印

文本水印是最常用的形式,比如把"机密"或公司名平铺到页面背景。Spire.Doc 用 TextWatermark 对象描述一个文本水印,设置好文本、字号、颜色和版式后,赋值给 document.Watermark 即可:

python 复制代码
from spire.doc import *
from spire.doc.common import *

# 加载 Word 文档
document = Document()
document.LoadFromFile("Sample.docx")

# 创建文本水印并设置外观
txtWatermark = TextWatermark()
txtWatermark.Text = "Confidential"
txtWatermark.FontSize = 95
txtWatermark.Color = Color.get_Blue()
txtWatermark.Layout = WatermarkLayout.Diagonal

# 把水印应用到文档
document.Watermark = txtWatermark

# 保存结果
document.SaveToFile("TextWatermark.docx", FileFormat.Docx)
document.Close()

输出结果:

TextWatermark() 构造一个空的水印对象。Text 是要显示的文本内容;FontSize 控制字号,数值越大水印文字越大;Color 通过 Color.get_Blue() 这类静态方法取预定义颜色;Layout 决定排布方式,WatermarkLayout.Diagonal 让文字沿对角线倾斜铺满页面。最后把对象赋给 document.Watermark,保存后水印就写入文档了。

添加图片水印

除了文字,也可以用公司 Logo 或印章图片做水印。PictureWatermark 对象负责图片水印,通过 SetPicture() 指定图片路径,再用 Scaling 和 IsWashout 调整大小和淡化程度:

python 复制代码
from spire.doc import *
from spire.doc.common import *

document = Document()
document.LoadFromFile("Sample.docx")

# 创建图片水印并设置外观
picture = PictureWatermark()
picture.SetPicture("Logo.png")
picture.Scaling = 250
picture.IsWashout = False

# 把水印应用到文档
document.Watermark = picture

document.SaveToFile("ImageWatermark.docx", FileFormat.Docx)
document.Close()

输出结果:

SetPicture() 接收图片的本地路径,支持常见的 PNG、JPG 等格式。Scaling 是缩放百分比,例如 250 表示按图片原始尺寸的 250% 放置,调大可以让 Logo 更醒目;IsWashout 控制是否做"冲蚀"淡化处理,False 表示保留图片原色、不做淡化。赋值给 document.Watermark 后保存即可。

移除文档中的水印

当文档定稿、要对外正式发布时,常常需要去掉草稿阶段加的水印。无论原来加的是文本水印还是图片水印,把 document.Watermark 设为 None 即可一次性清除:

python 复制代码
from spire.doc import *
from spire.doc.common import *

document = Document()
document.LoadFromFile("ImageWatermark.docx")

# 将水印设为 None 即可移除文本和图片水印
document.Watermark = None

document.SaveToFile("RemoveWatermark.docx", FileFormat.Docx2013)
document.Close()

这个方法对文本水印和图片水印都生效,不需要区分类型。注意它移除的是文档级水印;如果某些水印是以页眉图片等形式手动嵌入的,则不在 document.Watermark 的管理范围内。

实用提示

  • 版式选择 :WatermarkLayout 除了 Diagonal(对角线倾斜),也提供水平铺排的选项,可按文档风格切换。
  • 颜色设置 :Color.get_Blue() 只是预定义颜色之一,也可以用 Color.get_Red()、Color.get_Gray() 等;需要任意颜色时可用 Color.FromArgb(r, g, b)。
  • 淡化效果 :图片水印把 IsWashout 设为 True 会得到更淡、更不抢眼的背景效果,适合做品牌底纹。
  • 资源释放 :每次处理完文档都调用 document.Close(),避免长期持有文件句柄。
  • 免费版限制:Spire.Doc 的免费版会在文档上添加评估警告,并对页数有上限,正式批量处理时需注意这一限制。

总结

本文演示了用 Python 在 Word 文档中操作水印的三种常见场景:TextWatermark 添加文本水印、PictureWatermark 添加图片水印,以及把 document.Watermark 设为 None 来移除水印。掌握这些后,结合批量遍历文件的逻辑,就可以把加水印无缝接入报告生成、合同分发等自动化流程中。

相关推荐
知识分享小能手8 小时前
机器学习教程,从入门到精通,机器学习概述 + Python 语言基础 · 知识点详解(1)
人工智能·python·机器学习
郝学胜-神的一滴9 小时前
AI 编程智能体 16:从零基础搭建到精细化优化
人工智能·python·算法·语言模型·langchain·pip
又蓝9 小时前
【元宝搜索开发者征文大赛】用 FastAPI + Vue3 做了个 AI 炒股工具,接了六个分析师和腾讯元宝搜索
人工智能·python·ai·fastapi
2601_966949659 小时前
为什么不应该把 QuantDash API Key 直接写进公开代码仓库?从 Git 提交历史理解凭证泄露风险
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
在世修行9 小时前
智学文枢:文科分析引擎
python·ai·pyside·文科分析
包小黑9 小时前
Python 转 EXE (实用工具)
开发语言·python
花间相见9 小时前
【计算基础|Redis01】【上手】安装连接、配置与通用命令
数据库·后端·面试
全栈练习生9 小时前
DeepSeek 稀疏注意力
python·ai
我命由我1234510 小时前
6-3.Python 异常处理 - 异常处理进阶(else 块与 finally 块、异常传递、自定义异常)
开发语言·前端·数据库·后端·python·学习·java-ee
深入云栈10 小时前
Netty 4.2.x 源码深度解析 (二十一):Pipeline 事件传播 —— Inbound 与 Outbound 的双向流转
java·后端·架构