Как вы отлаживаете файлы PDF? - PullRequest
24 голосов
/ 24 декабря 2010

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

Есть ли способ отладки PDF? Например. видите детальную структуру?

Ответы [ 7 ]

12 голосов
/ 27 декабря 2010

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

На ум приходит RUPS for iText (но я предвзят).Я не знаю, что есть эквивалент iTextSharp.Это графический интерфейс с древовидным представлением (что есть у ВСЕХ этих приложений) объектов PDF.

Некоторые позволят вам редактировать PDF в этом дереве, но не так много.Я полагаю, что PDF CanOpener от Windjack (вместе с некоторыми другими изящными функциями, которые можно ожидать от коммерческого плагина Acrobat).

И в крайнем случае,работает ... но не пытайтесь ничего изменить.PDF - это двоичный формат: важны смещения байтов.Если ваш текстовый редактор изменит \ n на \ r \ n (или попытается интерпретировать его как UTF-8, или, или, или), ваш PDF будет ужасно сломан.Не делайте этого.

Я заканчиваю тем, что много занимаюсь поиском заданного номера объекта для поиска косвенных ссылок.Всегда сложно найти ссылку на одну цифру, потому что в конце каждого десятого объекта отображается «4 объекта» (14, 24, 34, 1234 и т. Д.).Поиск по регулярным выражениям, который ищет «начало строки-4 obj-end of line», был бы полезен, но я обычно использую блокнот, так что это не так (и я в любом случае не большой парень по регулярным выражениям).

PS : Даже с изящным плагином Acrobat (не открывашка, доморощенный из далекого прошлого) мне все еще нужно время от времени открывать текстовый редактор.

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

PPS : Acrobat также имеет элегантный pdf-синтаксиспроверьте "в его продвинутых-> предполетных профилях.Здесь также проверяются различные стандарты PDF / * (PDF / X, PDF / A-1 [a и b] и т. Д.), Доступность и т. Д.Они неоценимы, когда вы пытаетесь быть послушным.Не совсем то средство отладки, о котором вы просили, но тем не менее, очень удобное.

PPPS : «разложить» два файла PDF практически невозможно, без написания специального инструмента для этогодля тебя.Я написал что-то, что перечислило все страницы (с размерами) и поля (с типами, флагами и т. Д.) в предсказуемом порядке и выгрузил его в текстовый файл, чтобы я мог различать файлы ... но напрямуюРазбрасывать два PDF бессмысленно.Существует слишком много способов различения «идентичных» файлов (порядок объектов, порядок словарных ключей, уровни сжатия и т. Д.).

6 голосов
/ 28 декабря 2010

Ну, я хотел отладить некоторые PDF-файлы, которые я генерировал, используя pdfLaTeX на днях, и я обнаружил, что Adobe [Acrobat] Reader не очень помог, так как немного некорректные PDF-файлы, которые я создавал, открывались, как будто нет проблем, они только не смогли закрыть . Это сделало цикл TeX / View / Edit немного болезненным, поскольку мне пришлось бы прекратить весь процесс Reader, прежде чем я смогу снова TeX.

Я добился более благоприятных результатов, используя Ghostscript. В моем случае это было GSview , так как я использовал Windows; если бы я использовал Linux, я бы использовал gv . Мало того, что это не помешало мне повторно TeXing файл (даже когда он все еще был открыт), он был достаточно хорош, чтобы выдавать почти непонятные сообщения об ошибках, а не притворяться, что все в порядке. Это позволило мне, немного прищурившись, увидеть, что я испортил в своем коде PDF, и, наконец, создать пример, приведенный в этом моем ответе tex.SE

Было бы неплохо, если бы я мог придумать, как сказать Ghostscript включить немного больше подробностей в сообщение об ошибке (ну, наверное, мог бы, если бы я достаточно долго смотрел на правую часть руководства) на самом деле), но не было того, что трудно понять, что я испортил, сравнив PDF с сообщением об ошибке Ghostscript и справка Adobe PDF . (Я ссылаюсь на страницу архива, потому что ссылки в формате PDF там были полностью созданы Adobe, и имеют гораздо более высокое типографское качество, а также значительно меньший размер, чем стандарт ISO для PDF, который находится на главной странице.)

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

Итак, вкратце:

  1. Не используйте Adobe [Acrobat] Reader (во всяком случае, пока вы не считаете, что ваш PDF-файл хорош).

  2. Используйте Ghostscript (обычно через GSview или gv ).

  3. Старайтесь указывать программному обеспечению воздерживаться от сжатия потоков страниц.

  4. Используйте текстовый редактор для просмотра PDF-файла (желательно установить режим «PostScript», так как синтаксис тесно связан).

  5. Использовать PDF-ссылку .

5 голосов
/ 24 декабря 2010

Вы можете увидеть структуру PDF, используя такие инструменты, как CanOpener, PDFedit или Acrobat (я написал статью в блоге на эту тему на http://www.jpedal.org/PDFblog/2010/09/useful-pdf-tools-pdfedit/)

4 голосов
/ 24 декабря 2010

Как насчет http://blog.didierstevens.com/programs/pdf-tools/ или http://podofo.sourceforge.net/about.html

Список инструментов и библиотек PDF - http://en.wikipedia.org/wiki/List_of_PDF_software Там вы можете найти другие инструменты, которые соответствуют вашим потребностям.

1 голос
/ 04 ноября 2018

Это то, что я обычно делаю в Linux:

  • Установите qpdf пакет и запустите qpdf --qdf --object-streams=disable orig.pdf decoded.pdf.Теперь вы можете открыть decoded.pdf в текстовом редакторе и посмотреть исходный pdf-файл.

  • Также я установил PDFedit в Linux, в котором есть программа с графическим интерфейсом, которая позволяет вам просматриватьвся структура pdf, не выходя из графического интерфейса.

1 голос
/ 03 сентября 2014

другим инструментом будет pdfstreamdumper
https://github.com/dzzie/pdfstreamdumper

его на самом деле довольно интуитивно понятно
, созданный для анализа кода javascript / as3 и т. Д., Встроил немало вещей
(hexviewer/ refactor (deobfucators) и т. д.)

0 голосов
/ 24 декабря 2010

Просто откройте его в каком-нибудь текстовом редакторе. PDF на самом деле является файлом ASCII (и он может содержать встроенные двоичные данные).

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