答案1
在 PDF 文件中,%
注释开始,因此这只是一个无用的字符串。许多 PDF 生成器使用它来防止文件混乱通过有缺陷的程序
但是如何做到呢?有些应用程序会通过检查第一个数据块(通常为 512、1024 或 2048 字节)来启发式地检查文件是文本还是二进制文件,并测量不可打印或无效字符的百分比。有些则不会8 位清洁。因此,建议在前 512 个字节中至少放置 4 个值大于 127 的字节,以强制这些应用程序将文件识别为二进制文件。否则会发生一些不好的事情,例如在 CRLF 和 LF 之间转换、截断顶部位或删除无效的 UTF-8 字节序列(如果文件被识别为 UTF-8 文本)
接下来是一些使用不可打印字符的 ASCII 字符(请注意“。”点),这些字符通常用于告诉某些软件产品该文件包含二进制数据,不应将其视为 7 位 ASCII 文本
https://resources.infosecinstitute.com/pdf-file-format-basic-structure/#gref
它实际上是 PDF 标准推荐的
笔记: 如果 PDF 文件包含二进制数据(大多数文件都包含二进制数据,请参阅第 3.1 节“词汇约定”),建议标题行后面紧跟注释行,注释行至少包含四个二进制字符,即代码为 128 或更大的字符。这可确保文件传输应用程序的正确行为,这些应用程序会检查文件开头附近的数据,以确定是将文件内容视为文本还是二进制。
https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf
如果 PDF 文件包含二进制数据(大多数文件都包含二进制数据,请参阅 7.2“词汇约定”),则标题行后面应紧跟注释行,注释行应包含至少四个二进制字符,即代码为 128 或更大的字符。这可确保文件传输应用程序的正确行为,这些应用程序检查文件开头附近的数据,以确定是否将文件内容视为文本或二进制。
https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf
我读过的一些关于 PDF 的资料说,有些程序仍然不能确信没有零字节的文件是二进制文件,但不幸的是,你不能在 PDF 注释中嵌入零。我现在找不到它们,所以我稍后会引用