python实现PDF加密文件解密

简介: 在网上下载的一下书籍pdf文件加密时,每次打开都需要输入密码,所以写了个小工具

依赖安装:pip install PyPDF2

具体代码:

import os

from PyPDF2 import PdfWriter, PdfReader

 

def get_reader(filename, password):

   try:

       old_file = open(filename, 'rb')

   except Exception as err:

       print('文件打开失败!' + str(err))

       return None

 

   # 创建读实例

   pdf_reader = PdfReader(old_file, strict=False)

 

   # 解密操作

   if pdf_reader.is_encrypted:

       if password is None:

           print('%s文件被加密,需要密码!' % filename)

           return None

       else:

           if pdf_reader.decrypt(password) != 1:

               print('%s密码不正确!' % filename)

               return None

 

   if old_file in locals():

       old_file.close()

 

   return pdf_reader

 

def decrypt_pdf(filename, password, decrypted_folder):

   """

   将加密的文件进行解密,并生成一个无需密码的pdf文件

   :param filename: 原先加密的pdf文件

   :param password: 对应的密码

   :param decrypted_folder: 解密后放置文件的文件夹路径

   :return:

   """

   # 生成一个Reader和Writer

   pdf_reader = get_reader(filename, password)

   if pdf_reader is None:

       return

 

   pdf_writer = PdfWriter()

   for page in pdf_reader.pages:

       pdf_writer.add_page(page)

 

   # 获取解密后的文件名

   file_name, _ = os.path.splitext(filename)

 

   if decrypted_folder is not None:

       decrypted_filepath = os.path.join(decrypted_folder, os.path.basename(file_name) + ".pdf")

   else:

       print('生成文件失败,请给出解密后放置文件夹')

       return

 

   # 写入新文件

   with open(decrypted_filepath, 'wb') as decrypted_file:

       pdf_writer.write(decrypted_file)

       print('解密成功' + decrypted_filepath)

 

# 获取文件夹中的pdf文件路径

def get_pdf_paths(folder_path):

   pdf_paths = []

   for root, _, files in os.walk(folder_path):

       for file in files:

           if file.endswith(".pdf"):

               pdf_path = os.path.join(root, file)

               pdf_paths.append(pdf_path)

   return pdf_paths

 

 

pdf_path = input('请输入要解密的pdf或含pdf文件夹路径:')

# pdf_path = '文件夹或文件路径'

password = input('请输入密码:')

# password = '密码'

decrypted_folder = input('请输入解密文件夹:')

# decrypted_folder = '解密文件夹'

 

if os.path.isdir(pdf_path):

   pdf_paths = get_pdf_paths(pdf_path)

   for path in pdf_paths:

       decrypt_pdf(path, password, decrypted_folder)  # 修改此处,传递解密后文件存放的文件夹路径

else:

   _, extension = os.path.splitext(pdf_path)

   if extension.lower() == '.pdf':

       decrypt_pdf(pdf_path, password, decrypted_folder)

   else:

       print('文件非pdf')


解密成功截图:

image.png


目录
相关文章
|
6月前
|
安全 JavaScript 开发者
Python 自动化办公神器|一键转换所有文档为 PDF
本文介绍一个自动化批量将 Word、Excel、PPT、TXT、HTML 及图片转换为 PDF 的 Python 脚本。支持多格式识别、错误处理与日志记录,适用于文档归档、报告整理等场景,大幅提升办公效率。仅限 Windows 平台,需安装 Office 及相关依赖。
357 0
|
5月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
1494 0
|
6月前
|
程序员 数据安全/隐私保护 Python
1行Python代码,实现PDF的加密、解密
程序员晚枫分享使用python-office库实现PDF批量加密与解密的新方法。只需一行代码,即可完成单个或多个PDF文件的加密、解密操作,支持文件路径与正则筛选,适合自动化办公需求。更新至最新版,适配性更佳,操作更简单。
256 8
1行Python代码,实现PDF的加密、解密
|
7月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
6月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
1585 0
|
7月前
|
前端开发 安全 Java
办公自动化必修课:用Python打造PDF全能处理工具
在职场中,PDF处理常令人崩溃:拆分、合并、加密等问题严重影响效率。本文教你用Python打造一个包含拆分、合并、加密、水印四大功能的PDF工具箱,通过实战代码提升办公自动化水平,让文档操作像拼乐高一样简单高效。
253 0
|
8月前
|
数据采集 存储 API
Python爬虫结合API接口批量获取PDF文件
Python爬虫结合API接口批量获取PDF文件
|
10月前
|
存储 JSON API
如何将 Swagger 文档导出为 PDF 文件
你会发现自己可能需要将 Swagger 文档导出为 PDF 或文件,以便于共享和存档。在这篇博文中,我们将指导你完成将 Swagger 文档导出为 PDF 格式的过程。
|
7月前
|
C#
【PDF提取内容改名】批量提取PDF指定区域内容重命名PDF文件,PDF自动提取内容命名的方案和详细步骤
本工具可批量提取PDF中的合同编号、日期、发票号等关键信息,支持PDF自定义区域提取并自动重命名文件,适用于合同管理、发票处理、文档归档和数据录入场景。基于iTextSharp库实现,提供完整代码示例与百度、腾讯网盘下载链接,助力高效处理PDF文档。
940 40
|
9月前
|
人工智能 算法 安全
使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具
通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把
517 10