python实现pdf文档的解密(超详细!!!也有最便捷的方式在总结!!!)

本文介绍了如何使用Python的pypdf2库和pycryptodome库来解密PDF文件。文中提供了详细的代码示例,包括自定义的PDF读取和生成函数,并强调了解密后的文件不得用于商业用途。此外,还给出了在线解密的替代方案。
摘要由CSDN通过智能技术生成

用python完成PDF的解密!!!(!代码直接可以运行!)

用python实现pdf解密,可用来学习,但不可用于商业!!!

用python的库函数pypdf2完成解密,如果不会用python的小伙伴别担心,直接点总结看最暴力最直接的办法(在线解密)


再次提示:!!!不可用于商业!!!

文章目录

  • 用python完成PDF的解密!!!(!代码直接可以运行!)
  • 前言
  • 一、导入库函数
  • 二、主要函数解读
    • 1.引入库
    • 2.自定义pdf读取函数
    • 3.自定义pdf生成函数
  • 三、完整源代码
  • 总结


前言

利用pypdf2完成pdf的解密,这里的事例是python3环境下的,当然python2下也可以运行,只需要修改名称即可,在代码中有修改的地方,笔者也会指出,看完这篇你不会解密pdf的话!!!那我就再写一篇。


一、导入库函数

这里用到的模块有pypdf2、pycryptodome,如果没有模块的需要在对应的虚拟环境中执行以下的pip安装命令

pip install pypdf2
pip install pycryptodome

如果 安装超时 报错了请移步这里观看 ——》》》 清华源安装速度提升!!!

二、主要函数解读

1.引入库

如果是python2的在引入函数方法的时候需要改一下,如果是python3的就直接复制下面代码就好

from PyPDF2 import PdfReader #pdf的读取方法
from PyPDF2 import PdfWriter #pdf的写入方法
"""
如果是python2的将上面的PdfReader和PdfWriter改为
PdfFileReader和PDFfileWriter即可
"""
from Crypto.Cipher import AES #高加密的方法,要引入不然会报错

2.自定义pdf读取函数

python2需要修改的地方在代码中已经标注,python3的直接复制下面代码即可

def get_reader(filename, password): #读取pdf的方法(自定义函数)
    try:
        old_file = open(filename, 'rb')
        print('解密开始...')
    except Exception as err:
        return print('文件打开失败!' + str(err))

    """如果是python2将PdfReader改为PdfFileReader"""
    pdf_reader = PdfReader(old_file, strict=False) #读取pdf文件

    """如果是python2将is_encrypted改为isEncrypted"""
    if pdf_reader.is_encrypted: #解密操作(以下操作是自适应,不会展示在终端中)
        if password is None:
            return print('文件被加密,需要密码!--{}'.format(filename))
        else:
            if pdf_reader.decrypt(password) != 1:
                return print('密码不正确!--{}'.format(filename))
    elif old_file in locals():
        old_file.close() #如果pdf文件已经在本地了就关闭
    return pdf_reader #返回读出pdf的值

3.自定义pdf生成函数

将加密的文件及逆行解密,并生成一个无需密码pdf文件,下面是生成函数deception_pdf的基本参数
filename: 原先加密的pdf文件名称
password: 原文件对应的密码
decrypted_filename: 解密之后的文件名

def deception_pdf(filename, password, decrypted_filename=None): #生成新pdf的方法(自定义函数)
    print('正在生成解密...')
    #得到传入的文件名和密码(这里不用做修改)
    pdf_reader = get_reader(filename, password) 
    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() #写pdf(记录pdf内容)

    """如果是python2将append_pages_from_reader改为appendPagesFromReader"""
    pdf_writer.append_pages_from_reader(pdf_reader)

    if decrypted_filename is None: #创建解密后的pdf文件和展示文件的路径
        decrypted_filename = "".join(filename.split('.')[:-1]) + '_' + '已解密' + '.pdf'
        print("解密文件已生成:{}".format(decrypted_filename))
    # 写入新文件
    pdf_writer.write(open(decrypted_filename, 'wb'))

三、完整源代码

from PyPDF2 import PdfReader #pdf的读取方法
from PyPDF2 import PdfWriter #pdf的写入方法
from Crypto.Cipher import AES #高加密的方法,要引入不然会报错

