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,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步