gpt4 book ai didi

pdf - 为什么即使内容相同,PDF 文件也不同?

转载 作者:行者123 更新时间:2023-12-04 18:08:43 24 4
gpt4 key购买 nike

“通常有不止一种方法可以创建 PDF
在 PDF 查看器中打开时看起来像同卵双胞胎的文档。而且即使你
使用完全相同的代码创建两个相同的 PDF 文档,会有细微差别
在两个结果文件之间。这是 PDF 格式所固有的。”

我在“Itext in action-second edition”中读到了这一段。(p 17)。谁能解释一下作者在谈论什么样的差异。如果我可以说,pdf格式有这个缺陷的原因。

最佳答案

在不同时刻创建的文件具有不同的 CreationDate 值。并且它们具有不同的文件标识符(在不同时刻创建的两个文件应该具有不同的 ID,如 PDF 规范中所定义)。

文件标识符通常是基于日期、路径名、文件大小、PDF 文件的部分内容(例如信息字典中的条目)创建的哈希。我引用 ISO-32000-1:

The calculation of the file identifier need not be reproducible; all that matters is that the identifier is likely to be unique. For example, two implementations of the preceding algorithm might use different formats for the current time, causing them to produce different file identifiers for the same file created at the same time, but the uniqueness of the identifier is not affected.



加密文档时必须使用文件标识符,因为它们用于加密过程。因此,具有不同文件标识符的加密 PDF 文件将具有完全不同的流。这不是缺陷,这是设计使然。我是致力于 PDF 2.0 规范的 ISO 委员会的成员,我可以向您保证,没有计划改变这一点。即使使用相同的代码,在不同时间点创建的文件也会有所不同。 (我也是你提到的那本书的作者。)

ISO 规范还允许其他差异。
例如:用于在页面上显示图形和文本的语法可以出于任何原因重新组织。
请参阅 ISO-32000-1 的第 8.2 节,其中说:

The important point is that there is no semantic significance to the exact arrangement of graphics state operators. A conforming reader or writer of a PDF content stream may change an arrangement of graphics state operators to any other arrangement that achieves the same values of the relevant graphics state parameters for each graphics object.



在处理 PDF 内容流时,PDF 处理器可能会更改图形的排列
状态运算符到任何其他实现相关图形状态相同值的排列
每个图形对象的参数。这样做可以优化页面,使其渲染速度更快,
以便于调试、改进压缩或出于任何其他原因。

两个看似相同的 PDF 在内部可能不同的另一个原因与 PDF 词典有关。
字典中键的顺序在 PDF 中没有任何重要性。
例如,实现规范的软件将使用 HashMap故事键/值对。
根据 JVM,相同的代码可能会导致两个 PDF 的字典在语义上相同,
但其中条目以不同的方式排序。这不是错误。这完全符合 ISO-32000-1。

重要提示:使用相同代码但在不同时间创建的两个 PDF 文件之间的内部差异可能不会导致在 PDF 查看器中打开文档或在纸上打印文档时的视觉差异。

关于pdf - 为什么即使内容相同,PDF 文件也不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com