1.4 PDF文档水印添加
【1】安装库
bash
pip install reportlab
pip install PyPDF2
【2】代码
python
import io
from PyPDF2 import PdfWriter, PdfReader
from reportlab.lib import pagesizes # 页面样式
from reportlab.lib.units import cm
from reportlab.pdfbase import pdfmetrics # 注册字体
from reportlab.pdfbase.ttfonts import TTFont # 字体类
from reportlab.pdfgen import canvas
pdfmetrics.registerFont(TTFont('SimHei', 'SimHei.ttf'))
# 生成水印文件
def create_water_mark(text):
packet = io.BytesIO()
# 创建一个带有水印的新PDF页
my_canvas = canvas.Canvas(packet, pagesizes.A4)
# 设置水印字体
my_canvas.setFont("SimHei", 40)
# 填充色
my_canvas.setFillColorRGB(0, 0, 0)
# 透明度
my_canvas.setFillAlpha(0.1)
# 设置字体旋转度数
my_canvas.rotate(15)
# x轴的3cm处,到24结束,步长是10
for i in range(3, 24, 10):
# y轴的
for j in range(-5, 30, 5):
my_canvas.drawString(i * cm, j * cm, text)
my_canvas.save()
packet.seek(0)
return PdfReader(packet)
def add_watermark(input_pdf_path, output_pdf_path, watermark_text):
# 创建水印
watermark = create_water_mark(watermark_text)
# 读取输入 PDF
pdf_reader = PdfReader(input_pdf_path)
pdf_writer = PdfWriter()
# 遍历每一页,将水印添加到每一页
for page in pdf_reader.pages:
page.merge_page(watermark.pages[0]) # 将水印添加到当前页面
pdf_writer.add_page(page)
# 写入到输出 PDF 文件
with open(output_pdf_path, "wb") as output_pdf:
pdf_writer.write(output_pdf)
if __name__ == '__main__':
# 示例使用
input_pdf = "./file/test.pdf" # 输入的 PDF 文件路径
output_pdf = "output_with_watermark.pdf" # 输出的 PDF 文件路径
watermark_text = "不写八个" # 水印文本
add_watermark(input_pdf, output_pdf, watermark_text)
【3】代码解释
- create_watermark:这个函数使用 ReportLab 创建一个包含水印文本的 PDF 文件。水印文本的位置和字体大小可以根据需要调整。
- add_watermark:该函数读取输入的 PDF 文件,并将水印应用到每一页。最后,生成的新 PDF 文件将保存到指定的输出路径。
- 通过设置
input_pdf
,output_pdf
和watermark_text
,你可以轻松地将水印添加到任何 PDF 文件。
【4】生成效果