Document Comparison
THPDFDocComparison compare deux documents THotPDF chargés et renvoie un rapport JSON déterministe
Comparaison structurelle
cmStructural démarre à partir de chaque catalogue de document, suit les références indirectes, et assigne des chemins à partir des clés de dictionnaire triées et des index de tableaux tels que $Catalog/Pages/Kids[0]/Contents
Les valeurs scalaires et les octets de flux décodés sont hachés avec SHA-256, de sorte que les grands flux sont comparés de manière incrémentale sans matérialiser une autre copie complète
Les objets avec le même chemin mais des signatures différentes sont signalés comme objectChanged ; les signatures égales à des chemins différents sont objectMoved ; les objets restants non appariés sont objectInserted ou objectDeleted
Alignement des pages
Les pages avec un texte extractible utilisent une signature de texte sémantique pour l'alignement et replient sur une signature structurelle lorsque le texte est vide ou indisponible
Un passage de plus longue sous-séquence croissante préserve l'ordre des pages entre insertions et suppressions tout en signalant un véritable réordonnancement comme pageMoved
Les pages alignées non appariées deviennent pageChanged, pageInserted ou pageDeleted ; les métadonnées de page sont signées indépendamment de /Parent, /Contents et /Resources pour éviter le bruit d'encodage des sous-ensembles de polices
Comparaison rendue
cmRenderedImage et cmFull rendent les pages communes à la DPI configurée et scannent chaque bitmap une fois pour calculer les pixels modifiés, le rapport de pixels modifiés, l'erreur de couleur absolue moyenne, le delta de couleur maximal et un score de luminance globale de type SSIM
THPDFRenderedCompareOptions sélectionne la différence RGB ou luminance, la tolérance de couleur par pixel, la similarité minimale, le rapport maximal de pixels modifiés, la taille de tuile, la rétention de région modifiée, les budgets de pixels et les superpositions PNG facultatives
Une page est similaire uniquement lorsque les critères de rapport de pixels modifiés et de similarité passent tous deux ; les métriques sont évaluées en pleine précision et arrondies à six décimales uniquement pour le rapport JSON déterministe
Les tuiles modifiées sont réunies en régions quatre-connexes déterministes et signalées avec des bornes d'espace pixel, des compteurs de pixels modifiés et des deltas de couleur maximaux
Lorsque les cartes thermiques sont activées, les pixels modifiés sont fusionnés du jaune au rouge sur le document A et enregistrés sous des fichiers de style page-000001-diff.png dans le répertoire choisi par l'appelant
Limites et exhaustivité
THPDFStructuralCompareLimits contrôle les limites d'objets, d'arêtes, de pages, de profondeur, de différences, d'octets de flux, d'octets de valeurs et d'octets de chemins
Si la traversée atteint une limite, le rapport inclut comparisonBudget, définit comparisonComplete sur false, et ne peut pas signaler les documents comme identiques
Le travail rendu est estimé avant allocation et borné par page et par comparaison ; les échecs de rendu, d'allocation ou de superposition ajoutent renderBudget ou renderError, définissent renderComparisonComplete et comparisonComplete sur false, et échouent en fail-closed
Modes de comparaison
cmPageCountcompare les nombres de pagescmPageTextaligne et compare le texte de page extraitcmObjectCountconserve sa valeur de sélecteur existante et effectue désormais une comparaison structurelle d'objets et de pagescmRenderedImageeffectue une comparaison rendue perceptuelle avec les options par défaut ou choisies par l'appelantcmFullcombine la comparaison du nombre de pages, structurelle et renduecmStructuraleffectue une comparaison de graphiques de pages et d'objets sans rendu
Format du résultat
Le rapport inclut les compteurs sources, la télémétrie de traversée, les limites structurelles et de rendu normalisées, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical et un tableau differences
Les modes rendus renvoient également un tableau renderedPages avec le statut de page, les dimensions, les métriques, les régions modifiées et les chemins de superposition facultatifs, plus les compteurs agrégés de pages et de pixels rendus
Chaque différence peut inclure des valeurs stables pathA et pathB, des index de pages, des numéros d'objets, un type et une chaîne de détails
API associées
THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments