Déterminer si un octet est un fichier pdf

Est-il possible de vérifier si un octet [] est un fichier pdf sans ouverture?

J’ai du code pour afficher une liste d’octets [] sous forme de vignettes pdf. Auparavant, je savais que tous les octets [] étaient des fichiers PDF, car nous avons filtré la servlet pour ne les renvoyer que. Maintenant, l’exigence a changé et je dois ramener tous les types de fichiers. Existe-t-il un moyen de vérifier ce qu’est l’octet [], ou plus précisément de déterminer s’il ne l’est pas, un pdf?

Vérifiez les 4 premiers octets du tableau.

S’il s’agit de 0x25 0x50 0x44 0x46 il s’agit probablement d’un fichier PDF.

Les quatre premiers octets doivent être: 0x25 0x50 0x44 0x46 (au format hexadécimal, en %PDF ASCII en ASCII). “Chiffres magiques” pour d’autres formats que vous pouvez trouver ici

Pour autant que je sache, tous les PDF commencent par %PDF , vous pouvez donc vérifier les premiers octets par rapport à cette chaîne.

Bien que la réponse marquée et les autres réponses soient correctes, elles ne réussiront pas 100% du temps. Le problème est que la spécification PDF indique que% PDF-1.x ne doit figurer que dans les 1024 premiers octets et non dans les premiers 4. Certains programmes appendont des informations avant% PDF tout en restant valables.

Je recommanderais de consulter la réponse à la question suivante: « Comment détecter si un fichier est au format PDF ou TIFF?