Aller au contenu

Quelle différence entre pdfl compare et pdfl pixelcompare ?

Deux commandes prennent deux PDF et disent ce qui a changé. Cela ressemble à un doublon jusqu’à la première fois où elles divergent — et l’on découvre alors qu’elles ne répondaient pas à la même question.

pdfl compare demande ce que dit le document. pdfl pixelcompare demande à quoi ressemble le document.

Un fichier peut passer l’un et échouer à l’autre, dans les deux sens.

Il lit le texte, la structure et les métadonnées :

Terminal window
pdfl compare valide_v1.pdf nouveau_v2.pdf

Ce qui mérite d’être connu, c’est la façon dont il met les pages en correspondance : par le contenu, pas par le numéro. Insérez une page au milieu d’un contrat et une comparaison naïve signale toutes les pages suivantes comme modifiées ; celle-ci remarque l’insertion et continue de comparer ce qui se correspond. Cela tient sur des documents de plus de mille pages.

Chaque paire alignée reçoit un score de similarité et un échantillon des lignes qui ont bougé, - pour supprimé et + pour ajouté :

page 4 → 4: similarity 97.8% | -original title | +revised title

Une métadonnée modifiée est un avertissement. Un texte modifié est une erreur quand il passe sous le seuil que vous fixez, et un avertissement au-dessus.

Terminal window
# Ignore la casse, les espaces et les dates — utile quand la date
# d'émission est régénérée à chaque export et n'est pas l'objet de la revue
pdfl compare valide_v1.pdf nouveau_v2.pdf --normalize --ignore-dates
# Tolère jusqu'à 1 % d'écart, et produit quelque chose de lisible
pdfl compare v1.pdf v2.pdf --similarity-threshold 99 \
--output html --output-file diff.html

Il rend les deux fichiers et compare les pages comme des images :

Terminal window
pdfl pixelcompare valide.pdf retirage.pdf

Un constat par page modifiée, avec la part qui diffère et le nombre d’endroits distincts :

page 7: 0.51% of the pixels differ, in 29 area(s)

Il compense d’abord un décalage global, car un fichier réexporté depuis la même source retombe souvent à un ou deux pixels près, et sans cela le bord de chaque lettre compterait comme une différence :

page 3: 2.10% of the pixels differ, in 44 area(s) (aligned by 2, -1 px)

Et il peut écrire un endroit où regarder :

Terminal window
pdfl pixelcompare valide.pdf retirage.pdf --viewer diff/

Ce dossier contient les pages, les différences et un index.html — pas de serveur, rien à installer. Le rouge est l’encre disparue, le vert l’encre nouvelle, le bleu la même densité dans une autre couleur.

Le texte est identique et le fichier est faux. Un logo déplacé de deux millimètres. Un filet maigre disparu. Un ton direct remplacé par sa composition en CMJN. compare signale une correspondance parfaite dans les trois cas, car pas un caractère n’a bougé. pixelcompare attrape les trois.

Le fichier semble identique et le texte est faux. Le titre dans les métadonnées a été remplacé, ou un champ auteur réécrit. Rien ne bouge d’un pixel sur la page, donc pixelcompare voit deux documents identiques. compare signale le changement.

Aucun des deux ne contient l’autre. C’est tout l’enjeu.

Un contrat revient du juridique. Vous devez savoir ce que dit la rédaction maintenant par rapport à avant. La mise en page aura été refaite et cela vous est égal.

Terminal window
pdfl compare contrat_v3.pdf contrat_v4.pdf --ignore-dates \
--output html --output-file revue.html

Un retirage est arrivé du fournisseur. Rien ne doit avoir l’air différent de l’épreuve validée. Que le texte soit identique octet pour octet n’est pas la question — ce qui part sur le papier l’est.

Terminal window
pdfl pixelcompare valide.pdf retirage.pdf --viewer diff/

Le même document, exporté par un autre outil. Un fournisseur a changé de logiciel. Les mots doivent survivre intacts, et l’apparence risque de dériver un peu. Il faut les deux, et ils vérifient des promesses différentes :

Terminal window
pdfl compare export_ancien.pdf export_nouveau.pdf --normalize
pdfl pixelcompare export_ancien.pdf export_nouveau.pdf --max-diff 0.1 --viewer diff/

Une notice ou une étiquette réglementée. La mention d’avertissement est exigée par la loi et la mise en page a été validée par quelqu’un qui a signé. Les deux engagent, donc les deux sont vérifiés — et le dossier de la visionneuse est ce que vous joignez à la validation.

Terminal window
pdfl compare valide.pdf fichier_presse.pdf
pdfl pixelcompare valide.pdf fichier_presse.pdf --viewer preuve/

Chaque commande sort avec un code, un script décide donc sans rien lire. pixelcompare utilise 0 quand aucune page ne dépasse la tolérance, 2 quand l’une la dépasse, 10 quand un fichier n’a pas pu être lu ; compare suit la convention de toute commande de validation — 0 réussi, 1 avertissements, 2 erreurs, 10 illisible.

#!/bin/sh
# Les deux promesses, un seul verrou : les mots et l'apparence.
set -e
pdfl compare valide.pdf candidat.pdf --output-file texte-diff.json || {
echo "la rédaction a changé — voir texte-diff.json"
exit 1
}
pdfl pixelcompare valide.pdf candidat.pdf --max-diff 0.05 --viewer diff/ || {
echo "l'apparence ne correspond pas — ouvrir diff/index.html"
exit 1
}
echo "mêmes mots, même apparence"
La question que vous posez La commande
La rédaction a-t-elle changé ? pdfl compare
Les métadonnées ont-elles changé ? pdfl compare
Une page a-t-elle été insérée ou retirée ? pdfl compare
Quelque chose a-t-il bougé, disparu ou changé de couleur ? pdfl pixelcompare
Est-ce que cela s’imprime toujours pareil ? pdfl pixelcompare
Est-ce le fichier qui a été validé ? les deux

Le chapitre du CLI documente chaque option des deux, et les recettes les placent dans des flux complets. Il y a aussi ici un article sur la comparaison pixel par pixel et ce que coûte un mauvais fichier une fois sur presse.

DigitalOceanMerci à DigitalOcean d’héberger ce site.