def get_reader(filename, password): #读取pdf的方法(自定义函数)
    try:
        old_file = open(filename, 'rb')
        print('解密开始...')
    except Exception as err:
        return print('文件打开失败!' + str(err))

    #如果是python2将PdfReader改为PdfFileReader
    pdf_reader = PdfReader(old_file, strict=False) #读取pdf文件

    # 如果是python2将is_encrypted改为isEncrypted
    if pdf_reader.is_encrypted: #解密操作(以下操作是自适应,不会展示在终端中)
        if password is None:
            return print('文件被加密,需要密码!--{}'.format(filename))
        else:
            if pdf_reader.decrypt(password) != 1:
                return print('密码不正确!--{}'.format(filename))
    elif old_file in locals():
        old_file.close() #如果pdf文件已经在本地了就关闭
    return pdf_reader #返回读出pdf的值
    
def deception_pdf(filename, password, decrypted_filename=None): #生成新pdf的方法(自定义函数)
    print('正在生成解密...')
    pdf_reader = get_reader(filename, password) #得到传入的文件名,和密码(如果密码没有可以不填)
    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() #写pdf(记录pdf内容)

    #如果是python2将append_pages_from_reader改为appendPagesFromReader
    pdf_writer.append_pages_from_reader(pdf_reader)

    if decrypted_filename is None: #创建解密后的pdf文件和展示文件的路径
        decrypted_filename = "".join(filename.split('.')[:-1]) + '_' + '已解密' + '.pdf'
        print("解密文件已生成:{}".format(decrypted_filename))
    # 写入新文件
    pdf_writer.write(open(decrypted_filename, 'wb'))

if __name__ == '__main__':
    # 逗号前面的为需要解密的pdf文件路径,后面的''里面为密码,如果不知道就用不填
    deception_pdf(r'E:\考研\301数学一\数学书\数学书\2024kaoyanmath1.pdf', '')

使用方法:
我们要先得到需要解密的文件路径,如下看到我们的文件路径为(‪E:\考研\301数学一\数学书\数学书\2024kaoyanmath1.pdf)复制后,再黏贴到代码中的指定位置即可

在这里插入图片描述
在这里插入图片描述

为了看到直观效果,我们看到这里的原文件是被加密的,接下来我们运行上面的代码然后再来看看效果

在这里插入图片描述

我们接着运行代码,接着指向的地址看

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们看到解密后的文件因为取消了加密权限,文件的大小也小了点

在这里插入图片描述


总结

好了以上就是解密pdf的方法了

以上就是今天要讲的内容,本文是直接用实战来完成pdf文件的解密,如果各位看官需要研究pypdf2的各个函数的详细用法,请移步——》》》 PyPDF中文文档,如果实在不会python觉得太麻烦,又想快速解决这个问题,那就移步这里——》》》 在线pdf解密(但可能会有文件泄密的风险)
如果觉得作者写的不错的,请动动您发财的小手点点赞呐!

