Native headless document comparison

HPDFHeadlessCompare porovnává dva načtené nativní dokumenty přes HPDFCompareHeadlessDocuments; Linux callback ABI vystavuje tutéž implementaci přes hpdf_document_compare_json_v1 s type:compare

Pascal režimJSON režimPorovnávaný obsah
hcmPageCountpagecountPočty listů stromu stránek
hcmPageTextpagetextPočty stránek a extrahovaný Unicode text
hcmObjectCountobjectcountPočty stránek a fyzické počty používaných objektů cross-reference
hcmRenderedImagerenderedimagePočty stránek, renderované rozměry i nativní Cairo pixely
hcmStructuralstructuralPočty stránek a normalizované grafy katalogu, informací i nedosažitelných objektů
hcmFullfullPočty stránek a objektů, normalizované grafy, Unicode text i renderované pixely

Strukturální ekvivalence

Strukturální porovnání rozřeší nepřímé reference a setřídí položky slovníků, normalizuje PDF názvy i literální či hexadecimální reprezentace řetězců a dekóduje běžné stream filtry, dřív než hashuje obsah přes SHA-256

Objektová čísla, pořadí serializace i běžná komprese streamů strukturální ekvivalenci nemění; terminální kódování obrázků si ponechávají politiku filtrů i dekódování, zatímco nedosažitelné objekty se porovnávají jako multiset

Šifrovací slovníky i úložné kontejnery cross-reference či objektových streamů jsou ze sémantické struktury vyloučené; autentizovaný obsah AES R5/R6 se porovnává po dešifrování, s vynuceným oprávněním pro extrakci

Strukturální rozdíl reportuje dokumentovou cestu $Document; fyzické počty objektů zůstávají samostatným režimem a můžou se lišit, když ekvivalentní obsah používá různá úložná rozložení

Renderované porovnání

Každá stránka se skutečně renderuje nativním Cairo zařízením při vybraném DPI; dekódované pixely obrázků se skládají na bílé pozadí a porovnávají v RGB či luminanci

Reporty obsahují rozměry, počty změněných pixelů, maximální rozdíl kanálu, střední absolutní chybu, podíl změněných pixelů i podobnost; podobnost je 1 - meanAbsoluteError / 255

Pixel se změní, když jeho maximální rozdíl kanálu přesáhne ColorTolerance; stránka projde jen tehdy, když se rozměry shodují a jak podobnost, tak podíl změněných pixelů splní nakonfigurované prahy

Renderování vyžaduje týž podporovaná písma, image kodeky i grafickou sémantiku jako nativní render stránek; nepodporovaná stránka porovnání zhatí, místo aby vytvořila identický report

Ohraničené provedení

Porovnávací volby ohraničují traversal, hloubku, objekty, dekódované streamy, přípravu textu, úložiště výsledků i renderované pixely; zrušení zasahuje traversal, extrakci textu i renderování

Během Pascal porovnání držte obě instance dokumentů naživu a výhradně vlastněné; jejich původní obsah i volby resource se zachovají při úspěchu, selhání i zrušení

Linux ABI přijímá šest výše uvedených lowercase názvů režimů a přísné členy options odpovídající Pascal limitům, plus dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio a colorSpace:rgb či luminance

ABI výsledky jsou úplně připravené a ohraničené dřív než synchronní publikace callbackem; volání se stejným handle i souběžná volání v opačném pořadí používají stávající stabilní pořadí zámků

Pole reportu · Sémantické porovnání kontraktů · Nativní Linux C ABI