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 mode | JSON mode | Vergeleken content |
|---|---|---|
| hcmPageCount | pagecount | Page-tree leaf-aantallen |
| hcmPageText | pagetext | Pagin aantallen en geëxtraheerde Unicode-tekst |
| hcmObjectCount | objectcount | Pagin aantallen en fysieke in-use cross-reference-objectaantallen |
| hcmRenderedImage | renderedimage | Pagin aantallen, gerenderde dimensies en native Cairo-pixels |
| hcmStructural | structural | Pagin aantallen en genormaliseerde catalog-, information- en onbereikbare objectgrafen |
| hcmFull | full | Pagina- 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