确定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?