Python批量为PDF添加水印的代码实现

 更新时间:2025年08月13日 10:41:19   作者:码无止尽  
有时候我们需要在PDF文件上添加水印,比如草稿、保密、审阅等标识,来提醒自己或他人,所以本文就教大家如何用Python给一大堆PDF文件添加水印,需要的朋友可以参考下

嗨,各位可爱的小伙伴们!小编在此奉上今天的超级干货:如何用Python给一大堆PDF文件添加水印。请放心,这不是在交朋友圈秀操作,而是有实际需求的哦!有时候我们需要在PDF文件上添加水印,比如“草稿”、“保密”、“审阅”等标识,来提醒自己或他人。今天就让我来教你如何用Python轻松搞定这件事!

首先,让我给你看一下大致的实现思路,然后再附上实际代码。

实现思路

1、首先,我们需要一个PDF处理的Python库,这里我选择了PyPDF2库。

2、接着,我们需要读取指定文件夹中的所有PDF文件,并对每个文件进行处理。

3、对每个PDF文件,我们会向每一页添加水印,这里我们以我的博客名“码无止尽”为例。当然,你可以根据自己的需求自定义水印内容和样式。

4、最后,我们会将添加水印后的PDF文件保存到指定的输出文件夹中。这样,一大堆文件就会被我们“装上了水印”!

是不是感觉非常有趣呢?随我来看看实际的代码吧!

代码实现

首先,我们还是要安装一下PyPDF2库,它可以帮助我们处理PDF文件。在命令行中输入以下命令进行安装:

pip install PyPDF2

接下来,我们编写一个简单的Python脚本来实现批量添加水印的功能。请看下面的代码:

import os
from PyPDF2 import PdfReader, PdfWriter
 
 
def add_watermark(input_pdf, output_pdf, watermark):
    watermark_obj = PdfReader(watermark)
    watermark_page = watermark_obj.pages[0]
    pdf_reader = PdfReader(input_pdf)
    pdf_writer = PdfWriter()
    # 将水印添加到每一页
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        page.merge_page(watermark_page)
        pdf_writer.add_page(page)
    with open(output_pdf, 'wb') as out:
        pdf_writer.write(out)
 
 
def batch_add_watermark(input_folder, output_folder, watermark):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    for filename in os.listdir(input_folder):
        if filename.endswith('.pdf'):
            input_file = os.path.join(input_folder, filename)
            output_file = os.path.join(output_folder, f'watermarked_{filename}')
            add_watermark(input_file, output_file, watermark)
            print(f'Watermark added to {filename} and saved as {output_file}')
 
 
# 示例用法
batch_add_watermark("C:/Users/olive/Desktop/待加水印的PDF",
                    "C:/Users/olive/Desktop/已加水印的PDF",
                    "C:/Users/olive/Desktop/水印PDF/watermark.pdf")

代码解析

在这个脚本中,我们定义了两个函数:addwatermark和batchaddwatermark。addwatermark函数负责将水印添加到单个PDF文件中,而batchaddwatermark函数则遍历指定文件夹中的所有PDF文件,并为每个文件调用addwatermark函数。

下面给出详细的代码解释:

1、add_watermark 函数:
  - 这个函数用来给单个PDF文件添加水印。
  - 参数 input_pdf 是输入的PDF文件路径,output_pdf 是输出的带有水印的PDF文件路径,watermark 是水印PDF文件的路径。
  - 首先,它使用 PdfReader 从水印文件中读取水印对象,并获取水印页面。
  - 然后,使用 PdfReader 从输入PDF文件中读取页面,使用 PdfWriter 来创建一个新的PDF写入对象。
  - 接下来,它遍历输入PDF文件的每一页,将水印页面合并到每一页,并将页面添加到新的PDF写入对象中。
  - 最后,它将带有水印的PDF写入到输出的PDF文件中。

