Porównywanie dokumentów
THPDFDocComparison porównuje dwa załadowane dokumenty THotPDF i zwraca deterministyczny raport JSON
Porównanie strukturalne
cmStructural zaczyna od katalogu każdego dokumentu, podąża za referencjami pośrednimi i przypisuje ścieżki z posortowanych kluczy słownika i indeksów tablic, takich jak $Catalog/Pages/Kids[0]/Contents
Wartości skalarne i zdekodowane bajty strumienia są hasowane SHA-256, więc duże strumienie są porównywane przyrostowo bez materializowania kolejnej kompletnej kopii
Obiekty o tej samej ścieżce, ale różnych sygnaturach są raportowane jako objectChanged; równe sygnatury przy różnych ścieżkach to objectMoved; pozostałe nieprzyporządkowane obiekty to objectInserted lub objectDeleted
Wyrównanie stron
Strony z tekstem do wyodrębnienia używają semantycznej sygnatury tekstu do wyrównania i przechodzą do sygnatury strukturalnej, gdy tekst jest pusty lub niedostępny
Przebieg najdłuższego rosnącego podciągu zachowuje kolejność stron przez wstawienia i usunięcia, jednocześnie raportując rzeczywiste przestawienie jako pageMoved
Nieprzyporządkowane wyrównane strony stają się pageChanged, pageInserted lub pageDeleted; metadane stron są podpisywane niezależnie od /Parent, /Contents i /Resources, aby uniknąć szumu kodowania podzbiorów czcionek
Porównanie wyrenderowane
cmRenderedImage i cmFull renderują wspólne strony przy skonfigurowanym DPI i skanują każdą bitmapę raz, aby obliczyć zmienione piksele, stosunek zmienionych pikseli, średni bezwzględny błąd koloru, maksymalną deltę koloru i globalny wyniki luminancji podobny do SSIM
THPDFRenderedCompareOptions wybiera różnicę RGB lub luminancji, tolerancję koloru per piksel, minimalne podobieństwo, maksymalny stosunek zmienionych pikseli, rozmiar kafla, zachowanie zmienionych regionów, budżety pikseli i opcjonalne nakładki PNG
Strona jest podobna tylko wtedy, gdy przechodzą obie bramki stosunku zmienionych pikseli i podobieństwa; metryki są oceniane przy pełnej precyzji i zaokrąglane do sześciu miejsc dziesiętnych tylko dla deterministycznego raportowania JSON
Zmienione kafli są łączone w deterministyczne regiony czterosąsiednie i raportowane z granicami w przestrzeni pikseli, liczbami zmienionych pikseli i maksymalnymi deltami koloru
Gdy heatmapy są włączone, zmienione piksele są mieszane od żółtego do czerwonego nad dokumentem A i zapisywane jako pliki w stylu page-000001-diff.png w wybranym przez wywołującego katalogu
Granice i kompletność
THPDFStructuralCompareLimits kontroluje limity obiektów, krawędzi, stron, głębokości, różnic, bajtów strumieni, bajtów wartości i bajtów ścieżek
Jeśli przechodzenie osiągnie limit, raport zawiera comparisonBudget, ustawia comparisonComplete na false i nie może raportować dokumentów jako identycznych
Praca wyrenderowana jest szacowana przed alokacją i ograniczana per strona oraz per porównanie; awarie renderowania, alokacji lub nakładek dodają renderBudget lub renderError, ustawiają renderComparisonComplete i comparisonComplete na false oraz zamykają się bezpiecznie
Tryby porównania
cmPageCountporównuje liczby stroncmPageTextwyrównuje i porównuje wyodrębniony tekst stroncmObjectCountzachowuje swoją istniejącą wartość selektora i obecnie dokonuje strukturalnego porównania obiektów i stroncmRenderedImagedokonuje percepcyjnego porównania wyrenderowanego przy użyciu opcji domyślnych lub wybranych przez wywołującegocmFullłączy porównanie liczby stron, strukturalne i wyrenderowanecmStructuraldokonuje porównania stron i grafu obiektów bez renderowania
Format wyniku
Raport zawiera liczby źródłowe, telemetrię przechodzenia, znormalizowane limity strukturalne i renderowania, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical oraz tablicę differences
Tryby wyrenderowane zwracają również tablicę renderedPages ze statusem strony, wymiarami, metrykami, zmienionymi regionami i opcjonalnymi ścieżkami nakładek, plus zagregowane liczby wyrenderowanych stron i pikseli
Każda różnica może zawierać stabilne wartości pathA i pathB, indeksy stron, numery obiektów, typ i łańcuch szczegółów
Powiązane API
THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments