Как вы можете найти проблему с программно созданным PDF файлом?

Моя группа использует библиотеку itext-sharp и С#/.NET для создания настраиваемых динамических PDF файлов. По большей части этот процесс отлично работает для наших нужд. Одной из проблем, с которыми мы можем столкнуться при разработке/тестировании, являются проблемы с макетом, которые могут привести к тому, что PDF файл не будет корректно открываться и отображаться в Adobe Reader, особенно. более новые версии Acrobat/Reader.

Документ откроет дисплей правильно для первых X-страниц. Но если есть ошибка, остальные страницы в документе не будут отображаться.

Как уже упоминалось, мы обычно можем отслеживать эту проблему до проблемы с типом макета с нашим кодом С#/iText. В итоге мы обнаруживаем ошибку, используя метод угадывания и проверки, или делимся и побеждаем. Он работает, но он не чувствует себя как лучший способ решить эти проблемы.

Мне было интересно, есть ли какие-либо инструменты, которые могли бы ускорить процесс проверки PDF-документа и могли бы указать на ошибки в документе?

Ответ 1

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

Acrobat имеет инструмент (Advanced > Preflight > PDF Analysis > Сообщить о синтаксисе PDF), который позволяет сканировать PDF для любых проблем с синтаксисом, но этот инструмент не может быть доступен программно.

У Appligent есть инструмент под названием pdfHarmmony, который работает от Adobe PDF Library, и к нему можно получить доступ программно, но это очень дорого (США $2500 +). Этот вариант даст вам наилучшие результаты, если вы можете себе это позволить.

Есть еще один вариант, который 3-Heights PDF Analysis and Repair, я не знаю, каково это качество, но аналогично дорогой.

Этот инструмент PDF Validator на SourceForge может вас заинтересовать, однако он анализирует структуру документов, а не сам контент, поэтому поврежденные изображения или потоки контента не будут подняты.

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

Ответ 2

"Самый дешевый" (и в то же время вполне надежный!) способ - использовать Ghostscript. Пусть Ghostscript интерпретирует PDF и видит, какое возвращаемое значение оно дает. Если у него нет проблем, файл PDF должен быть в порядке. В Windows:

 gswin32c.exe ^
       -o nul
       -sDEVICE=nullpage ^
        d:/path/to/file.pdf

Устройство вывода nullpage не создаст никакого нового файла. Но Ghostscript будет указывать на stdout/stderr, если он встретит ошибку. Проверьте содержимое переменной %errorlevel% псевдо-среды. - В Linux:

 gs \
       -o /dev/null \
       -sDEVICE=nullpage \
        /path/to/file.pdf

(Проверить возвращаемое значение с помощью echo $? для значения 0 для "без проблем".)

В случае ошибок Ghostscript выдает некоторую информацию, которая может быть вам полезна. В любом случае, по крайней мере, вы можете положительно идентифицировать те файлы, у которых есть проблемы НЕТ: если Ghostscript может их обрабатывать, Acrobat (Reader) не будет иметь проблем с их отображением.