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ägeJSON-lägeJämfört innehåll
hcmPageCountpagecountAntal löv i sidträdet
hcmPageTextpagetextSidantal och utdragen Unicode-text
hcmObjectCountobjectcountSidantal och fysiskt antal använda objekt i korsreferenstabellen
hcmRenderedImagerenderedimageSidantal, renderade dimensioner och nativa Cairo-pixlar
hcmStructuralstructuralSidantal samt normaliserade grafer för katalog, information och onåbara objekt
hcmFullfullSid- 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