当前位置: 首页 > article >正文

用Python批量去除PDF文件的密码

注意:前提是你知道密码,本代码不是暴力跑字典

最近有个需求,下载了一堆PDF,但都有加密,密码还不一样,每次打开都要输密码很麻烦,所有有了此工具,批量去除所有密码。

import os
from pypdf import PdfReader, PdfWriter

def decrypt_pdfs(folder_path, passwords):
    for filename in os.listdir(folder_path):
        if filename.endswith('.pdf'):
            file_path = os.path.join(folder_path, filename)
            try:
                with open(file_path, 'rb') as pdf_file:
                    pdf_reader = PdfReader(pdf_file)
                    if pdf_reader.is_encrypted:
                        success = False
                        for password in passwords:
                            try:
                                pdf_reader.decrypt(password)
                                if pdf_reader.pages:
                                    pdf_writer = PdfWriter()
                                    for page_num in range(len(pdf_reader.pages)):
                                        page = pdf_reader.pages[page_num]
                                        pdf_writer.add_page(page)
                                    file_name_without_ext = os.path.splitext(filename)[0]
                                    new_file_name = f"{file_name_without_ext}_decrypted.pdf"
                                    new_file_path = os.path.join(folder_path, new_file_name)
                                    with open(new_file_path, 'wb') as new_pdf_file:
                                        pdf_writer.write(new_pdf_file)
                                    print(f"已使用密码 {password} 成功解密并保存为: {new_file_path}")
                                    success = True
                                    break
                            except Exception:
                                continue
                        if not success:
                            print(f"!!!!无法使用提供的任何密码解密 {filename}")
                    else:
                        print(f"{filename} 无密码,无需处理。")
            except Exception as e:
                print(f"处理文件 {filename} 时出现错误: {e}")


# 你的PDF文件所在文件夹路径
folder_path = 'C:\\Users\\lianq\\Downloads'
# 实际可能的密码组
passwords = ['12345678', '123qwe', '123456']
decrypt_pdfs(folder_path, passwords)

http://www.kler.cn/a/540538.html

相关文章:

  • Qt通过FFmpeg打开RTSP并截图一帧作为背景
  • 使用sunshine和moonlight串流时的音频输出问题
  • [权限提升] Linux 提权 维持 — 系统错误配置提权 - Sudo 滥用提权
  • TCP三次握手全方面详解
  • vscode设置保存时自动缩进和格式化
  • STM32G474--Whetstone程序移植(单精度)笔记
  • AOSP 编译配置:深入解析 Android.mk 和 Android.bp
  • timescaladb时序数据库高可用docker镜像使用
  • 如何用WPF制作简单的加密解密
  • 设计方案主要做哪些事情?
  • Unity Dots理论学习-4.ECS有关的模块(3)
  • 125,【1】攻防世界unserialize3
  • JVM春招快速学习指南
  • 开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革
  • 详解java中的protected
  • 昇腾,Ascend,NPU,mindie,镜像,部署vllm:第4篇,尝试多模态大模型部署(Qwen2-vl)
  • 网络工程师 (30)以太网技术
  • kafka专栏解读
  • 【PCIE709-1】基于复旦微 JFM7VX690T80 FPGA 的 8 通道光纤双 FMC 接口数据处理平台
  • 内网穿透的应用-Ubuntu本地Docker搭建pichome文件管理系统打造个人云相册
  • Github 2025-02-08 Rust开源项目日报Top10
  • rtsp播放器如何回调rgb或yuv数据实现ai视觉算法对接?
  • 尚硅谷课程【笔记】——大数据之Linux【三】
  • 【C语言】#define和typedef的区别
  • KTOR:高效的Linux横向移动与无文件落地HTTP服务扫描工具
  • 基于Python的人工智能驱动基因组变异算法:设计与应用(下)