Documentvergelijking

THPDFDocComparison vergelijkt twee geladen THotPDF-documenten en retourneert een deterministisch JSON-rapport

Structurele vergelijking

cmStructural start bij elke documentcatalogus, volgt indirecte verwijzingen en kent paden toe op basis van gesorteerde woordenboeksleutels en array-indexen, zoals $Catalog/Pages/Kids[0]/Contents

Scalaire waarden en gedecodeerde stroombytes worden gehasht met SHA-256, zodat grote stromen stapsgewijs worden vergeleken zonder een tweede volledige kopie te materialiseren

Objecten met hetzelfde pad maar verschillende handtekeningen worden gerapporteerd als objectChanged; gelijke handtekeningen op verschillende paden zijn objectMoved; overige niet-overeenkomende objecten zijn objectInserted of objectDeleted

Pagina-uitlijning

Pagina's met extraheerbare tekst gebruiken een semantische teksthandtekening voor uitlijning en vallen terug op een structurele handtekening wanneer tekst leeg of niet beschikbaar is

Een langste-stijgende-deelrij-pas behoudt de paginavolgorde tussen invoegingen en verwijderingen, terwijl echte herordening wordt gerapporteerd als pageMoved

Niet-overeenkomende uitgelijnde pagina's worden pageChanged, pageInserted of pageDeleted; paginametadata wordt onafhankelijk van /Parent, /Contents en /Resources ondertekend om ruis door lettertypesubset-encodering te vermijden

Weergavevergelijking

cmRenderedImage en cmFull geven gemeenschappelijke pagina's weer op de ingestelde DPI en scannen elke bitmap eenmaal om gewijzigde pixels, de verhouding gewijzigde pixels, de gemiddelde absolute kleurfout, de maximale kleurdelta en een globale SSIM-achtige luminantiescore te berekenen

THPDFRenderedCompareOptions selecteert RGB- of luminantieverschil, per-pixel-kleurtolerantie, minimale overeenkomst, maximale verhouding gewijzigde pixels, tegrootte, behoud van gewijzigde gebieden, pixelbudgetten en optionele PNG-overlays

Een pagina is alleen vergelijkbaar wanneer zowel de verhouding gewijzigde pixels als de overeenkomstdrempel wordt gehaald; metrieken worden op volledige precisie geëvalueerd en alleen voor deterministische JSON-rapportage afgerond op zes decimalen

Gewijzigde tegels worden samengevoegd tot deterministische vier-verbonden gebieden en gerapporteerd met pixelruimte-grenzen, aantallen gewijzigde pixels en maximale kleurdelta's

Wanneer heatmaps zijn ingeschakeld, worden gewijzigde pixels van geel naar rood geblend over document A en opgeslagen als page-000001-diff.png-stijlbestanden in de door de aanroeper gekozen map

Grenzen en volledigheid

THPDFStructuralCompareLimits beheert de limieten voor object, rand, pagina, diepte, verschil, stroombyte, waarde-byte en padbyte

Als een traversal een limiet bereikt, bevat het rapport comparisonBudget, wordt comparisonComplete op false gezet en kunnen de documenten niet als identiek worden gerapporteerd

Weergavewerk wordt vóór toewijzing geschat en begrensd per pagina en per vergelijking; fouten bij weergave, toewijzing of overlay voegen renderBudget of renderError toe, zetten renderComparisonComplete en comparisonComplete op false en falen gesloten

Vergelijkmodi

Resultaatindeling

Het rapport bevat brontellingen, traversal-telemetrie, genormaliseerde structurele en weergavelimieten, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical en een differences-array

Weergavemodi retourneren ook een renderedPages-array met paginastatus, afmetingen, metrieken, gewijzigde gebieden en optionele overlay-paden, plus geaggregeerde aantallen weergegeven pagina's en pixels

Elk verschil kan stabiele pathA- en pathB-waarden, pagina-indexen, objectnummers, een type en een detailstring bevatten

Gerelateerde API's

THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments