Wie finde ich die Unterschiede in visuell identischen PDF-Dateien?

816
ShadSterling

Ich habe zwei PDF-Dateien, die gleich aussehen, wenn sie angezeigt oder gedruckt diffwerden. Wie kann ich die Unterschiede herausfinden?

Ich bevorzuge eine Antwort, die unter Mac OS X oder unter OpenSUSE ausgeführt werden kann.

1
Da Sie "diff" erwähnen, nehme ich an, dass Sie eine Art Unix verwenden? terdon vor 11 Jahren 0
Mac OS X mit MacPorts. Ich fand den Teil "exiftool" in meiner Antwort, während ich die Frage verfasste, dachte, ich könnte dieses Detail in meine Antwort aufnehmen, und bekam dann die Nachricht, dass ich meine eigene Frage 8 Stunden lang nicht beantworten kann. ShadSterling vor 11 Jahren 0
Ich kann jede Antwort verwenden, die unter Mac OS X oder OpenSUSE ausgeführt werden kann, aber im Sinne der Beantwortung von Antworten, die für alle nützlich sind, würde ich gerne Antworten erwarten, die nur auf anderen Systemen funktionieren. ShadSterling vor 11 Jahren 0
Bei dieser Frage geht es offenbar um sichtbare Unterschiede, nicht um unsichtbare Unterschiede, und es bedarf einer plattformspezifischen Lösung. ShadSterling vor 11 Jahren 0

2 Antworten auf die Frage

0
Stefan Ludwig

Für den Anfang würde ich stringsdiese Dateien anprobieren und durchblättern, um grep "rdf"zu sehen, was dabei herauskommt.

strings x.pdf | grep "rdf" 
Bitte erläutern Sie, warum Sie dies tun würden. Die Antwort, die Sie gegeben haben, ist nur für Insider. Check out [Antwort]. user 99572 is fine vor 11 Jahren 0
Ich bin mir nicht sicher, ob ich folge. @Polyergic fragte nach Wegen, um Unterschiede zu finden. Wenn es sich um ein Erstellungs- oder Änderungsdatum handelt, das in die PDF-Datei (rdf-Metadaten) eingebettet ist, werden die obigen Befehle dies finden. Ohne mehr Kontext darüber, was wir herausfinden müssen, ist es schwierig, eine genauere Antwort zu geben. Und ich gehe davon aus, dass die Verwendung von Acrobat nicht in Frage kommt. Stefan Ludwig vor 11 Jahren 0
"Strings" findet keine Unterschiede, es extrahiert Strings. Ich habe dies auf den Punkt gebracht, weil es nützlich ist, aber anscheinend ist mein Ruf zu gering, um nützliche, aber unvollständige Antworten auf meine eigene Frage zu erkennen. ShadSterling vor 11 Jahren 0
Es wäre schön zu wissen, dass dies mit Acrobat möglich ist, aber ich könnte diese Antwort nicht nutzen. ShadSterling vor 11 Jahren 0
0
ShadSterling

In Shells, die Process Substutition unterstützen (zu sehen in Q317819 ), diffkann die Ausgabe eines beliebigen Befehls ausgegeben werden, der eine Textdarstellung generiert - zum Beispiel exiftool:

diff -u <(exiftool -a -v one.pdf) <(exiftool -a -v two.pdf) 

Stefan 's Vorschlag von stringsgeneriert auch eine Textdarstellung und kann auf dieselbe Weise verwendet werden:

diff -u <(strings one.pdf) <(strings two.pdf) 

Die Ausgabe von exiftooloder stringsist relativ lesbar, repräsentiert jedoch nicht die gesamte Datei. exiftoolZeigt nur Metadaten und stringsnur Ausschnitte an, die aus 4 oder mehr Bytes gültigen ASCII-Texts bestehen. Unterschiede, die weder als Metadaten noch als ASCII-Zeichenketten erkannt werden, werden nicht gefunden. Eine nicht lesbare, aber vollständige Textdarstellung kann mit odfolgenden Elementen erstellt werden :

diff -u <(od -vcw one.pdf) <(od -vcw two.pdf) 

(Wenn odnicht verfügbar, kann mit hexdumpoder eine noch weniger lesbare, aber vollständige Textdarstellung erstellt werden hexcat; in MacPorts kann die GNU-Implementierung von odmy als installiert werden god. Nicht alle Implementierungen unterstützen die gleichen Optionen.)

Die offensichtlich beste verfügbare Methode, um alle Unterschiede und die Bedeutung so vieler Unterschiede wie möglich zu sehen, besteht darin, diese jeweils in denselben beiden Dateien zu verwenden.

Ich glaube, dass jedes moderne Desktop-Betriebssystem außer Windows über eine Shell verfügt, die die Prozessersetzung standardmäßig unterstützt. Es gibt mehrere solcher Shells für Windows, aber Sie müssen durch einige Reifen springen, um sie zum Laufen zu bringen.