Shadowland прав, быстрая проверка сэкономит много боли позже. Если бы я получал десять центов за каждый раз, когда клиент говорил: «Я использовал PDF. Я взял свой файл Word, изменил имя на« pdf »и отправил его по почте!» Мне бы хватило на чашку кофе.
Вот быстрая проверка, если вы не хотите использовать полноценный гем обработки PDF во время загрузки. Согласно спецификации Adobe Adobe , каждый файл PDF должен начинаться с
%PDF−<version-number>
Например, файл PDF версии 1.7 начинается с
%PDF−1.7
Без чрезмерного проектирования решения, ориентированного на будущее (что произойдет, когда мы достигнем спецификации PDF версии 10.0?), Я попробую прочитать начало файла и убедиться, что он имеет форму ...
%PDF-<digit>.<digit>
Или, чтобы написать это в Ruby (используя блоки с ошибками и регулярные выражения,) ...
contents = File.open('Full_path_to_my_file', 'r') { |f| f.read(8)}
is_pdf = (contents =~ /\%PDF-\d\.\d/) == 0