我读取第一个字节来区分文件类型,但PDF和DOCX都有一个“0x50”幻数。我该如何处理这种情况?
答案 0 :(得分:2)
这很奇怪,因为我看到PDF文件为0x25,DOCX文件为0x50 ......(source 1 source 2)。 但是,当您以文本模式打开这些文件时,在ISO 8859-1编码中,您可以看到DOCX文档以" PK"而PDF文档将以"%PDF"。
开头希望它有所帮助!雨果。
答案 1 :(得分:2)
PDF文件没有"魔法"他们开始的字节。如果你阅读PDF规范,你会发现它们必须以"%PDF"开头,但实际上很多PDF文件都没有。
1)只是查找%PDF标题以识别PDF文件是非常不可靠的,有效的PDF文件是您可以解析的文件(至少有一个预告片,交叉引用表等)。
2)有人建议,一旦PDF文件在%PDF标题之前包含二进制数据,以确保它们被视为二进制文件。因此,PDF阅读器在%PDF标题之前开始接受一定数量的二进制字节(随机字节)。这些文件无法通过简单的幻数或魔术数字串来检测。
答案 2 :(得分:0)
似乎PDF具有多个签名。某些类型的PDF以这8个字节结尾
0A 0D 0A 30 0D 0A 0D 0A