在日常工作中,有时我需要给大量的 PDF 文件添加水印。一个两个还好,但是如果有一二十个甚至四五百个个,如果都是手动给每个 PDF 文件添加水印,这项任务就会变得非常繁琐和耗时。
浪费时间来睡觉、享受美食上我一点都无所谓,但浪费时间在工作上,这是我绝不能接收的!!
针对这一痛点,我开始寻找自动化的解决方案,以提高效率并减轻工作负担。
手动为大量 PDF 文件添加水印存在以下痛点:
针对上述痛点,我准备通过程序实现自动化添加水印。很快,我用 Python 实现了将目标目录下所有PDF文件添加指定水印并输出在指定目录的功能,还可以对加水印后的PDF文件名添加自定义后缀。
版权声明:
版权所有 (c) 2024 课补乐科技工作室,作者:微信公众号KeepLearner
本程序知识产权属于作者和工作室。特此免费授予任何单位或个人获得本程序和相关文件副本,不受限制地使用、复制、修改、发布本程序,但不允许以任何形式(包括但不限于:以源代码形式、以二进制形式、以修改后的代码形式)向第三方出售、出租、转让本程序。
向外发布时应在显著位置注明来源(微信公众号KeepLearner)。
联系方式:
import os # 导入操作系统模块
from PyPDF2 import PdfReader, PdfWriter # 导入 PyPDF2 库中的 PdfReader 和 PdfWriter 类
def add_watermark_to_pdf(pdf_file, watermark_file, output_directory, output_suffix):
'''
合并水印到PDF文件中
:param pdf_file: 输入文件路径
:param watermark_file: 水印文件路径
:param output_directory: 输出文件路径
:param output_suffix: 输出文件后缀
:return:
'''
pdf_reader = PdfReader(pdf_file) # 读取需要添加水印的文件
pdf_writer = PdfWriter() # 创建PDF文件写入对象
watermark_file = PdfReader(watermark_file) # 读取水印PDF(假设水印页只有一页)
for page_num in range(len(pdf_reader.pages)): # 遍历每一页PDF对象
pdf_page = pdf_reader.pages[page_num] # 获取PDF的当前页对象
pdf_page.merge_page(watermark_file.pages[0]) # 将水印页合并到当前页中
pdf_writer.add_page(pdf_page) # 将合并后的PDF对象页添加到PDF写入对象中
output_file = os.path.join(output_directory, os.path.basename(pdf_file).replace('.pdf', output_suffix + '.pdf')) # 构建输出文件路径
with open(output_file, 'wb') as output: # 打开输出文件
pdf_writer.write(output) # 写入PDF内容到输出文件
def process_directory(input_directory, watermark_file, output_directory, output_suffix):
for root, dirs, files in os.walk(input_directory): # 遍历输入目录下的所有文件和子目录
for dir in dirs: # 遍历所有子目录
process_directory(os.path.join(root, dir), watermark_file, output_directory, output_suffix) # 递归处理子目录
for file in files: # 遍历所有文件
if file.endswith('.pdf'): # 判断文件是否为PDF格式
file_path = os.path.join(root, file) # 构建文件路径
add_watermark_to_pdf(file_path, watermark_file, output_directory, output_suffix) # 调用添加水印函数处理PDF文件
# 在这里修改自定义设置:
input_directory = "PDF文件目录" # 输入PDF文件目录
watermark_file = "水印文件完整目录.pdf" # 水印文件路径
output_directory = "加水印的PDF文件输出目录" # 输出目录
output_suffix = "自定义后缀-【公众号KeepLearner】" # 输出文件后缀
process_directory(input_directory, watermark_file, output_directory, output_suffix) # 调用处理目录函数开始处理PDF文件
通过以上代码,我们可以实现自动化添加水印的功能。只需简单地设置输入目录、水印文件路径、输出目录和输出后缀,代码就会自动处理所有的 PDF 文件,为每个文件添加水印,大大节省了时间和精力。
除了添加水印,还有许多工作可以通过自动化来实现,例如:
通过自动化这些工作,不仅可以节省时间和精力,还可以提高工作效率和质量,让我们更专注于解决问题和创造价值。 版权声明:版权所有 (c) 2024 课补乐科技工作室,作者:微信公众号KeepLearner,转载请注明出处!!