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
cmPageCountvergelijkt het aantal pagina'scmPageTextlijnt en vergelijkt geëxtraheerde paginatekst uitcmObjectCountbehoudt zijn bestaande selectorwaarde en voert nu structurele object- en paginavergelijking uitcmRenderedImagevoert perceptuele weergavevergelijking uit met standaard of door de aanroeper geselecteerde optiescmFullcombineert pagina-aantal, structurele en weergavevergelijkingcmStructuralvoert pagina- en objectgraafvergelijking uit zonder weergave
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