Native jämförelse av headless-dokument
HPDFHeadlessCompare jämför två inlästa nativa dokument via HPDFCompareHeadlessDocuments; Linux-callback-ABI:n exponerar samma implementation genom hpdf_document_compare_json_v1 med type:compare
| Pascal-läge | JSON-läge | Jämfört innehåll |
|---|---|---|
| hcmPageCount | pagecount | Antal löv i sidträdet |
| hcmPageText | pagetext | Sidantal och utdragen Unicode-text |
| hcmObjectCount | objectcount | Sidantal och fysiskt antal använda objekt i korsreferenstabellen |
| hcmRenderedImage | renderedimage | Sidantal, renderade dimensioner och nativa Cairo-pixlar |
| hcmStructural | structural | Sidantal samt normaliserade grafer för katalog, information och onåbara objekt |
| hcmFull | full | Sid- och objektantal, normaliserade grafer, Unicode-text och renderade pixlar |
Strukturell ekvivalens
Den strukturella jämförelsen löser upp indirekta referenser och sorterar diktionärposter, normaliserar PDF-namn samt litteral eller hexadecimal strängrepresentation, och avkodar vanliga strömfilter innan innehållet hashas med SHA-256
Objektnummer, serialiseringsordning och vanlig strömkomprimering ändrar inte strukturell ekvivalens; terminala bildkodningar behåller sin filter- och avkodningspolicy, medan onåbara objekt jämförs som en multiset
Krypteringsdiktionärer och lagringsbehållare för korsreferenser eller objektströmmar undantas från den semantiska strukturen; autentiserat AES R5/R6-innehåll jämförs efter dekryptering, med utdragningsbehörigheten upprätthållen
En strukturell skillnad rapporterar dokumentsökvägen $Document; fysiska objektantal förblir ett separat läge och kan skilra sig när ekvivalent innehåll använder olika lagringslayouter
Renderad jämförelse
Varje sida renderas faktiskt med den nativa Cairo-enheten vid vald DPI; avkodade bildpixlar komponeras på vitt och jämförs i RGB eller luminans
Rapporterna innehåller dimensioner, antal ändrade pixlar, största kanaldelta, genomsnittligt absolut fel, andel ändrade pixlar och likhet; likheten är 1 - meanAbsoluteError / 255
En pixel räknas som ändrad när dess största kanaldelta överskrider ColorTolerance; en sida godkänns bara när dimensionerna matchar och både likheten och andelen ändrade pixlar uppfyller de konfigurerade trösklarna
Rendering kräver samma typsnitt, bildkodekar och grafiksemantik med stöd som nativ sidrendering; en sida utan stöd misslyckar jämförelsen i stället för att producera en identisk rapport
Avgränsad körning
Jämförelsealternativ avgränsar traversering, djup, objekt, avkodade strömmar, textberedning, resultatlagring och renderade pixlar; avbrott når traversering, textutdragning och rendering
Håll båda dokumentinstanserna vid liv och exklusivt ägda under en Pascal-jämförelse; deras ursprungliga innehåll och resursalternativ bevaras vid lyckat resultat, fel och avbrott
Linux-ABI:n accepterar de sex gemena lägesnamnen ovan samt strikta options-medlemmar som matchar Pascal-gränserna, plus dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio och colorSpace:rgb eller luminance
ABI-resultaten är fullt förberedda och avgränsade före synkron callback-publicering; anrop med samma handle och samtidiga anrop i omvänd ordning använder den befintliga stabila låsordningen
Rapportfält · Semantisk kontraktjämförelse · Native Linux C ABI