pdf加水印
# -*- coding:utf-8 -*-
# @FileName :Watermarked.py
# @Time :2024/11/4 18:09
# @Author :liyiwei# 导入sys模块,用于退出程序时打印错误信息到标准错误输出
import sys# 导入PdfFileReader和PdfFileWriter类,用于读取和写入PDF文件
from PyPDF2 import PdfReader, PdfWriter# 导入copy模块,用于复制PDF页面
from copy import copy# 定义一个函数add_watermark_to_pdf,用于给PDF添加水印
def add_watermark_to_pdf(input_pdf_path, watermark_pdf_path, output_pdf_path):try:# 尝试读取水印PDF文件water = PdfReader(watermark_pdf_path)# 获取水印PDF的第一页water_page = water.pages[0]# 读取需要添加水印的PDF文件pdf_reader = PdfReader(input_pdf_path)# 创建一个新的PDF写入器pdf_writer = PdfWriter()# 遍历输入PDF文件的每一页for page in range(len(pdf_reader.pages)):# 获取输入PDF文件当前页my_page = pdf_reader.pages[page]# 复制水印页,并合并输入PDF文件的当前页new_page = copy(water_page)new_page.merge_page(my_page)# 将合并后的页添加到PDF写入器pdf_writer.add_page(new_page)# 打开输出PDF文件,并写入PDF写入器的内容with open(output_pdf_path, "wb") as out:pdf_writer.write(out)# 打印成功信息到标准输出print(f"水印已成功添加到 {output_pdf_path}")except Exception as e:# 打印错误信息到标准错误输出,并退出程序print(f"添加水印时发生错误: {e}", file=sys.stderr)sys.exit(1)# 当这个脚本被直接运行时,调用add_watermark_to_pdf函数
if __name__ == "__main__":input_pdf_path = r"D:\virtualC\图片素材\pdf测试\aa.pdf" # 输入PDF文件路径watermark_pdf_path = r"D:\virtualC\图片素材\pdf测试\水印.pdf" # 水印PDF文件路径output_pdf_path = r"D:\virtualC\图片素材\pdf测试\添加水印后的aa.pdf" # 输出PDF文件路径add_watermark_to_pdf(input_pdf_path, watermark_pdf_path, output_pdf_path) # 调用函数
-
PyPDF2库的使用:PyPDF2是一个Python库,用于处理PDF文件。通过这个库,可以读取和写入PDF文件,以及操作PDF的页面。
-
异常处理:使用
try...except
语句来捕获和处理可能发生的异常,保证程序的健壮性。 -
文件操作:使用
with
语句和open
函数来安全地打开和写入文件,确保文件在操作完成后能够正确关闭。 -
命令行参数:这个脚本可以直接运行,并接受三个命令行参数:输入PDF文件、水印PDF文件和输出PDF文件。这展示了如何从命令行获取参数,并在脚本中使用这些参数。
-
文件路径:在Windows系统中,路径使用反斜杠
\
来分隔目录和文件名,而在Python中,需要使用r
前缀来表示原始字符串,以避免在字符串中转义反斜杠。 -
标准输出和标准错误:使用
print
函数和file=sys.stderr
参数来分别打印到标准输出和标准错误输出,通常用于打印正常信息和错误信息。