确定byte 是否是pdf文件

是否有任何方法可以检查byte []是否为pdf而不打开?

我有一些代码来显示byte []列表作为pdf缩略图。 我之前知道所有byte []都是pdf,因为我们过滤了servlet只返回这些。 现在需求已经改变,我需要恢复所有文件类型。 有没有办法检查字节[]是什么,或更具体地确定它是不是,pdf?

检查数组的前4个字节。

如果那些是0x25 0x50 0x44 0x46那么它很可能是一个PDF文件。

前四个字节应为: 0x25 0x50 0x44 0x46 (hex格式,ASCII格式为%PDF )。 您可以在此处找到其他格式的“幻数”

据我所知,所有PDF都以%PDF开头,所以你可以检查这个字符串的第一个字节。

虽然明确的答案和其他答案是正确的,但它们在100%的时间内都不会成功。 问题是PDF规范说%PDF-1.x只需要在前1024个字节而不是前4个。有些程序将在%PDF之前添加信息并且仍然有效。

我建议看看以下Stack Overflow问题的答案: 如何检测文件是PDF还是TIFF?