不当王多鱼不改名
关注 关注
  • 24
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
下载个PDF居然还要密码?想要密码就付费?这我能忍你!Python分分钟解密它!
weixin_52994140的博客
09-07 6253
概叙 今天因为需要用到一个参考文档,然后在网上找了一下,就下载了一个pdf文档!下载之后居然是加密的,如果要密码就要给钱?我这暴脾气,还真不能忍你! ​​​ 想收我得钱,不存在的,接下来就是破解过程了! 说句题外话,为什么现在越来越多的文档都是PDF格式呢?因为它是可移植文档格式(PDF)是在线附件中使用最广泛的文件格式之一。 大多数文档,例如电子书、扫描文档等,都使用这种pdf格式进行存储和共享。 为了在各种平台和媒体上共享,文档面临着许多威胁,例如信...
拿来就用!Python批量合并PDF的示例代码
09-16
主要介绍了Python批量合并PDF的示例代码,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
Python PDF处理技巧 - 加密和解密PDF
最新发布
nuclear2011的博客
08-01 992
本文展示了如何使用PythonPDF文档加密,设置安全权限(如只读,仅打印等),以及如何解密PDF文档。包含详细的步骤介绍和代码示例。
Python自动化办公:PDF文件的加密与解密
xiaoganbuaiuk的博客
12-11 1276
在本篇文章中,我们将介绍如何使用PyPDF2库对PDF文件进行加密和解密操作。 包括如何给PDF文件添加密码,以及如何从受密码保护的PDF文件中删除密码。 注:删除密码的操作,前提是需要知道密码哦
python实现pdf解密(打开密码,非权限密码)
HelloWord
04-12 1129
因为网上找的资源一百多个pdf都是加密的,手动在线解密也比较费时费力,所以研究了一下,发现网上大部分还是解除权限密码的,对于打开密码的解密比较少(可以说几乎没有),所以记录一下。。。类似下面这样的韩国漫画。
Python 解密 pdf 文件
w02091231的博客
07-09 3095
Python 解密 pdf 文件(已知密码场景)
使用python解密pdf
倩mys的博客
05-15 1495
1.安装pikepdf包: pip install pikepdf 前提:能打开pdf查看 可以解除不能复制等功能 2. 代码 # pdf解密 # 1.安装pikepdf包: pip install pikepdf import pikepdf # opens a PDF with restrictive editing enabled, but that still # allows printing. def pdf_Crack(startFile,endFile): with pikepd
python解析pdf
12-20
python解析pdf, python pdfminer工具 ,内部含有示例
PythonPDF文档操作第三方库PyPDF库功能介绍
03-17
总结,PyPDF2库为Python开发者提供了丰富的功能,用于处理PDF文档,无论是读取、提取信息,还是进行页面操作和文档合并,都显得得心应手。但需要注意的是,PyPDF2可能无法处理加密的PDF文档,对于这类文件,可能需要...
Python 实现加密过的PDF文件转WORD格式
09-18
本文将详细讲解如何使用Python实现这一功能,包括解析加密的PDF文件并将其转换为Word文档。 首先,我们需要了解PDF文件的加密机制。PDF文件可以设置密码保护,以防止未经授权的访问和编辑。在Python中处理加密的PDF...
菜鸟都能掌握,玩转pdf文档,把这些变成一种开发人员的技能,必备!!
09-11
此外,编程语言如Java、Python、C#等也有库支持动态生成PDF,如iText、PDFBox、ReportLab等。 4. **PDF编辑**:PDF文档通常是只读的,但可以通过特定工具进行编辑。Adobe Acrobat Pro提供高级编辑功能,而开源工具...
python pdf解析
09-10
python 实现pdf解析。。
Python中通过PyPDF2实现PDF加密资源以及示例代码
04-26
Python中通过PyPDF2实现PDF加密资源以及示例代码
python解析pdf文件
irisMoon06的博客
07-21 522
先安装PyPDF2,据说这是目前最好的解析pdf的包。
python操作pdf加密解密
m0_72398286的博客
09-03 2032
python操作pdf加密解密。PyPDF2模块操作PDF整体思想:从源文件中读,对读出来的数据做的一系列操作都放入新的PDF文件。
使用python解析pdf文件
热门推荐
u011331397的博客
12-03 1万+
使用python解析pdf文件 本文主要介绍怎么使用python解析pdf文件 pdf文件格式 今天,pdf已经是最常用的数据格式。在1990, Adobe公司定义pdf文档的结构。PDF 格式背后的理念是,传输的数据/文档对于参与通信过程的双方(创建者、作者或发送者以及接收者)来说看起来完全相同。PDF 是 PostScript 格式的继承者,并被标准化为 ISO 32000-2:2017。 处理PDF文件 对于 Linux,有强大的命令行工具可用,例如 pdftk 和 pdfgrep。但作为开发人员,基
Python进行PDF解密
weixin_45721882的博客
12-10 1379
PDF解密 import pikepdf # opens a PDF with restrictive editing enabled, but that still # allows printing. def pdf_Crack(startFile,endFile): with pikepdf.open(startFile) as pdf: pdf.save(endFile) return endFile
python PDF解密打印文件
阿优乐扬的博客
10-22 1435
前言:我们在打印一些PDF文件的时候可能会遇见加密不能打印的情况,需要提供密码才能打印。如果直接在浏览器中浏览PDF文件,它不能调取打印功能。但是我们可以换一个思路转换一下解密文件,就可以正常打印了,方向如下
python如何解析PDF文件
weixin_45775484的博客
11-01 2686
python如何解析PDF文件 python中读取pdf的方法:使用python第三方库pdfminerk3k 1.使用pdfminer库 pdfminer是一个主流的分析pdf的库。如果是python3版本,通过pip install pdfminer3k下载 对于pdfminer的学习,我参考的主要是pdf信息提取. pdfminer将pdf解析为如图所示的形式: 但上面那篇参考文档的例子是关于LTText的,我要解析文档基本是扫描件,即主要由LTImage组成,所以我接下来的内容主要围绕如何提取L
python pdf文档解析
08-03
要使用Python解析PDF文档,可以使用PyMuPDF或PyPDF2这两个库。 使用PyMuPDF库可以抽取文档信息和内容。下面是一个使用PyMuPDF抽取文档信息和内容的例子: ```python import fitz pdf_document = "example.pdf" doc = fitz.open(pdf_document) print("number of pages: %i" % doc.pageCount) print(doc.metadata) page1 = doc.loadPage(0) page1text = page1.getText("text") print(page1text) ``` [1] 使用PyPDF2库可以将一个PDF文件分割成多个PDF文件。下面是一个使用PyPDF2分割PDF文件的例子: ```python from PyPDF2 import PdfFileReader, PdfFileWriter pdf_document = "example.pdf" pdf = PdfFileReader(pdf_document) for page in range(pdf.getNumPages()): pdf = PdfFileReader(pdf_document) pdf_writer = PdfFileWriter() current_page = pdf.getPage(page) pdf_writer.addPage(current_page) outputFilename = "example-page-{}.pdf".format(page + 1) with open(outputFilename, "wb") as out: pdf_writer.write(out) print("created", outputFilename) ``` [2] 以上是使用PyMuPDF和PyPDF2库进行PDF文档解析的例子。如果需要更详细的函数用法,可以参考PyPDF2的中文文档或者在线PDF解密工具。希望对您有帮助![3]
写文章

