3

我在 Mac 上的 Preview 中打开了一个 3 页的 PDF 文件。如果我不更改文件,点击 cmd-s 并保存文件,文件的二进制内容会发生很大变化。为什么是这样?

由于我的过程,我可以说是这种情况:

  1. 制作 pdf 的副本 (cp a.pdf b.pdf)

  2. vimdiff a.pdf b.pdf(没有变化,内容完全相同)

  3. 在预览中打开 a.pdf(不进行编辑)

  4. vimdiff a.pdf b.pdf(没有变化,内容完全相同)

  5. 点击 cmd-s (保存 pdf)

  6. vimdiff a.pdf b.pdf(大量更改,远远超出 pdf 的元数据)

任何人都可以解释为什么/如何“重写”PDF,即使没有进行任何更改?

4

2 回答 2

4

事实上,在第一次保存 PDF 时,Preview 会大量重写最初由任何非 Quartz 应用程序创建的任何 PDF。

我靠调试 PDF 谋生(部分)。

而且我现在养成了一个习惯,一旦我发现提供的示例 PDF 已被 Quartz 触及(幸运的是,Apple 承认其参与其中通过使用或类似更新/Producer元数据密钥):Mac OS X 10.7.4 Quartz PDFContext

  • 因为我永远不知道这个 PDF 是否是显示所描述问题的原始 PDF,或者客户是否只是试图通过他的 MacBook 邮寄原始问题 PDF 并且在操作他的邮件应用程序时无意地重新保存 + 重新编写了 PDF。

  • 因此,我总是需要首先与 Apple 客户建立一个程序,以保证我可以分析显示特定错误或问题的原始 PDF 文件,而不是那些被 Quartz/Preview 破坏的文件。在大约一年前发现问题之前,我已经错误地花费了很多天来“分析”错误的文件......

很多 Apple Cult 的忠实信徒并没有意识到这种行为,很多印前专业人士也对此一无所知。

第二次保存 PDF 时,很可能只有/ModDate元数据密钥会被更新(除非您在 Mac 上使用新版本的 Quartz)......但在您真正仔细查看之前,您永远不会知道有问题的PDF。


更新(带有一些附加信息)

顺便说一句,对我来说,简单的点击[cmd]+[s]没有改变 PDF。但我在 Mac OS X 上Lion 10.7.4,带有 Preview.app Version 552 (719.23)。在 Lion 上,更改是通过以新名称保存文件来触发的(Duplicate => Save...)。

k00k 似乎在 Mac OS X 上Mountain Lion 10.8.1,带有 Preview.app Version 6.00 (765)。对他来说,一个简单的打击就[cmd]+[s]足以引发变化。


(我并不是说 Apple 对预览版 PDF 文件所做的更改一定是不好的。在某些情况下,这可能会默默地“修复”损坏的文件,并且可能会被认为是“用户友好”的行为。——我什么'我的意思是,有一些变化(无论是好是坏都无关紧要),这些变化超越了元数据——将新/ModDate值标记到文件中,并且可能使 PDF 问题的故障排除变得非常痛苦......)

于 2012-09-20T20:52:30.037 回答
1

我没有预览应用程序的源代码,所以我不能确定。我可以猜测他们不仅保存了加载的相同数据,而且似乎他们正在重新构建一个“等效”的 PDF 文件。

此外,当 PDF 文件“重新创建”时,其中的一些项目总是不同的(唯一 ID、上次日期/时间修改等)。

于 2012-09-20T19:06:50.600 回答