Comparaison native de documents headless

HPDFHeadlessCompare compare deux documents natifs chargés via HPDFCompareHeadlessDocuments ; l'ABI callback Linux expose la même implémentation à travers hpdf_document_compare_json_v1 avec type:compare

Mode PascalMode JSONContenu comparé
hcmPageCountpagecountNombre de feuilles de l'arbre des pages
hcmPageTextpagetextNombre de pages et texte Unicode extrait
hcmObjectCountobjectcountNombre de pages et nombre d'objets xref physiquement utilisés
hcmRenderedImagerenderedimageNombre de pages, dimensions rendues et pixels Cairo natifs
hcmStructuralstructuralNombre de pages et graphes normalisés du catalog, de l'information et des objets inaccessibles
hcmFullfullNombre de pages et d'objets, graphes normalisés, texte Unicode et pixels rendus

Équivalence structurelle

La comparaison structurelle résout les références indirectes et trie les entrées de dictionnaire, normalise les noms PDF et les représentations littérales ou hexadécimales des chaînes, puis décode les filtres de stream ordinaires avant de hacher le contenu avec SHA-256

Les numéros d'objets, l'ordre de sérialisation et la compression ordinaire des streams ne changent pas l'équivalence structurelle ; les encodages d'images terminaux conservent leur filtre et leur politique de décodage, tandis que les objets inaccessibles sont comparés comme un multiset

Les dictionnaires de chiffrement et les conteneurs de stockage xref ou object-stream sont exclus de la structure sémantique ; le contenu AES R5/R6 authentifié est comparé après déchiffrement, avec la permission d'extraction appliquée

Une différence structurelle signale le chemin au niveau document $Document ; les nombres d'objets physiques restent un mode séparé et peuvent différer quand un contenu équivalent utilise des dispositions de stockage différentes

Comparaison rendue

Chaque page est réellement rendue avec le device Cairo natif au DPI sélectionné ; les pixels des images décodées sont composés sur blanc et comparés en RGB ou en luminance

Les rapports contiennent les dimensions, le nombre de pixels modifiés, le delta maximal de canal, l'erreur absolue moyenne, le ratio de pixels modifiés et la similarité ; la similarité vaut 1 - meanAbsoluteError / 255

Un pixel change quand son delta maximal de canal dépasse ColorTolerance ; une page ne passe que si les dimensions correspondent et si la similarité et le ratio de pixels modifiés atteignent les seuils configurés

Le rendering exige les mêmes polices prises en charge, codecs d'images et sémantique graphique que le rendu natif des pages ; une page non prise en charge fait échouer la comparaison au lieu de produire un rapport identique

Exécution bornée

Les options de comparaison bornent le parcours, la profondeur, les objets, les streams décodés, la préparation du texte, le stockage des résultats et les pixels rendus ; l'annulation atteint le parcours, l'extraction de texte et le rendering

Gardez les deux instances de documents vivantes et détenues exclusivement pendant une comparaison Pascal ; leur contenu d'origine et leurs options de ressources sont préservés en cas de succès, d'échec ou d'annulation

L'ABI Linux accepte les six noms de modes en minuscules ci-dessus et des membres options stricts correspondant aux limites Pascal, plus dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio et colorSpace:rgb ou luminance

Les résultats ABI sont entièrement préparés et bornés avant la publication synchrone par callback ; les appels sur le même handle et les appels concurrents en ordre inverse utilisent l'ordre de verrouillage stable existant

Champs du rapport · Comparaison de contrats sémantiques · ABI C Linux natif