2、batch_add_watermark 函数:
  - 这个函数用来批量处理文件夹中的PDF文件,给每个PDF文件添加水印并保存到指定文件夹。
  - 参数 input_folder 是待加水印的PDF文件所在文件夹路径,output_folder`是已加水印的PDF文件保存的文件夹路径,watermark 是水印PDF文件的路径。
  - 如果输出文件夹不存在,则创建该文件夹。
  - 然后,它遍历输入文件夹中的所有PDF文件,对每个文件调用 add_watermark 函数来添加水印,并保存带有水印的PDF文件到输出文件夹中。

激动人心的测试

现在要进入激动人心的代码测试阶段了,我们先准备好待加水印的一批PDF文档:

我们再准备一个带有水印的PDF文档:

打开这个水印文档给大家看一下:

接着,修改我们的测试代码,记得改成你自己的文件目录:

# 示例用法
batch_add_watermark("C:/Users/olive/Desktop/待加水印的PDF",
                    "C:/Users/olive/Desktop/已加水印的PDF",
                    "C:/Users/olive/Desktop/水印PDF/watermark.pdf")

然后,运行我们的代码,很快就生成了加了水印后的PDF:

我们随便打开一个文件,看一下效果吧:

非常完美,正是我们想要的效果!

总结

嗯哼,今天的分享就到这里啦!希望通过这篇博客文章,你能领略到Python的魔法之处,以及学到一个有趣且实用的小技巧。无论是“宠物私密日记”还是“公司保密文件”,给PDF添加水印都能事半功倍哦!

以上就是Python批量为PDF添加水印的代码实现的详细内容,更多关于Python PDF添加水印的资料请关注脚本之家其它相关文章!

相关文章

  • 安装Python 3.13.1的多种方式实例教程

    安装Python 3.13.1的多种方式实例教程

    Python是一种广泛使用的高级编程语言,以其简洁易读的语法和强大的库支持而著称,这篇文章主要介绍了安装Python 3.13.1的多种方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • Python企业编码生成系统总体系统设计概述

    Python企业编码生成系统总体系统设计概述

    这篇文章主要介绍了Python企业编码生成系统总体系统设计,简单描述了Python企业编码生成系统的功能、结构与相关编码实现技巧,需要的朋友可以参考下
    2019-07-07
  • django中path函数使用详解

    django中path函数使用详解

    django.urls.path是Django中用于定义URL映射规则的函数之一,本文主要介绍了django中path函数使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • python项目报错:bs4.FeatureNotFound: Couldn‘t find a tree builder with the features you requests

    python项目报错:bs4.FeatureNotFound: Couldn‘t find a tree bu

    这篇文章主要给大家介绍了python项目报错:bs4.FeatureNotFound: Couldn‘t find a tree builder with the features you requests的解决方式,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 请不要重复犯我在学习Python和Linux系统上的错误

    请不要重复犯我在学习Python和Linux系统上的错误

    本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习、使用的对象,它简单、易用、好操作、界面绚丽,对于想接触Linux的新手来说是非常不错的
    2016-12-12
  • Python 条件判断的缩写方法

    Python 条件判断的缩写方法

    开始以为Python中没有像其他语言一样的条件判断的缩写形式:
    2008-09-09
  • Python使用一行代码获取上个月是几月

    Python使用一行代码获取上个月是几月

    本文介绍的关于Python时间日期处理,日期时间处理在实际应用场景中无处不在,所以这也成了编程语言中必不可少的模块,本文主要给大家介绍Python使用一行代码获取上个月是几月的相关知识,感兴趣的朋友一起看看吧
    2018-08-08
  • Django框架模板注入操作示例【变量传递到模板】

    Django框架模板注入操作示例【变量传递到模板】

    这篇文章主要介绍了Django框架模板注入操作,结合实例形式分析了Django框架变量传递到模板简单操作技巧,需要的朋友可以参考下
    2018-12-12
  • python BytesIO 中 read 用法示例详解

    python BytesIO 中 read 用法示例详解

    这篇文章主要介绍了python BytesIO 中 read 用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • django 数据库返回queryset实现封装为字典

    django 数据库返回queryset实现封装为字典

    这篇文章主要介绍了django 数据库返回queryset实现封装为字典,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05

最新评论