Окрім інструментів на основі графічного інтерфейсу, згаданих в інших відповідях, є кілька інструментів командного рядка, які можуть перетворити вихідний вихідний код PDF в інше подання, що дозволяє перевірити (тепер змінений файл) за допомогою текстового редактора. Усі наведені нижче інструменти працюють на Linux, Mac OS X, інших системах Unix або Windows.
qpdf
(мій улюблений)
Використовуйте qpdf для стиснення (більшості) потоків об’єктів, а також для розбору ObjStm
об’єктів на окремі непрямі об’єкти:
qpdf --qdf --object-streams=disable orig.pdf uncompressed-qpdf.pdf
qpdf
описує себе як інструмент, який здійснює "структурні перетворення, що зберігають вміст, у файлах PDF" .
Потім просто відкрийте + огляньте uncompressed-qpdf.pdf
файл у вашому улюбленому текстовому редакторі. Більшість раніше стиснених (а отже, і двійкових) байтів тепер буде простим текстом.
mutool
Існує також інструмент mutool
командного рядка, який постачається в комплекті з засобом перегляду PDF MuPDF (який є спорідненим продуктом Ghostscript, виготовленим тією ж компанією Artifex ). Наступна команда також розпаковує потоки та полегшує їх перевірку за допомогою текстового редактора:
mutool clean -d orig.pdf uncompressed-mutool.pdf
podofouncompress
PoDoFo - це бібліотека FreeSoftware / OpenSource для роботи з форматом PDF, яка включає кілька інструментів командного рядка, зокремаpodofouncompress
. Використовуйте його таким чином, щоб розпакувати потоки PDF:
podofouncompress orig.pdf uncompressed-podofo.pdf
peepdf.py
PeePDF - це інструмент на основі Python, який допомагає вам досліджувати файли PDF. Його початкова мета полягала в дослідженні та розтині шкідливих програм на основі PDF, але я вважаю корисним також дослідити структуру повністю доброякісних файлів PDF.
Його можна використовувати в інтерактивному режимі для "перегляду" об'єктів та потоків, що містяться в PDF.
Я не буду наводити тут приклад використання, а лише посилання на його документацію:
pdfid.py
і pdf-parser.py
pdfid.py
і pdf-parser.py
є двома інструментами PDF Дід’є Стівенса, написаними на Python.
Їх передумови також допомагають досліджувати шкідливі PDF-файли, але я також вважаю корисним проаналізувати структуру та вміст доброякісних PDF-файлів.
Ось приклад того, як я витягнув би стислий потік об’єкта PDF №. 5 у файл * .dump:
pdf-parser.py -o 5 -f -d obj5.dump my.pdf
Заключні примітки
Зверніть увагу, що деякі двійкові частини всередині PDF не обов'язково не стискаються (або декодуються в зручний для читання код ASCII), оскільки вони вбудовані та використовуються у своєму власному форматі всередині PDF-файлів. Такими частинами PDF є зображення JPEG, шрифти або кольорові профілі ICC.
Якщо порівняти наведені вище інструменти та наведені приклади командного рядка, ви виявите, що НЕ всі вони дають однакові результати. Зусилля порівняння їх для їх відмінностей саме по собі може допомогти вам краще зрозуміти природу синтаксису PDF та формату файлу.