Проверьте, не поврежден ли PDF-файл с помощью Ruby? - PullRequest
0 голосов
/ 10 декабря 2018

В идеале я хочу избегать использования драгоценных камней, так как в настоящее время я использую: pdf-reader, combine-pdf и origami

Каждый драгоценный камень, если он встречает поврежденный pdf, иногда не отправляет исключениено остается там и ничего не делает.

Поэтому я хотел бы, чтобы вы помогли мне с кодом, чтобы увидеть, поврежден файл или нет.

Я заметил, что некоторые PDF-файлы неимеют шестнадцатеричное значение (hex 25 50 44 46 | %PDF), но я боюсь, что это не универсальное решение.

Кроме того, все эти гемы иногда выдают исключения, даже когда PDF работает, но, по крайней мере, если я уверен, что PDF работает, я 'Я буду знать, что делать.

Я мог бы начать там.Как мне прочитать шестнадцатеричное с рубином?Это единственный способ проверить PDF?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018
result = IO.binread('file.pdf', 4).unpack("H*").first
valid_pdf = result == '25504446'

Сделаем сравнение для тех первых 4 байтов

0 голосов
/ 10 декабря 2018

Я сталкивался с такой ситуацией раньше, когда проверял загрузчики grub с помощью ruby.Я обнаружил, что самым простым решением было предварительно проверить гекс, который, как я знаю, должен существовать.Что-то вроде этого:

result = `hexdump pdf_file.pdf | head -n 1`
valid_pdf = result.split(" ")[1..2] == ["2550", "4446"]

Со временем вы можете расширить свой чек, чтобы заблаговременно искать другие плохие PDF-файлы.

Один хороший способ обойти блокировки на ваших зависаниях PDF, - использовать функциональность Timeout в ruby ​​ Таким образом, вы можете правильно выйти и не выполнять принудительное завершение работы вашей программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...