我们自己制作的 PDF 文件,为了避免被别人滥用,通常会加上水印。而市面上很多工具都是收费的,这无疑增加了我们的成本。
所以,我使用 Python 编写了一段加水印的代码,可以批量的为多个 PDF 文件加水印,完全是免费的,在这里分享给大家。
上面的 GIF 图片就是批量加水印的过程。在使用前,需要准备水印文件,并安装
PyPDF2
库,下面是详细教程。
创建一个 Word 文档,用 WPS 工具插入一个水印。水印可以是图片,也可以是文字,根据自己的需要编辑即可。最后将 Word 文件转换成 PDF ,这样水印文件就制作完成了。
下面截图是我制作的一个水印文件,文件名为“水印.pdf”。
PyPDF2
库PyPDF2
是一个免费且开源的 Python 第三方库,主要用来操作 PDF 文件。其功能主要包括拆分、合并、裁剪、转换、加密、加水印等。
下面是安装命令:
pip install PyPDF2
获取指定目录下所有 PDF 文件:
def get_pdf_files(input_path):
# 创建一个空的列表,用于存放所有PDF文件
pdf_files = list()
# 获取该目录下所有文件,并遍历
for filename in os.listdir(input_path):
# 筛选出所有PDF文件,并放入 pdf_files 中
if filename.endswith(".pdf"):
if filename.endswith("水印.pdf"):
# 忽略带水印的PDF文件
continue
pdf_files.append(input_path + filename)
return pdf_files
为 PDF 文件添加水印:
def add_watermark(watermark_file, pdf_file):
# 读取水印文件,并获取含有水印的页
watermark_reader = PdfReader(watermark_file)
watermark_page = watermark_reader.pages[0]
# 创建一个写缓存,用于缓存合并后的结果页
pdf_writer = PdfWriter()
# 读取PDF文件
pdf_reader = PdfReader(pdf_file)
# 获取PDF所有页,并遍历
for pdf_page in pdf_reader.pages:
# 将水印页合并到当前页上,并添加到写缓存中
pdf_page.merge_page(watermark_page)
pdf_writer.add_page(pdf_page)
# 将合并后的PDF文件,写入到指定地址
with open("_水印".join(os.path.splitext(pdf_file)), "wb") as result_path:
pdf_writer.write(result_path)
加水印后的效果:
获取源码,请在下方「水滴技术」公众号回复:20230609