页面代码没有启动。

直接从文件夹打开 index.html 会阻止 JavaScript 模块加载,所以选择一份 PDF后不会有任何反应。 请改用 http 方式提供此目录:

powershell -ExecutionPolicy Bypass -File serve.ps1

Then open http://localhost:8080/.

PDF 解锁

权限限制与打开密码不同。页面会说明你的 PDF 使用哪种保护。

查看源码
你的文档在你自己的浏览器里处理,不做任何上传。

你选的那份文档,打开、解密、写回,全都在这台机器的内存里完成,用的是从这个地址发来的代码。这里根本没有能做上传的东西,这一页的另一头也没有服务器可以接收。文件不会离开这个标签页,你打进去的密码也不会。

实时检查: 核对中…

离线: 核对中…

别听我们说。打开开发者工具,盯着网络面板,然后解锁点什么。没有任何一条请求带着文档、密码或者文件名。或者干脆断网,照样能解。

1 选那份被保护的 PDF

2 看看它上面有什么

一份 PDF 可以用两种看着很像、其实完全不同的方式锁上。一种是打开密码,没有密码谁都过不去。另一种是一组限制,不许打印、不许复制、不许编辑,而这个文件本身谁都打得开,那把锁是你的阅读器同意去遵守的一个请求,不是任何密码学上的东西。这里会说这份文档带的是两种里的哪一种。

还没有选文件。文档到了这里之后,这句话会说它是两种里的哪一种、那层加密值多少,以及到底需不需要密码。

3 把保护去掉

顺便把文件记着的来历也去掉 锁上它的那个程序的名字、它是什么时候做的、最后一次编辑是什么时候、XMP 包,以及排版软件留下的那些私有块。这跟去掉保护是两件事,你不主动要就不做,另外,不管做不做,你文档上的其他一切都原样通过。

以 Markdown 查看

怎么去掉 PDF 的密码或者那些限制

  1. 选那份被保护的 PDF。选择一个文档。浏览器从磁盘读取它,首先尝试空密码。对于只限制权限、不要求密码即可阅读的文件,这样便能打开。
  2. 看这一页找到了什么。它会说这个文件带的是两种保护里的哪一种、用的是什么方案、那个方案在今天值多少,并且列出这份文档请阅读器遵守的每一条限制:打印、复制、编辑、批注、填表单、调整页序,甚至朗读给看不见的人听。
  3. 输密码,但只在它开口要的时候。密码框只在空密码没能打开这份文档的时候才出现,而那也是密码唯一有用的时候。文档的两个密码哪个都行,打开它的那个,或者解除限制的权限密码。这里什么都不猜,你打进去的东西也留在这个标签页里。
  4. 去掉它,然后读那句写着「已核对」的话。文档会用它自己的密钥解密,再写回去,出来的文件里连加密字典都没有。接着做好的文件会在这里被重新打开一次,不给密码,用的是一个碰到加密文档就拒绝的读取器。要是它打不开,或者页数跟原来对不上,你不会拿到下载,只会拿到一句说明。

更完整的说明

如何解锁 PDF,先知道是哪种锁 不能打印与不能打开是两个问题。了解为何一个一键解决,另一个必须有密码,以及如何辨别。

有疑问?

我需要密码吗?

取决于保护类型。PDF 无需密码即可打开、但限制打印或复制时,可以在这里不输入密码就移除这些权限限制。若需要打开密码,请提供用户密码或所有者密码。页面先尝试空密码,再解释检测到的情况。

我没有密码的 PDF,它能打开吗?

不能。本工具不猜测密码,也不搜索加密密钥。可查看 src/shared/pdf-crypt.js 了解它如何处理提供的密码。其他恢复工具可能猜测弱密码或攻击过时加密,但不保证成功;本页面两者都不做。不知道有效密码时,请向发送者索取密码或可访问的副本。

两个密码有什么区别?

PDF 可以有两种密码。用户密码用于打开文档;所有者密码授予全部权限。文档可以设置所有者密码而将用户密码留空,此时能自由打开,但阅读器仍执行打印或复制限制。本工具接受你提供的任一种密码,并说明检测结果。

去掉这些限制合法吗?

这取决于是哪份文档、你在哪里,而且这是一个关于你对这个文件有什么权利的问题,不是关于技术的问题。能明说的是这个格式本身是怎么回事:那些限制是文档里面的一个字段,阅读器按约定去遵守它,它不是一道密码学的墙,而 Adobe 从它被引入的那天起就是这么写的。这个工具是给你有权使用的文档用的,你自己那份打不出来的对账单、你花钱买了却复制不了的报告、你需要重排页序的扫描件。如果这个文件本来就不该归你用,这里的任何东西都改变不了这一点。

它支持哪些加密方式?

公开发布过的每一种:40 位和 128 位的 RC4(修订 2 和 3)、AES-128(修订 4),以及 AES-256 的两种形态,2008 年那个后来被撤回的版本和当前 PDF 2.0 的版本(修订 5 和 6)。不支持的是基于证书的加密,那种情况下密钥属于一张智能卡或者一个密钥库而不是一个密码,另外还有 Adobe 那个唯一没有公开的变体。这两种都会被拒绝,并且说明它们分别是什么,而不是含糊地失败。

做完之后文档看上去会不一样吗?

不会。什么都不会被重新渲染、重新编码或者重排:每一页的绘制指令、每一个嵌入字体、每一张图片,都原样复制过去。文字还能选,扫描件还是原来的分辨率,什么都不会移位。文件可能会小一点,因为一次重写会把早先编辑留在里面、已经被取代的旧对象丢掉。

带签名的文档会怎么样?

它的签名会失效,而且没有办法绕过去。签名覆盖的是它当初签的那个文件的确切字节,所以任何改动,任何程序做的,包括当初签它的那个程序,都会让它失效。这正是签名的意义所在。这个工具写的是一个新文件,发现原件带签名时会在结果里说明。把你的原件留着:那一份仍然是签过名的。

我的文档或者密码会被上传到什么地方吗?

不会。文件是你自己的浏览器在你自己的硬件上读取、解密、写出的,密码进的是一段跑在这个标签页里的密钥推导。这个工具没有服务器那一端,页面的 Content-Security-Policy 列出了它可以联系的每一个地址,其中没有一个属于本站。最简单的验证办法,是把网线拔掉,照样用这一页。

我怎么知道保护真的没了?

因为这个工具会在你的机器上核对,并且把结果给你看。文件写好之后,它会被交给本站其他 PDF 工具用的同一个读取器,一个碰到加密文档就直接拒绝的读取器,而它必须在不给密码的情况下打开,并且页数跟原来一样。要是过不了,这次运行就报告为失败,什么都不会给你下载。你事后也可以自己验:用任何一个阅读器打开它,去看文档属性,那里每一项权限现在都应该写着「允许」。

有大小限制吗?要钱吗?

工具里没有写死任何限制。限制是你自己的机器:文档在处理的时候是放在内存里的,几百兆的量,一台笔记本吃得下,再往上就会吃力。它是免费的,不注册、不登录,也没有试用期。本站带广告,那是养活它的东西;广告拿不到任何关于你文档的内容。

断网能用吗?

能。把页面加载一次,然后断开网络,它照样能用。这也是证明什么都没被上传的最简单的办法:一个把你的文档发出去解锁的工具,你一拔网线它就停了。