Python 教程:怎样快速在 PDF 中添加水印(笔墨、图片) [复制链接]
发表于 2025-11-13 15:19:22 | 显示全部楼层 |阅读模式
在 PDF 文件中添加水印,是掩护文档内容的一种常见方式。无论是为文件加上公司 Logo、版权声明,还是保密标识,水印都能有用标注内容归属,并提示读者留意文档的机密性。不外,手动添加水印每每既费时又繁琐。荣幸的是,在本日的教程中,你将学习怎样使用 Python 快速为 PDF 添加笔墨或图片水印,让这统统变得简朴高效!
在本篇教程中,我们使用 Spire.PDF for Python 来演示。这是一个专业的 PDF 库,可以资助开发者高效处理处罚 PDF 干系的各种任务。该组件还为小型项目提供了免费版,你可以导航到官网举行下载。


使用 Python 在 PDF 中添加笔墨水印

一样平常来说,水印分为笔墨和图片两种,笔墨水印多为()类的信息,可以有用....。在 Spire.PDF 中,我们重要使用 Canvas.DrawString() 方法来绘制,通过该方法你可以在 PDF 页面上的指定位置添加恣意文本水印。下面是具体的代码步调和代码示例。
一样平常来说,PDF 水印分为笔墨水印和图片水印两种。笔墨水印通常用于标注文档属性或版权信息,比方“机密文件”“内部资料”“版权全部”等,不但能起到警示作用,还能有用防止文件被未经授权使用。在 Spire.PDF 中,我们可以通过 Canvas.DrawString() 方法在 PDF 页面上的指定位置绘制笔墨,实现机动的文本水印结果。接下来我们看看具体的实现步调和示例代码。
在 PDF 中添加笔墨水印的步调:

  • 创建一个 PdfDocument 类的对象,并加载 PDF 文件。
  • 创建 PdfTrueTypeFont 实例。
  • 自界说水印的文本,并指定水印的位置。
  • 遍历全部 PDF 页面。

    • 获取当前页面。
    • 通过 PdfPageBase.Canvas.SetTransparency() 方法设置水印透明度。
    • 使用 PdfPageBase.Canvas.TranslateTransform() 方法将页面坐标系平移到指定位置,并使用 PdfPageBase.Canvas.RotateTransform() 方法将坐标系逆时针旋转45度,从而使水印位于页面中央且逆时针倾斜45度。
    • 使用 PdfPageBase.Canvas.DrawString() 方法在页面上绘制水印文本。

  • 将修改后的 PDF 生存为新的文档。
下方的代码展示了怎样在 PDF 文件中添加“克制复制”的文本水印:
  1. from spire.pdf import *
  2. from spire.pdf.common import *
  3. import math
  4. # 创建PdfDocument类的对象
  5. pdf = PdfDocument()
  6. # 加载PDF文档
  7. pdf.LoadFromFile("/input/示例文档.pdf")
  8. # 创建PdfTrueTypeFont类的对象
  9. font = PdfTrueTypeFont("KaiTi", 48.0, 0, True)
  10. # 指定水印文本并计算水印位置
  11. text = "禁止复制"
  12. set1 = float (font.MeasureString(text).Width * math.sqrt(2) / 4)
  13. set2 = float (font.MeasureString(text).Height * math.sqrt(2) / 4)
  14. # 遍历文档中的页面
  15. for i in range(pdf.Pages.Count):
  16.     # 获取页面
  17.     page = pdf.Pages.get_Item(i)
  18.     # 设置水印的透明度
  19.     page.Canvas.SetTransparency(0.5)
  20.     # 将页面坐标系平移至指定位置
  21.     page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - set1 - set2,
  22.                                    page.Canvas.Size.Height / 2 + set1 - set2)
  23.     # 逆时针旋转坐标系45度
  24.     page.Canvas.RotateTransform(-45.0)
  25.     # 在页面上绘制水印
  26.     page.Canvas.DrawString(text, font, PdfBrushes.get_BlueViolet(), 0.0, 0.0)
  27. # 保存文档
  28. pdf.SaveToFile("/output/文本水印.pdf")
  29. pdf.Close()
