python 移除 pdf 密码
import threading from PyPDF2 import PdfReader from PyPDF2 import PdfWriter # 定义一个类在线程中共享信息 class SharedState: def __init__(self): self.state = True self.lock = threading.Lock() def set_state(self, new_state): with self.lock: self.state = new_state def get_state(self): with self.lock: return self.state # 创建一个线程间信息通信对象 thread_staus = SharedState() # 定义一个函数来读取PDF文件 def get_reader(filename,password=None): try: old_file = open(filename, 'rb') except Exception as err: return print('文件打开失败!' + str(err)) #如果使用python2需要将PdfReader改为PdfFileReader pdf_reader = PdfReader(old_file, strict=False) # 如果使用python2需要将is_encrypted改为isEncrypted # 执行解密操作 if pdf_reader.is_encrypted: if password is None: print('文件被加密,需要密码!--{}'.format(filename)) return pdf_reader else: success = pdf_reader.decrypt(password) if not success : #return print('密码不正确!--{}'.format(filename)) return else: #print("解密成功,密码为{}".format(password)) return pdf_reader elif old_file in locals(): old_file.close() # 返回结果 return pdf_reader def deception_pdf2() : # 获取指定目录下的所有文件和目录 pdf_files = "1234.pdf" # all_files = os.listdir(directory) # # 过滤出所有 PDF 文件 # pdf_files = [f for f in all_files if f.lower().endswith('.pdf')] # # # 返回 PDF 文件的完整路径 # pdf_files_paths = [os.path.join(directory, f) for f in pdf_files] # # for pdf_files in pdf_files_paths: if 1 == 1: # try: pdf_reader = get_reader(pdf_files) if pdf_reader is None: return print("无内容读取") # 如果使用python2需要将is_encrypted改为isEncrypted elif not pdf_reader.is_encrypted: return print('文件没有被加密,无需操作') # 如果使用的是python2需要将PdfWriter改为PdfFileWriter pdf_writer = PdfWriter() # 如果使用的是python2需要将将append_pages_from_reader改为appendPagesFromReader pdf_writer.append_pages_from_reader(pdf_reader) # 创建解密后的pdf文件和展示文件的路径 pdf_files = pdf_files.replace("E:/", 'E://2/') decrypted_filename = "".join(pdf_files.split('.')[:-1]) + '_' + '已解密' + '.pdf' print("解密文件已生成:{}".format(decrypted_filename)) # 写入新文件 pdf_writer.write(open(decrypted_filename, 'wb')) # except Exception as err: # print("文件设置了打开密码,无法读取PDF,请尝试选择字典库进行爆破") # thread_staus.set_state(False) if __name__ == "__main__": deception_pdf2()
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2019-01-03 ES 插入十万条数据耗时1573秒
2018-01-03 User-Agent 信息汇总(拿去就能用)