Native headless document comparison

HPDFHeadlessCompare vergelijkt twee geladen native documenten via HPDFCompareHeadlessDocuments; de Linux callback ABI legt dezelfde implementatie bloot via hpdf_document_compare_json_v1 met type:compare

Pascal modeJSON modeVergeleken content
hcmPageCountpagecountPage-tree leaf-aantallen
hcmPageTextpagetextPagin aantallen en geëxtraheerde Unicode-tekst
hcmObjectCountobjectcountPagin aantallen en fysieke in-use cross-reference-objectaantallen
hcmRenderedImagerenderedimagePagin aantallen, gerenderde dimensies en native Cairo-pixels
hcmStructuralstructuralPagin aantallen en genormaliseerde catalog-, information- en onbereikbare objectgrafen
hcmFullfullPagina- en objectaantallen, genormaliseerde grafen, Unicode-tekst en gerenderde pixels

Structurele equivalentie

Structurele vergelijking lost indirecte referenties op en sorteert dictionary-entries, normaliseert PDF-namen en letterlijke of hexadecimale string-representaties en decodeert gewone stream-filters vóór het hashen van content met SHA-256

Objectnummers, serialisatievolgorde en gewone stream-compressie veranderen structurele equivalentie niet; terminal image-encodings behouden diens filter- en decode-policy, terwijl onbereikbare objecten als multiset worden vergeleken

Encryption-dictionaries en cross-reference- of object-stream-opslagcontainers vallen buiten de semantische structuur; geauthenticeerde AES R5/R6-content wordt na decryptie vergeleken, met extractiepermissie gehandhaafd

Een structureel verschil rapporteert het documentniveau-pad $Document; fysieke objectaantallen blijven een aparte modus en kunnen afwijken wanneer equivalente content andere opslaglayouts gebruikt

Gerenderde vergelijking

Elke pagina wordt echt gerenderd met de native Cairo-device op de gekozen DPI; gedecodeerde image-pixels worden gecomposeerd op wit en vergeleken in RGB of luminance

Rapporten bevatten dimensies, gewijzigde pixelaantallen, maximale kanaaldelta, gemiddelde absolute fout, gewijzigde pixelratio en similariteit; similariteit is 1 - meanAbsoluteError / 255

Een pixel verandert wanneer diens maximale kanaaldelta ColorTolerance overschrijdt; een pagina slaagt alleen wanneer dimensies matchen en zowel similariteit als gewijzigde pixelratio de geconfigureerde drempels halen

Rendering vraagt dezelfde ondersteunde fonts, image-codecs en graphics-semantics als native pagina-rendering; een niet-ondersteunde pagina laat de vergelijking falen in plaats van een identiek rapport te produceren

Begrensde executie

Comparison options begrenzen traversal, diepte, objecten, gedecodeerde streams, tekstvoorbereiding, resultaatopslag en gerenderde pixels; annulering bereikt traversal, tekstextractie en rendering

Houd beide documentinstanties in leven en exclusief in eigendom tijdens een Pascal-vergelijking; diens originele content- en resource-options worden behouden bij succes, falen en annulering

De Linux ABI accepteert de zes lowercase-modusnamen hierboven en strikte options-leden matchend met de Pascal-limieten, plus dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio en colorSpace:rgb of luminance

ABI-resultaten zijn volledig voorbereid en begrensd vóór synchrone callback-publicatie; same-handle-aanroepen en concurrende aanroepen in omgekeerde volgorde gebruiken de bestaande stabiele lock-ordering

Rapportvelden · Semantische contractvergelijking · Native Linux C ABI