PDF 和 DOCX 幻数

PDF and DOCX Magic Numbers

我读取了第一个字节来区分文件类型,但 PDF 和 DOCX 都有一个“0x50”幻数。我该如何处理这种情况?

这很奇怪,因为我看到 PDF 文件为 0x25,DOCX 文件为 0x50 ... (source 1 source 2)。 但是,当您以 ISO 8859-1 编码的文本模式打开这些文件时,您仍然可以看到 DOCX 文档以 "PK" 开头,而 PDF 文档将以“%PDF”开头。

希望对您有所帮助!雨果.

PDF 文件没有 "magic" 字节开头。如果您阅读 PDF 规范,您会发现它们必须以“%PDF”开头,但实际上许多 PDF 文件不是这样。

1) 仅仅寻找一个 %PDF header 来识别 PDF 文件是非常不可靠的,一个有效的 PDF 文件是一个你可以解析的文件(至少有一个预告片,cross-reference table 等等)。

2) 曾经有人建议 PDF 文件在 %PDF header 之前包含二进制数据,以确保它们被视为二进制文件。结果,PDF 阅读器一度开始在 %PDF header 之前接受一定数量的二进制字节(随机字节)。此类文件无法通过简单的幻数或一串幻数检测到。

PDF 似乎有多个签名。某些类型的 PDF 以这 8 个字节结尾

0A 0D 0A 30 0D 0A 0D 0A