python-pdf文件加密和解密

news/2025/1/15 23:37:04/

PDF 文件加密需要使用 encrypt 函数,对应的加密代码也比较简单: 

python">from PyPDF2 import PdfReader, PdfWriterpdf_path = r"D:\自动化\道德经.pdf"
sava_path = r"D:\自动化\加密后.pdf"pdf_reader = PdfReader(pdf_path)
pdf_writer = PdfWriter()for page in range(len(pdf_reader.pages)):pdf_writer.add_page(pdf_reader.pages[page])# 添加密码
pdf_writer.encrypt("youbafu")with open(sava_path, "wb") as out:pdf_writer.write(out)

执行完成后,加密后,pdf打开则需要输入密码才能打开多个文件进行加密

如果你需要对多个 PDF 文件进行加密,可以修改之前的代码,使用循环遍历文件列表来加密每个文件。以下是一个示例代码,演示如何对指定目录中的所有 PDF 文件进行加密:

python">from PyPDF2 import PdfReader, PdfWriter
import os# 输入和输出路径
input_directory = r"D:\自动化\pdfs"  # 包含原始 PDF 文件的目录
output_directory = r"D:\自动化\加密后"  # 加密后的 PDF 文件的输出目录
password = "youbafu"  # 加密密码# 确保输出目录存在
os.makedirs(output_directory, exist_ok=True)
#这是要创建的目录路径。它可以是一个相对路径或绝对路径。如果路径中包含的任何目录不存在,os.makedirs 将会创建它们。例如,'./path/to/directory' 会创建路径 path/to/directory 及其所有不存在的父目录。
#如果 exist_ok 设置为 True,即使目标目录已经存在,也不会抛出异常。如果设置为 False(默认值),如果目标目录已经存在,os.makedirs 会引发 FileExistsError 异常。# 遍历目录中的所有 PDF 文件
for filename in os.listdir(input_directory):if filename.lower().endswith('.pdf'):#这一行代码的作用是检查文件名是否以“.pdf”结尾,无论文件名的字母是大写还是小写。.lower() 方法将文件名转换为小写,以确保大小写不影响判断。input_path = os.path.join(input_directory, filename)# 构造输入文件的完整路径output_path = os.path.join(output_directory, filename)# 构造输出文件的完整路径# 读取 PDF 文件pdf_reader = PdfReader(input_path)pdf_writer = PdfWriter()# 将 PDF 文件的每一页添加到 PdfWriter 对象中for page in range(len(pdf_reader.pages)):pdf_writer.add_page(pdf_reader.pages[page])# 添加密码pdf_writer.encrypt(password)# 保存加密后的 PDF 文件with open(output_path, "wb") as out_file:pdf_writer.write(out_file)print("所有文件已加密。")

PDF解密

PDF 文件加密需要使用 encrypt 函数,解密则是使用decrypt 函数,代码如下:

python">from PyPDF2 import PdfReader, PdfWriterpdf_path = r"D:\自动化\加密后.pdf"
sava_path = r"D:\自动化\解密后.pdf"
pdf_reader = PdfReader(pdf_path)# 利用密码解密
pdf_reader.decrypt('youbafu')
pdf_writer = PdfWriter()for page in range(len(pdf_reader.pages)):pdf_writer.add_page(pdf_reader.pages[page])
#for page in range(pdf_reader.getNumPages()):#pdf_writer.addPage(pdf_reader.getPage(page))with open(sava_path, "wb") as out:pdf_writer.write(out)


http://www.ppmy.cn/news/1521715.html

相关文章

《响应式 Web 设计:纯 HTML 和 CSS 的实现技巧》

一、引言 在当今数字化时代,人们使用各种不同的设备访问网页,包括台式电脑、笔记本电脑、平板电脑和智能手机等。为了确保网页在不同设备上都能提供良好的用户体验,响应式 Web 设计变得至关重要。响应式 Web 设计是一种能够根据设备屏幕大小和…

pytorch pyro 贝叶斯神经网络 bnn beyesean neure network svi ​定制SVI目标和培训循环,变更推理

定制SVI目标和培训循环 Pyro支持各种基于优化的贝叶斯推理方法,包括Trace_ELBO作为SVI(随机变分推理)的基本实现。参见文件(documents的简写)有关各种SVI实现和SVI教程的更多信息I, 二,以及罗马数字3了解SVI的背景。 在本教程中…

可交互、会学习、自成长机器人——李德毅院士

在以“农业无人农场”为主题的中国工程科技论坛上,中国工程院院士、欧亚科学院院士、中国人工智能学会和中国指挥与控制学会名誉理事长,中科原动力首席科学家李德毅院士应邀做题为《机器具身交互智能》的演讲。李德毅院士表示,智能机器不但把…

浙大数据结构:02-线性结构3 Reversing Linked List

数据结构MOOC PTA习题 这道题也是相当费事,不过比上一个题好一些,这里我使用了C的STL库,使得代码量大幅减少。 1、条件准备 这里我准备采用map来存地址和值,因为map的查找效率也是不错的 数组arr是存链表的地址,并…

随笔1:数学建模与数值计算

目录 1.1 矩阵运算 1.2 基本数学函数 1.3 数值求解 数学建模与数值计算 是将实际问题通过数学公式和模型进行描述,并通过计算获得模型解的过程。这是数学建模中最基本也是最重要的环节之一。下面是详细的知识点讲解及相应的MATLAB代码示例。 1.1 矩阵运算 知识点…

2024高教社杯全国大学生数学建模竞赛(A题)深度剖析 _ 建模完整过程+详细思路+代码全解析

问题1解答过程 1.1 螺线运动的基本几何模型 板凳龙的舞动路径为等距螺线。螺线是极坐标中一类常见曲线,其特点是半径随角度线性增加。我们可以用以下极坐标方程描述这条螺线: r ( θ ) p 2 π θ r(\theta) \frac{p}{2\pi} \theta r(θ)2πp​θ 其…

计算机毕业设计选题推荐-客栈管理系统-酒店预订-民宿管理系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

地平线SuperDrive首秀:千人研发投入,出场即「比肩第一梯队」

作者 |德新 编辑 |王博 8月底,地平线在北京开放了第一批面向媒体的高阶智驾方案SuperDrive体验。 预计到明年第三季度,SuperDrive将伴随主机厂客户的第一款量产车交付。 目前在国内,仅有英伟达和华为两家的平台基础上,有车企向…