一、制作水印
# 用来创建画布(常见空白的pdf文件)
from reportlab.pdfgen.canvas import Canvas
# 用来对字体进行注册
from reportlab.pdfbase.pdfmetrics import registerFont
from reportlab.pdfbase.ttfonts import TTFont
# 1.创建一个空白文件(画布)
# 在指定的位置新建空白的pdf文件:Canvas(文件路径)
file = Canvas('file/MyWater.pdf')
# 2.添加文字
# 1)注册字体
registerFont(TTFont('f1', 'file/aa.ttf'))
# 2)设置字体的名字和字体大小
file.setFont('f1', 80)
# 3)设置字体颜色
# r、g、b: 0 ~ 1
# 透明度:0 ~ 1
file.setFillColorRGB(139/255, 69/255, 19/255, 0.2)
# 4)旋转
file.rotate(45)
# 文件对象.drawString(x坐标, y坐标, )
file.drawString(180, 60, '这是一个小熊猫水印')
file.rotate(-45)
# 3.渲染图片
# 文件对象.drawImage(图片地址, x坐标, y坐标, mask='auto')
file.setFillColorRGB(139/255, 69/255, 19/255, 0.3)
for i in range(70,800,200):
for j in range(70,2000,150):
file.drawImage('file/小熊猫.png', i, j-i, mask='auto')
# 保存
file.save()
![](https://i-blog.csdnimg.cn/blog_migrate/ed9d2f77b4b9a928b760b5c43ea684d5.png)
二、给pdf添加水印
from PyPDF2 import PdfWriter, PdfReader
reader1 = PdfReader('file/MyWater.pdf')
water = reader1.getPage(0)
reader = PdfReader('file/常微分.pdf')
writer = PdfWriter()
for x in range(reader.getNumPages()):
page = reader.getPage(x)
merge_page = page.mergePage(water)
writer.addPage(page)
writer.write('file/常微分(水印).pdf')
![](https://i-blog.csdnimg.cn/blog_migrate/3d48212094712c40863f60236a6fc1d6.png)
三、批量加水印
将input文件夹中的pdf文件全部加水印储存到out文件夹中,并删除input文件夹中的原文件
from PyPDF2 import PdfWriter, PdfReader
import os
dir = os.listdir('input')
for i in dir:
reader1 = PdfReader('file/MyWater.pdf')
water = reader1.getPage(0)
reader = PdfReader('input/'+i)
writer = PdfWriter()
for x in range(reader.getNumPages()):
page = reader.getPage(x)
merge_page = page.mergePage(water)
writer.addPage(page)
writer.write('out/'+i+'(水印).pdf')
os.remove('input/'+i)
![](https://i-blog.csdnimg.cn/blog_migrate/fd04be995ff685d4dc738d9fd804c8a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c54ca51cfe0a7d5df21d6688f19cc8fb.png)