Определите, является ли байт [] файлом PDF - PullRequest
24 голосов
/ 31 мая 2011

Есть ли способ проверить, является ли байт [] PDF-файлом без открытия?

У меня есть некоторый код для отображения списка байтов [] в виде миниатюр PDF.Ранее я знал, что все байты [] были pdf, потому что мы фильтровали сервлет, чтобы только возвращать их.Теперь требование изменилось, и мне нужно вернуть все типы файлов обратно.Есть ли способ проверить, что байт [], или, более конкретно, определить, если это не PDF-файл?

Ответы [ 4 ]

47 голосов
/ 31 мая 2011

Проверьте первые 4 байта массива.

Если это 0x25 0x50 0x44 0x46, то, скорее всего, это файл PDF.

17 голосов
/ 31 мая 2011

Первые четыре байта должны быть: 0x25 0x50 0x44 0x46 (в шестнадцатеричном формате, в ASCII это %PDF). «Магические числа» для других форматов вы можете найти здесь

10 голосов
/ 31 мая 2011

Насколько мне известно, все PDF начинаются с %PDF, поэтому вы можете проверить первые байты этой строки.

4 голосов
/ 11 марта 2016

Пока помеченный ответ и другие ответы верны, они не будут успешными в 100% случаев. Проблема заключается в том, что спецификация PDF гласит, что% PDF-1.x должен быть только в первых 1024 байтах, а не в первых 4. Некоторые программы будут добавлять информацию до% PDF и по-прежнему будут действительными.

Я бы порекомендовал посмотреть ответ на следующий вопрос переполнения стека: Как определить, является ли файл PDF или TIFF?

...