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 Pascal | Tryb JSON | Porównywana zawartość |
|---|---|---|
| hcmPageCount | pagecount | Liczby liści drzewa stron |
| hcmPageText | pagetext | Liczby stron i ekstrahowany tekst Unicode |
| hcmObjectCount | objectcount | Liczby stron i fizyczne liczby używanych obiektów tabeli odwołań |
| hcmRenderedImage | renderedimage | Liczby stron, wyrenderowane wymiary i natywne piksele Cairo |
| hcmStructural | structural | Liczby stron i znormalizowane grafy katalogu, informacji i obiektów nieosiągalnych |
| hcmFull | full | Liczby 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