+++++
某些 PDF 文件经 macOS Preview 编辑后无法再打开
今天我遇到了一个奇怪的问题。互联网上很多人都曾经或者正遇到了这样的问题,在 Reddit、Apple Support Community 上求解答,但是无果,只有一些变通的不完美的方法。
问题是这样的:某些PDF 文件经 macOS Preview 编辑后保存或者另存后的 PDF 文件无法再打开,提示需要输入 the owner password。
经测试,这问题只针对特定类型的 PDF 文件才会出现。
谷歌搜索结果: macOS Preview automatically password protected PDF when saving。有两年前提问求解答的,有几天前提问求解答的。
+++++
还原问题和分析问题所在
1、原始 PDF 文件 fillable,且是政府表格。我们称之为 PDF1。
2、用 macOS 的 File > Get Info 可以看到 PDF1 文件权限设置。
 |
图 1:原始 PDF 文件当前用户(我)的权限
|
如图 1 所示:
- 这个文件 Encrypted,但是目前 The document is unlocked with the user password——这个 user 也就是我;
- 当前用户(我)具有七个 Permissions 中的六个;
- 文件被锁,必须输入 the owner password 才能解锁并打开全部七个 Permission。我不是 the owner,没有密码,所以怎么都无法打开那个黄色的锁。
 |
图 2:原始文件的用户组的权限设置
|
如图 2 所示,这个文件目前开放给了三个用户组:
- ard 拥有 Read & Write 权限——ard 就是我;
- staff 拥有 Read only 权限;
- Everyone 拥有 Read only 权限。
并且这个文件是没有 locked,而且 Password Encrypted,也就是说这个文件一直有一个内置的 owner password 密码;我可以用电脑密码打开图上的黄色的锁,修改权限,增加或者去掉用户组。
3、表格填写完成后另存,这个另存的文件我们称之为 PDF2。PDF2 的权限同 PDF1。
以上是常规步骤。
下面是两种处理方法,产生了迥异的结果。
***** 4_1 老版本 macOS 下的 Preview 编辑 PDF2 生成 PDF3 *****
4_1、用老版本的 macOS——比如 Big Sur——的 Preview 编辑 PDF2,比如签名,保存 PDF2,Export as PDF 为 PDF3。PDF2 和 PDF3 可以在任何地方打开。PDF3 的权限同 PDF2 和 PDF1。
PDF2 和 PDF3 的权限和属性类似图 1 和 图 2,但是有一些文件属性发生了变化。
 |
图 3:PDF2 和 PDF3 的一些文件属性发生了变化
|
如图 3 所示:
- Authors 这个文件属性没了;
- Version 变成了 1.3;
- Security 变成了 None;
- Content Creator 变成了 Preview;
- Encoding Software 变成了 macOS Version 11.7.10 (Build 20G1427) Quartz PDFContext。
***** 4_2 新 macOS 下的 Preview 编辑 PDF2 生成 PDF4 *****
4_2、用新版本的 macOS Sonoma 里的 Preview 编辑 PDF2,比如签名,Export as PDF 为 PDF4,保存变更后的 PDF2。
 |
图 4:当然用户(我)没有任何 Permissions 了
|
如图 4 所示,编辑后的文件 PDF2 和 PDF4 被锁死了,我失去了所有 Permissions (绿色的勾全部变灰了)。
 |
图 5:PDF4 失去了 Authors 等信息。
|
图 5 基本同图 2,
但是PDF2 和 PDF4 的文件属性里都没有 Authors、Version、Pages、Resolution、Security、Content Creator、Encoding software 这几项信息。***** 4_2 的处理方法带来了问题 *****
经过各种测试,4_2 处理后的 PDF2 和 PDF4:
- 可以用 Google Chrome 或者 Microsoft Edge 浏览器打开,
- 也可以用 Irfanview + PDF 插件打开,
- 但是无法用 Firefox 或者 Safari 打开,
- 也无法用 macOS 新和旧的 Preview 也打开,
- 也无法用 Adobe Reader 打开——所以问题大了,因为绝大多数人用它。
在无法打开的情况下,提示输入 the owner password。
几个不合理的地方:
- 在编辑之前,我对 PDF2 拥有 Read & Write 权限,我当然可以用 Preview 自由编辑保存 PDF2 或另存为 PDF4。
- 在编辑后,我对 PDF2 和 PDF4 仍然有 Read & Write 权限,但是没有用,我用 Preview 编辑生成的文件竟然自己用 Preview 无法再打开。
- 为什么 Chrome、Edge、Irfanview 能打开 PDF2 和 PDF4 呢?
这个 Read & Write 权限竟然有时有用,有时没用,实在奇怪。我只能得出这个结论,通过 File > Get Info 查看到的权限并不名副其实。
***** 猜测问题所在 *****
我对 PDF 的内部安全机制并不了解。我首先如此猜测:我只是 user 组,文件的 owner 组具有更高级别的权限。我的编辑操作触发了文件内部安全机制,把文件锁死了。但是这个猜想是错误的,因为有的工具可以打开,所以文件并没有被锁死。
是不是因为图 5 中缺少的一些文件属性信息是问题所在?这可以解释有些工具可以打开,有些工具无法打开。
如果这个猜想是正确的,那么罪魁祸首是新版本 macOS 里的 Preview,经过它的编辑后,某些内置 owner password 的 PDF 会丢失一些重要的文件属性,这导致有些工具不知道怎么正确解析这些 PDF。的确有人投诉 Preview 会丢失文件属性信息。
+++++
解决办法
既然是 macOS 新操作系统里的 Preview 的问题,所以我们不用它,而
- 用 Adobe Reader 来签名。这个方法的缺点是 Adobe Reader 编辑功能不多或收费,或者
- 用老版本的 macOS 上的 Preview 来编辑。新旧 macOS 上的 Preview 功能几乎没有什么差别。
Preview 的编辑功能十分强大,如果非要用新系统上的 Preview,可以通过下面的方法来解决上面的问题:
- 用 Chrome 浏览器打开 PDF4,然后利用“Print as PDF”打印成 PDF5。
- 用 Ghostscript 或者其他工具把 PDF2 的密码去掉,再用 Preview 编辑。
- 用 Ghostscript 或者其他压缩软件把 PDF2 处理一下,再用 Preview 编辑。
我不推荐方法 1,这是不完美的方法,PDF5 的文本格式有变化,文件大小可能是 PDF4 的几倍大。
我们把经过方法 2 或者 3 处理后的文件称之为 PDF6。PDF6 的 Permissions 全部开放,因此我们可以打开或关闭各个 Permission;还可以设置 PDF6 的 the owner password,也就是说原始的 owner password 被去掉了,
+++++
继续猜想: Adobe Designer 6.3
PDF 本质就是 script,就是程序语言的外在呈现,所以核心里的程序到底怎么写的,我们其实很难知道。
我所用的原始 PDF 文件来自加拿大政府网站,是 Adobe LiveCycle Designer 6.3 生成的(见图2),而这个工具 bug 特别多,并且 Adobe 公司于 2018 年 3 月不再对其提供支持,已经用 Adobe Experience Manager Forms 取代了它。也十分有可能 Preview 遇到了 Designer 内置在 PDF 里的 script 或者编码有 bug,不知道怎么处理,只好把一些文件属性丢掉。