pdf 文档中的文字水印是以半透明的形式显示在 pdf 页面上的文本。通过在 pdf 页面上展示凯发线上登陆下载网址的版权、保密性、作者、公司或其他信息,水印能够保护文档的凯发线上登陆下载网址的版权和信息安全,便于文档的识别和管理,同时也有助于品牌宣传。无论是公开发布的文档还是需要保密的文档,都可以通过在文档中添加文字水印来实现文档的保护和个性化。本文将介绍如何使用 spire.pdf for python 通过 python 程序在 pdf 文档中添加文字水印。
安装 spire.pdf for python
本教程需要用到 spire.pdf for python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.pdf
如果您不确定如何安装,请参考此教程:如何在 vs code 中安装 spire.pdf for python
在 pdf 文档中添加单行文字水印
单行文字水印是指只在页面中央倾斜单独显示的文字水印。以下是在 pdf 文档中添加单行文字水印的详细操作步骤:
- 创建一个 pdfdocument 类的对象,并使用 pdfdocument.loadfromfile() 方法加载一个 pdf 文档。
- 创建字体。
- 指定水印文本并计算水印的位置。
- 循环遍历文档中的页面以添加水印。
- 使用 pdfdocument.pages.get_item() 方法获取页面。
- 使用 pdfpagebase.canvas.settransparency() 方法设置水印透明度。
- 使用 pdfpagebase.canvas.translatetransform() 方法将页面坐标系平移到指定位置,并使用 pdfpagebase.canvas.rotatetransform() 方法将坐标系逆时针旋转45度,从而使水印位于页面中央且逆时针倾斜45度。
- 使用 pdfpagebase.canvas.drawstring() 方法在页面上绘制水印文本。
- 使用 pdfdocument.savetofile() 方法保存文档。
- python
from spire.pdf import *
from spire.pdf.common import *
import math
# 创建pdfdocument类的对象
pdf = pdfdocument()
# 加载pdf文档
pdf.loadfromfile("示例.pdf")
# 创建pdftruetypefont类的对象
font = pdftruetypefont("harmonyos sans sc", 48.0, 0, true)
# 指定水印文本并计算水印位置
text = "禁止复制"
set1 = float (font.measurestring(text).width * math.sqrt(2) / 4)
set2 = float (font.measurestring(text).height * math.sqrt(2) / 4)
# 遍历文档中的页面
for i in range(pdf.pages.count):
# 获取页面
page = pdf.pages.get_item(i)
# 设置水印的透明度
page.canvas.settransparency(0.5)
# 将页面坐标系平移至指定位置
page.canvas.translatetransform(page.canvas.size.width / 2 - set1 - set2,
page.canvas.size.height / 2 set1 - set2)
# 逆时针旋转坐标系45度
page.canvas.rotatetransform(-45.0)
# 在页面上绘制水印
page.canvas.drawstring(text, font, pdfbrushes.get_cyan(), 0.0, 0.0)
# 保存文档
pdf.savetofile("output/单行文本水印.pdf")
pdf.close()
在 pdf 文档中添加多行文字水印
多行文字水印是指在 pdf 页面上有规律地重复多次的文字水印。用户可使用 pdftillingbrush 对象插入多行文本水印,并可通过修改对象的大小来控制水印的重复次数。具体操作步骤如下:
- 创建一个 pdfdocument 类的对象,并使用 pdfdocument.loadfromfile() 方法加载 pdf 文档。
- 创建字体并指定水印文本。
- 循环遍历文档中的页面以添加水印。
- 使用 pdfdocument.pages.get_item() 方法获取页面。
- 创建一个 pdftillingbrush 类的对象并设置其大小。
- 使用 pdftillingbrush.graphics.settransparency() 方法设置水印透明度。
- 使用 pdftillingbrush.graphics.translatetransform() 方法将坐标系平移到指定位置,并使用 pdftillingbrush.graphics.rotatetransform() 方法将坐标系逆时针旋转45度,使水印位于每次重复的中心位置且逆时针倾斜45度。
- 使用 pdftillingbrush.graphics.drawstring() 方法在平铺笔刷上绘制水印文本。
- 使用 pdfpagebase.canvas.drawrectangle() 方法在页面上绘制水印。
- 使用 pdfdocument.savetofile() 方法保存文档。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建pdfdocument类的对象
pdf = pdfdocument()
# 加载pdf文档
pdf.loadfromfile("示例.pdf")
# 创建pdftruetypefont类的对象
font = pdftruetypefont("harmonyos sans sc", 32.0, 0, true)
# 指定水印文本
text = "文旅中心"
# 遍历文档的每一页
for i in range(pdf.pages.count):
# 获取一页
page = pdf.pages.get_item(i)
# 创建pdftilingbrush类的对象
brush = pdftilingbrush(sizef(page.canvas.clientsize.width / float(3), page.canvas.clientsize.height / float(3)))
# 设置水印的透明度
brush.graphics.settransparency(0.3)
brush.graphics.save()
# 将画刷的坐标系平移到指定位置
brush.graphics.translatetransform(brush.size.width / float(2), brush.size.height / float(2))
# 逆时针旋转坐标系45度
brush.graphics.rotatetransform(-45.0)
# 在画刷上绘制水印文本
brush.graphics.drawstring(text, font, pdfbrushes.get_violet(), 0.0, 0.0, pdfstringformat(pdftextalignment.center))
brush.graphics.restore()
brush.graphics.settransparency(1.0)
# 在页面上绘制水印
page.canvas.drawrectangle(brush, rectanglef(pointf(0.0, 0.0), page.canvas.clientsize))
# 保存pdf文档
pdf.savetofile("output/多行文本水印.pdf")
pdf.close()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。