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()
复制代码

 

posted @   淋哥  阅读(24)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示