У меня есть два 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 доступно несколько таких оболочек, но вам придется перепрыгнуть через некоторые обручи, чтобы заставить их работать.