Belge Karşılaştırma

THPDFDocComparison, iki yüklü THotPDF belgesini karşılaştırır ve deterministik bir JSON raporu döndürür

Yapısal karşılaştırma

cmStructural her belge kataloğundan başlar, indirect referansları izler ve $Catalog/Pages/Kids[0]/Contents gibi sıralanmış dictionary anahtarlarından ve dizi indekslerinden yollar atar

Skaler değerler ve çözülmüş stream baytları SHA-256 ile hash'lenir; böylece büyük stream'ler başka bir eksiksiz kopya somutlaştırmadan artımlı olarak karşılaştırılır

Aynı yolda ama farklı imzalı nesneler objectChanged olarak raporlanır; farklı yollarda eş imzalılar objectMoved olur; kalan eşleşmemiş nesneler objectInserted veya objectDeleted sayılır

Sayfa hizalama

Çıkarılabilir metni olan sayfalar hizalama için semantic bir metin imzası kullanır; metin boş veya erişilemezken yapısal imzaya döner

Bir longest-increasing-subsequence geçişi; ekleme ve silmeler arasında sayfa sırasını korur, gerçek yeniden sıralanmayı ise pageMoved olarak raporlar

Eşleşmeyen hizalanmış sayfalar pageChanged, pageInserted veya pageDeleted olur; sayfa meta verisi, font-subset kodlama gürültüsünü önlemek için /Parent, /Contents ve /Resources'tan bağımsız imzalanır

Render edilmiş karşılaştırma

cmRenderedImage ve cmFull ortak sayfaları yapılandırılmış DPI'da render eder ve her bitmap'i bir kez tarayarak değişen pikselleri, değişen-piksel oranını, ortalama mutlak renk hatasını, maksimum renk deltasını ve global bir SSIM benzeri luminance skoru hesaplar

THPDFRenderedCompareOptions; RGB veya luminance farkını, piksel başına renk toleransını, minimum benzerliği, maksimum değişen-piksel oranını, tile boyutunu, değişen-bölge saklamayı, piksel bütçelerini ve isteğe bağlı PNG overlay'lerini seçer

Bir sayfa, yalnızca değişen-piksel oranı ve benzerlik kapılarının ikisi de geçtiğinde benzer sayılır; metric'ler tam hassasiyetle değerlendirilir ve yalnızca deterministik JSON raporlaması için altı ondalık basamağa yuvarlanır

Değişen tile'lar deterministik dört-yönlü bağlantılı bölgelerde birleştirilir ve piksel-uzayı sınırlarıyla, değişen-piksel sayılarıyla ve maksimum renk deltalarıyla raporlanır

Heatmap'ler etkinleştirildiğinde, değişen pikseller belge A üzerinde sarıdan kırmızıya karıştırılır ve çağıranın seçtiği dizine page-000001-diff.png biçiminde dosyalar olarak kaydedilir

Sınırlar ve eksiksizlik

THPDFStructuralCompareLimits; nesne, kenar, sayfa, derinlik, fark, stream baytı, değer baytı ve yol baytı sınırlarını denetler

Dolaşım bir sınıra ulaşırsa rapor comparisonBudget içerir, comparisonComplete değerini false yapar ve belgeleri özdeş olarak raporlayamaz

Render işi, tahsis edilmeden önce tahmin edilir ve sayfa ile karşılaştırma başına sınırlanır; rendering, tahsis veya overlay hataları renderBudget veya renderError ekler, renderComparisonComplete ve comparisonComplete değerlerini false yapar ve fail closed davranır

Karşılaştırma modları

Sonuç biçimi

Rapor; kaynak sayaçlarını, dolaşım telemetry'sini, normalize edilmiş yapısal ve rendering sınırlarını, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical ve bir differences dizisi içerir

Render edilmiş modlar ayrıca; sayfa durumu, boyutlar, metric'ler, değişen bölgeler ve isteğe bağlı overlay yolları içeren bir renderedPages dizisiyle birlikte toplu render edilmiş sayfa ve piksel sayılarını döndürür

Her fark; kararlı pathA ve pathB değerlerini, sayfa indekslerini, nesne numaralarını, bir tür ve ayrıntı string'i içerebilir

İlgili API'ler

THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments