Native headless document comparison

HPDFHeadlessCompare porównuje dwa załadowane natywne dokumenty przez HPDFCompareHeadlessDocuments; ABI callbacków Linuksa odsłania tę samą implementację przez hpdf_document_compare_json_v1 z type:compare

Tryb PascalTryb JSONPorównywana zawartość
hcmPageCountpagecountLiczby liści drzewa stron
hcmPageTextpagetextLiczby stron i ekstrahowany tekst Unicode
hcmObjectCountobjectcountLiczby stron i fizyczne liczby używanych obiektów tabeli odwołań
hcmRenderedImagerenderedimageLiczby stron, wyrenderowane wymiary i natywne piksele Cairo
hcmStructuralstructuralLiczby stron i znormalizowane grafy katalogu, informacji i obiektów nieosiągalnych
hcmFullfullLiczby stron i obiektów, znormalizowane grafy, tekst Unicode i wyrenderowane piksele

Structural equivalence

Porównanie strukturalne rozpoznaje referencje pośrednie i sortuje wpisy słowników, normalizuje nazwy PDF i reprezentacje napisów literalnych albo szesnastkowych i dekoduje zwykłe filtry strumieni przed hashowaniem zawartości SHA-256

Numery obiektów, kolejność serializacji i zwykła kompresja strumieni nie zmieniają równoważności strukturalnej; terminalne kodowania obrazów zachowują politykę filtru i dekodowania, a obiekty nieosiągalne są porównywane jako multizbiór

Słowniki szyfrowania i kontenery storage tabel odwołań albo strumieni obiektów są wykluczone ze struktury semantycznej; uwierzytelniona zawartość AES R5/R6 jest porównywana po deszyfrowaniu, z wymuszonym uprawnieniem ekstrakcji

Różnica strukturalna raportuje ścieżkę $Document na poziomie dokumentu; fizyczne liczby obiektów pozostają odrębnym trybem i mogą się różnić, gdy równoważna zawartość używa różnych layoutów storage

Rendered comparison

Każda strona jest faktycznie renderowana natywnym urządzeniem Cairo w wybranym DPI; zdekodowane piksele obrazów są komponowane na białym i porównywane w RGB albo luminancji

Raporty zawierają wymiary, liczby zmienionych pikseli, maksymalną deltę kanałów, średni błąd absolutny, ułamek zmienionych pikseli i podobieństwo; podobieństwo to 1 - meanAbsoluteError / 255

Piksel się zmienia, gdy jego maksymalna delta kanałów przekracza ColorTolerance; strona przechodzi wyłącznie, gdy wymiary pasują i podobieństwo oraz ułamek zmienionych pikseli spełniają skonfigurowane progi

Renderowanie wymaga tych samych obsługiwanych fontów, kodeków obrazów i semantyki grafiki co natywne renderowanie stron; nieobsługiwana strona zawodzi porównanie zamiast produkować identyczny raport

Bounded execution

Opcje porównania ograniczają traversalu, głębokość, obiekty, zdekodowane strumienie, przygotowanie tekstu, storage wyniku i wyrenderowane piksele; anulowanie dociera do traversalu, ekstrakcji tekstu i renderowania

Utrzymuj obie instancje dokumentu przy życiu i wyłącznie posiadane podczas porównania Pascal; ich oryginalna zawartość i opcje zasobów są zachowywane przy sukcesie, awarii i anulowaniu

ABI Linuksa akceptuje sześć małymi literami nazw trybów powyżej i ścisłych członków options pasujących do limitów Pascal, plus dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio i colorSpace:rgb albo luminance

Wyniki ABI są w pełni przygotowane i ograniczone przed synchroniczną publikacją callbackową; wywołania tym samym handle i współbieżne w odwrotnej kolejności używają istniejącego stabilnego porządkowania blokad

Pola raportu · Porównanie kontraktów semantycznych · Native Linux C ABI