查看: 300|回复: 0

Python Spire.Doc 给Word添加文本和图片水印

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式
在合同、报告、内部草稿等 Word 文档流转场景里,水印常用于标识“机密”“草稿”或叠加公司 Logo。手工逐个设置,文件一多容易漏、样式难统一。用 Python 脚本可以把水印变成流水线的一步:批量、统一、可重复。本文以 Spire.Doc for Python 为例,给出文本水印、图片水印的代码实现,以及移除文档级水印的方法。

一、环境准备
Spire.Doc 是本文使用的 Word 操作库。安装命令:
  1. pip install Spire.Doc
复制代码
脚本中先导入模块:
  1. from spire.doc import *
  2. from spire.doc.common import *
复制代码

二、添加文本水印
TextWatermark 对象描述文本水印。Text 设置显示文本;FontSize 控制字号;Color 取预定义颜色;Layout 决定排布方式,WatermarkLayout.Diagonal 表示沿对角线倾斜铺满页面。把设置好的对象赋给 document.Watermark,再保存文档即可。
  1. from spire.doc import *
  2. from spire.doc.common import *
  3. # 加载 Word 文档
  4. document = Document()
  5. document.LoadFromFile("Sample.docx")
  6. # 创建文本水印并设置外观
  7. txtWatermark = TextWatermark()
  8. txtWatermark.Text = "Confidential"
  9. txtWatermark.FontSize = 95
  10. txtWatermark.Color = Color.get_Blue()
  11. txtWatermark.Layout = WatermarkLayout.Diagonal
  12. # 把水印应用到文档
  13. document.Watermark = txtWatermark
  14. # 保存结果
  15. document.SaveToFile("TextWatermark.docx", FileFormat.Docx)
  16. document.Close()
复制代码
执行后生成 TextWatermark.docx。TextWatermark() 先构造空对象,再通过属性设置外观。FontSize 越大,水印文字越明显。Color.get_Blue() 只是预定义颜色之一,也可以使用 Color.get_Red()、Color.get_Gray() 等;需要任意颜色时用 Color.FromArgb(r, g, b)。Layout 选用 Diagonal 时,文字会沿对角线倾斜。

三、添加图片水印
图片水印用 PictureWatermark 对象。SetPicture() 接收图片本地路径,常见 PNG、JPG 等格式可用;Scaling 是缩放百分比,250 表示按原始尺寸的 250% 放置;IsWashout 控制是否做冲蚀淡化,False 表示保留原色、不淡化。
  1. from spire.doc import *
  2. from spire.doc.common import *
  3. document = Document()
  4. document.LoadFromFile("Sample.docx")
  5. # 创建图片水印并设置外观
  6. picture = PictureWatermark()
  7. picture.SetPicture("Logo.png")
  8. picture.Scaling = 250
  9. picture.IsWashout = False
  10. # 把水印应用到文档
  11. document.Watermark = picture
  12. document.SaveToFile("ImageWatermark.docx", FileFormat.Docx)
  13. document.Close()
复制代码
生成 ImageWatermark.docx。同样是把 PictureWatermark 对象赋给 document.Watermark。如果希望 Logo 更淡、更像背景底纹,可将 IsWashout 设为 True。

四、移除文档中的水印
定稿或对外发布前,常需要去掉草稿阶段的水印。document.Watermark 管理的是文档级水印,无论之前添加的是文本水印还是图片水印,将其设为 None 即可移除:
  1. from spire.doc import *
  2. from spire.doc.common import *
  3. document = Document()
  4. document.LoadFromFile("ImageWatermark.docx")
  5. # 将水印设为 None 即可移除文本和图片水印
  6. document.Watermark = None
  7. document.SaveToFile("RemoveWatermark.docx", FileFormat.Docx2013)
  8. 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 免费版会在文档上添加评估警告,并对页数有上限,正式批量处理时需注意这一限制。
- 批量化:可以把加载文档、设置 document.Watermark、保存、Close 的流程封装成函数,再遍历目录中的 .docx 文件,把加水印接入报告生成、合同分发等自动化流程。

总结:TextWatermark 添加文本水印,PictureWatermark 添加图片水印,document.Watermark = None 移除文档级水印。掌握这三个入口后,结合批量遍历逻辑,就能把 Word 水印处理脚本化。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-9-18 15:23 , Processed in 0.022200 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部