Ich wollte dies (diff PDFs) vor kurzem mit folgenden Anforderungen tun:
- Weißraum, Zeilenumbrüche, Seitenumbrüche usw. ignorieren
- leicht zu erkennen, wenn sich nur ein paar Wörter geändert haben, nicht nur ganze Zeilen/Absätze.
- Farb-Diff-Ausgabe
Ich habe pdftotext, wdiff und colordiff installiert, die in verschiedenen Paketmanagern verfügbar sind. (Mit macports: sudo port install poppler wdiff colordiff
)
Dann:
wdiff <(pdftotext old.pdf -) <(pdftotext new.pdf -) | colordiff
Jetzt kann ich sehen, welche Wörter, schön eingefärbt, sich geändert haben.
Weitere Einzelheiten: http://philfreo.com/blog/how-to-view-a-color-diff-of-text-from-two-pdfs/
Variation:
Die Verwendung von dwdiff
kann etwas bessere Ergebnisse liefern.
Ich wollte auch eine HTML-Ausgabe, damit dieses winzige Skript eine einfache Webseite mit ein wenig CSS erstellt.
bash pc-script.bash old.pdf new.pdf > q.htlm
Dann öffnen Sie q.html
mit Ihrem Webbrowser.
pc-script.bash
Datei:
#!/bin/bash
OLD="$1"
NEW="$2"
cat <<EOF
<html><head><meta charset="UTF-8"/><title>Changes from $OLD to $NEW</title></head><style>
.plus { color: green; background: #E7E7E7; }
.minus { color: red; background: #D7D7D7; text-decoration: line-through; }
</style><body><h1>Changes from [<span class="minus">$OLD</span>] to [<span class="plus">$NEW</span>]</h1><pre>
EOF
dwdiff -i -A best -P \
--start-delete='<span class="minus">' --stop-delete='</span>' \
--start-insert='<span class="plus" >' --stop-insert='</span>' \
<( pdftotext -enc UTF-8 -layout "$OLD" - ) \
<( pdftotext -enc UTF-8 -layout "$NEW" - ) \
cat <<EOF
</pre></body></html>
EOF
Ein Beispiel für die Ausgabe sehen Sie hier