要塞攻击免广告版
210.79MB · 2025-10-31

水印技术是保护文档安全、声明所有权及防止未经授权复制的关键手段。无论是分发草稿还是为最终交付成果添加品牌标识,使用水印都能有效保护您的内容。E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化信创,帮助企业高效构建文档处理的应用程序。本教程将指导您如何使用 Spire.PDF for Python 在 Python 中为 PDF 文件添加水印 。
我们将逐步演示如何插入文字水印与图片水印、调整透明度与定位,并解决常见问题——所有步骤均配有清晰且注释完善的代码示例。
Spire.PDF for Python免费试用下载 ,请联系Spire官方授权代理商
加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。
Spire.PDF for Python 是一款功能强大的 PDF 处理库,特别针对水印功能提供以下特性:
开始前请确保已通过以下命令安装库:
pip install spire.pdfSpire.PDF for Python免费试用下载 ,请联系Spire官方授权代理商
加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。
以下代码演示如何为 PDF 每页添加倾斜的"禁止复制"文字水印,包含字号、颜色、位置、旋转角度及透明度的专业级设置:
from spire.pdf import *
from spire.pdf.common import *
import math
# 创建PdfDocument类的对象
doc = PdfDocument()
# 从指定路径加载PDF文档
doc.LoadFromFile("C:\Users\Administrator\Desktop\Input.pdf")
# 为水印字体创建PdfTrueTypeFont类的对象
font = PdfTrueTypeFont("黑体", 48.0, 0, True)
# 指定水印文本
text = "禁 止 复 制"
# 测量文本的尺寸以确保正确定位
text_width = font.MeasureString(text).Width
text_height = font.MeasureString(text).Height
# 循环遍历文档中的每一页
for i in range(doc.Pages.Count):
    # 获取当前页面
    page = doc.Pages.get_Item(i)
    
    # 保存当前画布状态
    state = page.Canvas.Save()
 
    # 计算页面的中心坐标
    x = page.Canvas.Size.Width  / 2
    y = page.Canvas.Size.Height / 2
    # 将坐标系平移到中心,使页面的中心成为原点(0, 0)
    page.Canvas.TranslateTransform(x, y)
    
    # 将画布逆时针旋转45度以显示水印
    page.Canvas.RotateTransform(-45.0)
    # 设置水印的透明度
    page.Canvas.SetTransparency(0.4)
    
    # 使用负偏移量在中心位置绘制水印文本
    page.Canvas.DrawString(text, font, PdfBrushes.get_Blue(), PointF(-text_width / 2, -text_height / 2))
    
    # 恢复画布状态,以防止变换影响后续绘图
    page.Canvas.Restore(state)
# 将修改后的文档保存到新的PDF文件
doc.SaveToFile("output/TextWatermark.pdf")
# 释放资源
doc.Dispose()代码解析:
效果图:

以下代码演示如何为PDF每一页添加半透明图片水印,确保精准定位并呈现专业视觉效果。
from spire.pdf import *
from spire.pdf.common import *
# 创建PdfDocument类的对象
doc = PdfDocument()
# 从指定路径加载PDF文档
doc.LoadFromFile("C:\Users\Administrator\Desktop\Input.pdf")
# 从指定路径加载水印图像
image = PdfImage.FromFile("C:\Users\Administrator\Desktop\logo.png")
# 获取加载的图像的宽度和高度以进行定位
imageWidth = float(image.Width)
imageHeight = float(image.Height)
# 循环遍历文档中的每一页以应用水印
for i in range(doc.Pages.Count):
    # 获取当前页面
    page = doc.Pages.get_Item(i)
    # 将水印的透明度设置为50%
    page.Canvas.SetTransparency(0.5)
    # 获取当前页面的尺寸
    pageWidth = page.ActualSize.Width
    pageHeight = page.ActualSize.Height
    # 计算x和y坐标以将图像居中放置在页面上
    x = (pageWidth - imageWidth) / 2
    y = (pageHeight - imageHeight) / 2
    # 在计算出的中心位置绘制图像
    page.Canvas.DrawImage(image, x, y, imageWidth, imageHeight)
# 将修改后的文档保存到新的PDF文件
doc.SaveToFile("output/ImageWatermark.pdf")
# 释放资源
doc.Dispose()代码解析:
效果图:

除了水印之外,您还可以为 PDF 添加图章。与水印固定位置不同,图章可以自由移动或删除,为文档批注提供了更大的灵活性。
借助 Spire.PDF for Python 库,为 PDF 文档添加水印既简单便捷又功能强大。您既可以批量添加醒目的"机密"警示水印,也能嵌入品牌 Logo 作为优雅的背景标识。该库支持灵活的坐标定位、透明度调节、旋转等高级功能,让您能够根据文档类型和使用场景,轻松打造专业级的水印解决方案。
可以,您只需在遍历PDF页面的循环中结合使用两种水印添加方法即可。
与文字水印示例类似,在绘制图片前使用 Canvas.RotateTransform( 角度) 方法即可实现旋转。
支持。当使用PNG图片作为水印时,Spire.PDF会保留其原有的透明度。
完全可以。您可以在页面循环中添加条件判断逻辑,根据页码或其他标准为不同页面应用不同的水印。
Spire.PDF for Python免费试用下载 ,请联系Spire官方授权代理商
加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。
 
                    