Python批量为PDF加水印

简介: 我们自己制作的 PDF 文件,为了避免被别人滥用,通常会加上水印。而市面上很多工具都是收费的,这无疑增加了我们的成本。所以,我使用 Python 编写了一段加水印的代码,可以批量的为多个 PDF 文件加水印,完全是免费的,在这里分享给大家。

ff538d9b1ae721d5eae7fdb86d91007b_20230427_time=1686816000&token=6b204e1e64e29fd758dd9256c697ac67&role=free.gif

大家好,我是水滴~

我们自己制作的 PDF 文件,为了避免被别人滥用,通常会加上水印。而市面上很多工具都是收费的,这无疑增加了我们的成本。

所以,我使用 Python 编写了一段加水印的代码,可以批量的为多个 PDF 文件加水印,完全是免费的,在这里分享给大家。

上面的 GIF 图片就是批量加水印的过程。在使用前,需要准备水印文件,并安装 PyPDF2 库,下面是详细教程。

制作水印文件

创建一个 Word 文档,用 WPS 工具插入一个水印。水印可以是图片,也可以是文字,根据自己的需要编辑即可。最后将 Word 文件转换成 PDF ,这样水印文件就制作完成了。

下面截图是我制作的一个水印文件,文件名为“水印.pdf”。

eedfd276de4ca124d3857f96377723cf_ceee46efecec6ea6932addf4a60015c_time=1686816000&token=8670555ca4ec4f30e62cd5bd5972be64&role=free.png

安装 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)

批量加水印:

# 获取指定目录下所有PDF文件
pdf_files = get_pdf_files("E:\\XXX\\")
# 遍历这些PDF文件,并添加水印
for pdf_file in pdf_files:
    print("开始添加水印 -> " + pdf_file)
    add_watermark("E:\\XXX\\水印.pdf", pdf_file)

加水印后的效果:

e30f4aa3f884496d51da4f70918e38bc_c940f4fccc8fb510ca195c49ab53243_time=1686816000&token=3e4ad5002cfad0aed65c305068d721a5&role=free.png

🍅🍅🍅 获取源码,请在下方「水滴技术」公众号回复:20230609

相关文章
|
2月前
|
数据挖掘 程序员 数据安全/隐私保护
解锁PDF潜力:9个Python库让你的文档处理更高效
程序员晚枫分享了Python处理PDF的9个第三方库,包括PyPDF2、pdfrw、ReportLab、pikepdf、pdfplumber、pdfminer.six、PyMuPDF、popdf和borb,各具优缺点。选择时需考虑应用场景、功能需求、库的维护状态和开源协议。例如,pdfplumber擅长内容提取,而ReportLab和PyMuPDF适用于创建和修改内容。
164 7
|
2月前
|
Python
小白入门必备!计科教授的Python精要参考PDF开放下载!
随着互联网产业的高速发展,在网络上早已积累了极其丰富的Python学习资料,任何人都可以基于这些资源,自学掌握 Python。 但实际上,网络上充斥的资源太多、太杂且不成体系,在没有足够的编程/工程经验之前,仅靠“看”线上资源自学,的确是一件非常困难的事。
|
2月前
|
数据采集 数据安全/隐私保护 Python
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
小白入门必备!计算机科学教程的Python精要参考PDF开放下载!
随着互联网产业的高速发展,在网络上早已积累了极其丰富的Python学习资料,任何人都可以基于这些资源,自学掌握 Python。 但实际上,网络上充斥的资源太多、太杂且不成体系,在没有足够的编程/工程经验之前,仅靠“看”线上资源自学,的确是一件非常困难的事。
|
2月前
|
Python
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
|
6天前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
13 1
|
10天前
|
XML Java 数据格式
Java用xpdf库获取pdf文件的指定范围文本内容
Java用xpdf库获取pdf文件的指定范围文本内容
16 1
|
25天前
|
文字识别 开发工具 数据安全/隐私保护
印刷文字识别产品使用合集之可以识别一张电子发票有多页(多张图片,或者一个PDF文件)的这种发票吗
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
25天前
|
编解码 文字识别
印刷文字识别操作报错合集之在尝试将PDF文件转换为图片时出现了问题,具体的错误代码是415,该怎么处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
6天前
|
移动开发 JavaScript 前端开发
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件

相关实验场景

更多