0

1) 我看到有些人致力于在 PDF 对象之间隐藏数据。他们告诉这种方法有效,但最大的缺点是 acrobat reader 在关闭窗口时要求重新保存文件。

我不明白他们在 PDF 对象之间隐藏信息的含义。拜托我需要你的帮忙 :)

2) 我还看到有人在 %%EOF 之后隐藏信息,并被告知这不是解决方案,因为签名未应用于需要功能的元数据。

另外我不明白他们对本主题中的元数据意味着什么?

我参考了这个链接如何在 PDF 文件中隐藏文本?

此致,

李斯特。

4

1 回答 1

3

1) 我看到有些人致力于在 PDF 对象之间隐藏数据。他们告诉这种方法有效,但最大的缺点是 acrobat reader 在关闭窗口时要求重新保存文件。

我不明白他们在 PDF 对象之间隐藏信息的含义。

通常,您的 PDF 是一系列 PDF 对象,前面有标识数字和将这些数字映射到它们在 PDF 中的位置的交叉引用:

...
2 0 obj
/WinAnsiEncoding
endobj
3 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Courier
/Name /F001
/Encoding 2 0 R
>>
endobj
4 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Courier-Bold
/Name /F002
/Encoding 2 0 R
>>
....
xref
0 17
0000000000 65535 f
0000014476 00000 n
0000000017 00000 n
0000000052 00000 n
0000000205 00000 n
...

当 PDF 解析器解析一个对象(例如 object 2)时,他们通常只在交叉引用中查找关联的值(在 object 2 的情况下它是17)并从字节 17 开始读取文件,首先期望对象和代号( 2 0 ) 然后是标签obj;他们将该标记之后的所有内容解析到匹配的endobj标记,然后停止。(实际上在某些情况下它有点扭曲,但这是一般的想法。)

因此,有些人认为在一个 PDF 对象的endobj和下一个对象编号之间添加他们的秘密数据是个好主意,如下所示:

2 0 obj
/WinAnsiEncoding
endobj
HERE ARE MY VERY SECRET VERY HIDDEN DATA, PROBABLY ENCRYPTED ETC
3 0 obj

现在一些 PDF 阅读器确实认识到存在一些垃圾字节,并提供在没有它们的情况下保存文件。

2) 我还看到有人在 %%EOF 之后隐藏信息,并被告知这不是解决方案,因为签名未应用于需要功能的元数据。

大多数 PDF 阅读器会忽略标记后的一些垃圾数据,因为在很久以前,一些 PDF 生成或传输过程会在那里留下一些额外的垃圾。

...
%%EOF
AGAIN SOME SECRET DATA

但是,当他们自己操作 PDF 时,例如在签名时,PDF 阅读器可能会继续并根据 PDF 规范丢弃不存在的所有内容。或者在签名的情况下,他们可能会将尾随字节留在原处,然后在它们之后整合签名。一些程序在文件末尾期望那些额外的数据之后可能找不到它们了,因为它们现在在里面的某个地方。

另外我不明白他们对本主题中的元数据意味着什么?

有些人实际上使用这种机制来添加后续处理步骤所需的信息。例如,创建一些 PDF 发票的过程可能会在文件末尾添加将 PDF 发送到的地址和要支付的金额,然后对 PDF 进行更多处理,例如审核或存档,并在某些最终过程中将其发送出去给收件人。

根据最后添加的数量,审核步骤可能会有所不同;也许价值超过 1000 美元的销售额必须由特殊人员清算。

发送过程也可以使用文件结束后的额外数据将文件发送给接收者。

有关某些文档的此类数据有时称为元数据。

于 2013-08-22T13:04:23.750 回答