PDF 解锁
把一份你本来就能打开的 PDF 的密码去掉 —— 在你的浏览器里,用你已经有的密码。每次打开一份银行或工资单都要输同一个密码时,这个工具能派上用场。
🔒 你的文档不会离开浏览器 —— 你的密码同样不会。什么都不上传、不存储、不记录。
把一份带密码的 PDF 拖到这里
这个工具不会做的事
它不破解、不猜测、不绕过任何东西。一份 PDF 可以带两个密码:打开文档的那一个,以及另一个只限制打印或复制的「权限」密码。很多在线解锁工具会不问一声就悄悄去掉后者——那就是在绕过一项保护措施,本工具拒绝这么做。这里的两种情况都需要你提供密码。
为什么在这里,本地处理比别处更要紧
想想一份密码保护的 PDF 通常是什么:工资单、银行对账单、病历、合同。把那份文件连同它的密码一起上传到陌生人的服务器,是最糟糕的交易。这里的一切都在你的浏览器里运行——与本 PDF 工作台其余工具同一套引擎——所以没有东西可上传,也没有密码可泄漏。文件一解锁,密码框立刻清空。
产物是一份干净的文件,不是一份解密到一半的文件
有个细节值得知道:底层库会在保存的文件里留下一个指向旧加密字典的失效引用。阅读器能应付它,但一次严格的结构检查——就像本站每个工具都会做的那样——仍然会判定这个文件是加密的,下一个你想用的工具就会拒收它。本工具会清掉这个残留,所以你下载到的是一份真正干净的 PDF:核实过未加密,页面与文字完整无损。
本工具执行的全部检查(共 26 条规则)
PDFI-001 没有 PDF 文件头
开头一千字节里没有 %PDF 标记 —— 这个文件要么不是 PDF,要么开头已经没了。改了扩展名的 Office 文件、被存成 ".pdf" 的 HTML 报错页,都会落到这里。
修复: 重新导出或重新下载;顺便确认它真实的格式是什么。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFI-002 文件被截断
接近末尾处没有 %%EOF 标记。PDF 以 %%EOF 结束;缺了它意味着下载或复制中断过。这一份通常修不回来。
修复: 从源头重新下载或重新导出。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFI-003 加密的 PDF
文件带着 /Encrypt 字典。本工具不移除密码、也不处理受保护的文件 —— 这是有意划下的边界,不是缺陷。
修复: 用任意阅读器输入密码打开它,再导出一份不加密的副本。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFI-004 交叉引用表损坏
末尾附近没有 startxref 指针。有些阅读器会重建这张表并照样打开文件;但处理过程仍可能失败。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFR-001 页码选择读不懂
选择的写法是页码与区间:3、1-5、7-(到最后一页)、-4(从第一页起)、last。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFR-002 区间写反了
像 9-3 这样的区间是倒着写的。区间从小到大;修复建议会告诉你对调后的写法。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFR-003 页码超出范围
选择指向了最后一页之后。消息里会写出这份文档真实的页数。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFR-004 选择结果为空
这个选择一页都没有命中。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFO-001 坏文件被跳过,合并继续
诊断没通过的文件会被跳过,并把它的诊断结论一并附上 —— 绝不无声丢弃 —— 合并则带着其余文件继续。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFO-002 结构看着没问题,引擎却读不了
字节层面的检查都过了,解析器却在更深处失败。引擎的报错会原样引出来,这个文件被跳过。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFC-001 没有可重压的东西
本工具靠重新压缩 PDF 里的 JPEG 来给图片多的文件瘦身。纯文字文件没有图片可处理 —— 这一点会如实报告,而不是含糊带过。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFC-002 保留原件 —— 它本来就已经很省了
如果重新编码并不会让文件更小,就把原始字节原样返回。不造假节省量,也不做无谓的重存。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFC-003 每一处改动都列出来
每张被重压的图片都报出它压缩前后的体积、分辨率与 PSNR(用分贝衡量像素与原图有多接近)。没有任何改动是悄悄做掉的。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFC-004 处理不了的图片原样保留
色彩空间或编码方式超出编解码器能力的图片(某些 CMYK 印刷文件、带遮罩的图片)会被逐字节保留 —— 错误的重新编码会把这一页毁掉。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFC-005 有图片,但没有一张适合重压
文件里有图片,但每一张都属于本工具有意不碰的形态(黑白传真扫描件、模板遮罩、透明通道、少见的色彩空间)。每张图片都会说明自己属于哪一种 —— 明明有图片却谎称「没有图片」,这个工具不做。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFU-001 没有加密 —— 没有什么可解锁的
文件里没有 /Encrypt 字典,也就没有密码。什么都没有被改动。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFU-002 需要密码
加密的 PDF 是用你自己提供的密码来解密的。本工具从不破解、不猜测、不绕过任何保护 —— 权限密码(所谓 owner 密码)同样如此,而有些站点是不问一声就把它去掉的。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFU-003 密码不对
提供的密码打不开这份文档。一个 PDF 可以带两个密码;这里需要的是能打开文件的那一个。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFU-004 已在本地解密
文档是在你的浏览器里用你的密码解密的,保存时不再加密。什么都没有上传。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFU-005 无法重建文档
引擎在密码这一步之后失败了;底层的报错会原样引出来,而不是藏起来。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFG-001 不是 90 度的整数倍
PDF 把页面旋转存为 /Rotate,而格式规定它必须是 90 的倍数。任意角度需要把页面内容重画一遍,本工具不做这件事 —— 所以它选择拒绝,而不是悄悄四舍五入。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFG-002 所有页面都被删掉了
零页的 PDF 不是一份有效文档,所以这个方案被拒绝,而不是写出一个打不开的文件。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFG-003 这一页不存在
请求了文档之外的页码。整个方案被拒绝:与合并不同,重排里被悄悄丢掉的一页,在结果里是看不出来的。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFG-004 这个方案什么都没改
页面方案与原文档完全相同,所以产物只会是一次重建。直说这一点,而不是把它当成做了活。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFG-005 页面重建之后什么会留下
页面内容、图片、批注与表单字段都会被复制。文档大纲(书签)在合并时会带过去 —— 目的地会被重映射到新的页码位置 —— 但重排或删页的页面重建并不会重映射它们,因为一个指向已经不存在的页面的大纲条目没有正确答案。这一点先说清楚,而不是让你事后发现。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
PDFO-003 没有产物
每一个输入都失败了 —— 没有结果文件。
来源: 这是本工具引擎的规则,写出来是为了让你确切看到它做了什么。结构层面的事实(文件头、%%EOF、/Encrypt、startxref)遵循 PDF 文件格式(ISO 32000);诊断用的启发式判断是本项目自己的。
结构性事实依据 PDF 文件格式标准(ISO 32000);解锁策略(PDFU-*)——用你的密码解密,绝不绕过——是本工具自己的规则,并如实标注。
关于这些规则。 每一条都有编号、严重级别和通俗解释。每个来源链接都已登记在案,并对线上页面实际复验过,而不是凭印象写上去的. 规则如何编写、测试与保持更新 →