我读取第一个字节来区分文件类型,但 PDF 和 DOCX 都有一个“0x50”幻数。我该如何处理这种情况?
PDF 文件没有以“神奇”字节开头。如果您阅读 PDF 规范,您会发现它们必须以“%PDF”开头,但实际上许多 PDF 文件并非如此。
仅寻找 %PDF 标头来识别 PDF 文件是非常不可靠的,有效的 PDF 文件是您可以解析的文件(至少有预告片、交叉引用表等)。
曾经有人建议 PDF 文件在 %PDF 标头之前包含二进制数据,以确保它们被视为二进制文件。结果,PDF 阅读器一度开始在 %PDF 标头之前接受一定数量的二进制字节(随机字节)。此类文件无法通过简单的幻数或幻数字符串来检测。
PDF 似乎有多个签名。某些类型的 PDF 以这 8 个字节结尾
0A 0D 0A 30 0D 0A 0D 0A