欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

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

2025年08月13日 Python
嗨,各位可爱的小伙伴们!小编在此奉上今天的超级干货:如何用python给一大堆pdf文件添加水印。请放心,这不是在交朋友圈秀操作,而是有实际需求的哦!有时候我们需要在pdf文件上添加水印,比如&ldq

嗨,各位可爱的小伙伴们!小编在此奉上今天的超级干货:如何用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添加水印的资料请关注代码网其它相关文章!