У меня есть два PDF - файлы , которые выглядят одинаково при просмотре или печати, которые diff
говорит являются бинарными и отличаются. Как я могу узнать, в чем различия?
Я предпочитаю ответ, который будет работать на Mac OS X или OpenSUSE.
У меня есть два PDF - файлы , которые выглядят одинаково при просмотре или печати, которые diff
говорит являются бинарными и отличаются. Как я могу узнать, в чем различия?
Я предпочитаю ответ, который будет работать на Mac OS X или OpenSUSE.
Для начала я бы попробовал strings
в этих файлах и направил их через grep "rdf"
чтобы посмотреть, что получится.
strings x.pdf | grep "rdf"
В оболочках, которые поддерживают Process Substutition (см. Q317819), diff
может быть предоставлен вывод любой команды, которая генерирует текстовое представление - например, exiftool
:
diff -u <(exiftool -a -v one.pdf) <(exiftool -a -v two.pdf)
Предложение Стефана о strings
также генерирует текстовое представление и может использоваться таким же образом:
diff -u <(strings one.pdf) <(strings two.pdf)
Выходные данные из exiftool
или strings
относительно читабельны, но не представляют весь файл. exiftool
показывает только метаданные, а strings
только фрагменты, которые составляют 4 или более байтов действительного текста ASCII; различия, которые не распознаются как метаданные или как строки ASCII, не будут найдены. Нечитаемое, но полное текстовое представление может быть сделано с помощью od
:
diff -u <(od -vcw one.pdf) <(od -vcw two.pdf)
(Если od
не доступно, еще менее читаемый , но до сих пор полный текст представление может быть сделано с hexdump
или hexcat
в MacPorts, реализация GNU из od
моей быть установлена как god
Не все реализации поддерживают одинаковые параметры.)
Очевидный наилучший доступный метод, позволяющий увидеть все различия и понять значение как можно большего количества различий, заключается в использовании каждого из них в одних и тех же двух файлах.
Я считаю, что каждая современная настольная ОС, кроме Windows, имеет оболочку, которая поддерживает процесс подстановки, установленный по умолчанию; для Windows доступно несколько таких оболочек, но вам придется перепрыгнуть через некоторые обручи, чтобы заставить их работать.