J'ai voulu le faire (diff PDF) récemment avec ces exigences :
- ignorer les espaces, les sauts de ligne, les sauts de page, etc.
- voir facilement quand quelques mots ont changé, pas seulement des lignes/paragraphes entiers.
- sortie de diff couleur
J'ai installé pdftotext, wdiff, et colordiff, disponibles dans différents gestionnaires de paquets. (Avec macports : sudo port install poppler wdiff colordiff
)
Puis :
wdiff <(pdftotext old.pdf -) <(pdftotext new.pdf -) | colordiff
Maintenant je peux voir quels mots, joliment colorés, ont changé.
Plus de détails : http://philfreo.com/blog/how-to-view-a-color-diff-of-text-from-two-pdfs/
Variation :
L'utilisation de dwdiff
peut produire des résultats légèrement meilleurs.
Je voulais aussi une sortie HTML, donc ce petit script fait une page web de base avec un peu de CSS. Ouvrez ensuite bash pc-script.bash old.pdf new.pdf > q.htlm
avec votre navigateur web. Fichier
q.html
:
#!/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
Un exemple de sortie peut être vu ici