热门文章

  • (Python)使用清华源进行python的pip安装(任何环境,不用换源,用时只需加上一行代码 25492
  • 用Python实现问卷星自动填写(超详细!!!) 19471
  • python实现pdf文档的解密(超详细!!!也有最便捷的方式在总结!!!) 8237
  • Python的selenium闪退和谷歌浏览器版本或驱动不兼容问题解决方法以及基本配置语法(Selenium和Google版本及GoogleDriver版本对应) 4820
  • 方法 ‘XXXX.parse()‘ 的签名与类 ‘Spider‘ 中基方法的签名不匹配 2187

分类专栏

  • python方法 1篇
  • python网页处理 1篇

最新评论

  • 用Python实现问卷星自动填写(超详细!!!)

    不当王多鱼不改名: 这是因为你下的版本库是新版的,你用新版的方法find_element(By.CSS, "里面的选择"),你可以去搜索新版selenium怎么用

  • 用Python实现问卷星自动填写(超详细!!!)

    m0_75063082: 这个问题得到解决了吗?

  • 用Python实现问卷星自动填写(超详细!!!)

    m0_75063082: AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector',看了评论还是没有知道怎么做呢,我的css不对?

  • Python的selenium闪退和谷歌浏览器版本或驱动不兼容问题解决方法以及基本配置语法(Selenium和Google版本及GoogleDriver版本对应)

    不当王多鱼不改名: 可以,你去打开测试版的exe文件,就跟谷歌浏览器一样的操作

  • python实现pdf文档的解密(超详细!!!也有最便捷的方式在总结!!!)

    不当王多鱼不改名: 不用知道编辑密码,这是破解编辑文档的教程,如果需要破解打开密码请移步另一篇文章

大家在看

  • Spring Boot利用dag加速Spring beans初始化 1084
  • 数据结构:二叉树(2) 805
  • 0基础学习HTML(十一)列表 197
  • 深度学习:神经网络--手写数字识别
  • python App爬虫怎么实现?答案在这有! 798

最新文章

  • Python的selenium闪退和谷歌浏览器版本或驱动不兼容问题解决方法以及基本配置语法(Selenium和Google版本及GoogleDriver版本对应)
  • 方法 ‘XXXX.parse()‘ 的签名与类 ‘Spider‘ 中基方法的签名不匹配
  • (Python)用python完成计算亲和数对(相亲数、友爱数)、完备数(完全数、完美数)
2023年8篇

目录

目录

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢雕塑生产的危害沈阳个性化玻璃钢雕塑批发玻璃钢花盆花器品牌丽水个性化玻璃钢雕塑哪家便宜江苏镜面玻璃钢雕塑货真价实玻璃钢动物马雕塑哪里有河北玻璃钢商场美陈成都玻璃钢雕塑加工视频西藏玻璃钢装饰雕塑北京做玻璃钢雕塑的主题玻璃钢人物雕塑规定实用的宁夏玻璃钢雕塑山东商场创意商业美陈步骤品牌好的玻璃钢雕塑玻璃钢花盆的材质泉州玻璃钢雕塑加工陆丰玻璃钢门头雕塑江宁商场春季美陈海南商城艺术玻璃钢雕塑工厂河南景观标识校园玻璃钢雕塑厂家运城玻璃钢花盆商场美陈就是dp点吗承德玻璃钢商场美陈上海人物玻璃钢雕塑优势十周年商场美陈布置方案郑州玻璃钢人物雕塑公司滨州公园玻璃钢雕塑公司亳州佛像玻璃钢雕塑供应商深圳中庭商场美陈批发价苏州玻璃钢雕塑人物设计香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化