复制代码
添加文本水印后的 PDF 文件预览:


通过 Python 在 PDF 中添加图片水印

图片水印在现实工作中的应用非常广泛,好比在陈诉、发票或条约中参加公司 Logo、水印配景图或签章图像,不但能提升文档的专业度,还能起到防伪与品牌辨认的作用。在 Spire.PDF 中,同样可以通过 Canvas 类来实现这一功能。差别于绘制笔墨水印,这里我们将使用 DrawImage() 方法,将图片准确地添加到 PDF 页面中。下面就让我们看看具体的代码实现,相识图片水印是怎样被机动嵌入到 PDF 中的。
在 Python 中添加图片水印的步调:

  • 创建一个 PdfDocument 类的对象,并加载 PDF 文件。
  • 通过 PdfImage.FromFile() 方法加载水印图片,然后获取该图片的宽度和高度。
  • 遍历 PDF 中的每一页。

    • 获取当前页面。
    • 使用 PdfPageBase.Canvas.SetTransparency() 方法设置水印的透明度。
    • 使用 PdfPageBase.Canvas.DrawImage() 方法在页面中央绘制水印图像。

  • 生存修改后的 PDF 文件。
下方是实现在 PDF 中添加图片水印的完备代码:
  1. from spire.pdf import *
  2. from spire.pdf.common import *
  3. # 创建 PdfDocument 类的对象
  4. pdf = PdfDocument()
  5. # 加载 PDF 文档
  6. pdf.LoadFromFile("/input/示例文档.pdf")
  7. # 加载水印图像
  8. image = PdfImage.FromFile("\禁止.png")
  9. # 获取图像的宽度和高度
  10. imageWidth = float(image.Width)
  11. imageHeight = float(image.Height)
  12. # 循环遍历文档中的页面
  13. for i in range(pdf.Pages.Count):
  14.     # 获取页面
  15.     page = pdf.Pages.get_Item(i)
  16.     # 设置水印的透明度
  17.     page.Canvas.SetTransparency(0.3)
  18.     # 获取页面的宽度和高度
  19.     pageWidth = page.ActualSize.Width
  20.     pageHeight = page.ActualSize.Height
  21.     # 在页面上绘制水印图像
  22.     page.Canvas.DrawImage(image, pageWidth/2 - imageWidth/2, pageHeight/2 - imageHeight/2, imageWidth, imageHeight)
  23. # 保存文档
  24. pdf.SaveToFile("/output/图像水印.pdf")
  25. pdf.Close()
复制代码
添加图片水印的 PDF 文件预览:


常见题目与办理办法

题目 1:添加水印后,PDF 文件体积显着增大?
办理办法: 如果使用的是高分辨率图片作为水印,文件体积大概会增长。发起在添加前得当压缩图片巨细,或使用矢量格式的 Logo,以淘汰文件占用。
题目 2:水印位置不精确或超出页面范围?
办理办法: 查抄绘制水印时设置的坐标参数,确保其位于页面的有用地区内。可以通过 PdfPageBase.GetClientSize() 方法获取页面宽高,根据尺寸动态盘算符合的水印位置。
题目 3:水印内容太显着,遮挡了正文?
办理办法: 调解笔墨水印的透明度或颜色,使其更柔和。对于图片水印,可设置较低的不透明度值(如 0.2~0.4),既能标示信息,又不影响阅读。
题目 4:多页 PDF 只表现了部分页面的水印?
**办理办法: **请确保在循环中为每一页都调用了绘制方法。可通过遍历 PDF 中的页面,在每页的 Canvas 上分别绘制水印,以包管整个文档的划一性。
题目 5:天生的 PDF 打不开或表现非常?
**办理办法: **这通常是由于文件未精确生存或在写入时被占用造成的。请确认生存路径有用,且在生存之前关闭其他占用该文件的步伐。

总结

通过以上方法,我们可以轻松地在 PDF 文件中添加笔墨或图片水印,无论是用于版权掩护、信息标识,还是提升文件的专业性。借助 Spire.PDF for Python,你无需繁琐操纵,就能高效实现各种水印结果,让文档管理更加安全、便捷。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表