0
点赞
收藏
分享

微信扫一扫

python批量解密PDF文件

烟中雯城 2022-04-21 阅读 59
python

用解密PDF pdf_reader.decrypy(密码)总会报错。

原因就在于:
1)这个被加密的pdf可能是从高版本的acrobot中来的,所以对应的加密算法代号为‘4’
2)然而,现有的pypdf2模块并只支持加密算法代号为‘1’或者‘2’的pdf加密文件,所以才会报这样的错。

这里我们采用更高级的pickpdf库来解密。

import pikepdf
pdf = pikepdf.open('book.pdf',password='')
pdf.save('book_without_pass.pdf')

代码如下:

import pikepdf
import os


def get_filelist(path):
    Filelist = []
    for home, dirs, files in os.walk(path):
        for filename in files:
            # 文件名列表,包含完整路径
            if ".pdf" in filename:
                Filelist.append(os.path.join(home, filename))
    return Filelist


def reclosed(fn, passwd):
    pdf = pikepdf.open(fn, password=passwd)
    dir_name = os.path.dirname(fn)
    os_name = os.path.basename(fn).split('.')[0]+'解密.pdf'
    pdf.save(os.path.join(dir_name, os_name))
    pdf.close()


def removal(fn):
    os.remove(fn)


if __name__ == "__main__":
    path = input('请输入目标路径:')
    password = input('请输入密码:')
    filelist = get_filelist(path)
    for file in filelist:
        print('正在解密:', file)
        reclosed(fn=file, passwd=password)

以上就是本次全部内容,如果觉得有帮助,还请点赞呀!

举报

相关推荐

0 条评论