Dokumentjämförelse
THPDFDocComparison jämför två inlästa THotPDF-dokument och returnerar en deterministisk JSON-rapport
Strukturell jämförelse
cmStructural startar vid varje dokumentkatalog, följer indirekta referenser och tilldelar sökvägar från sorterade ordlistenycklar och arrayindex såsom $Catalog/Pages/Kids[0]/Contents
Skalärvärden och avkodade strömbytes hashhas med SHA-256, så stora strömmar jämförs stegvis utan att materialisera en annan fullständig kopia
Objekt med samma sökväg men olika signaturer rapporteras som objectChanged; lika signaturer vid olika sökvägar är objectMoved; återstående omatchade objekt är objectInserted eller objectDeleted
Sidjustering
Sidor med extraherbar text använder en semantisk textsignatur för justering och faller tillbaka till en strukturell signatur när texten är tom eller otillgänglig
Ett längsta-ökande-delsekvens-pass bevarar sidordning över infogningar och borttagningar samtidigt som genuin omsortering rapporteras som pageMoved
Omatchade justerade sidor blir pageChanged, pageInserted eller pageDeleted; sidmetadata signeras oberoende av /Parent, /Contents och /Resources för att undvika teckensnittsundermängds-kodningsbrus
Renderad jämförelse
cmRenderedImage och cmFull renderar gemensamma sidor vid den konfigurerade DPI:n och skannar varje bitmapp en gång för att beräkna ändrade pixlar, ändrad-pixel-kvot, medelabsolut-färgfel, maximal färgdelta och ett globalt SSIM-liknande luminanspoäng
THPDFRenderedCompareOptions väljer RGB- eller luminansskillnad, per-pixel-färgtolerans, minsta likhet, maximal ändrad-pixel-kvot, tile-storlek, behållning av ändrade regioner, pixelbudgetar och valfria PNG-överlägg
En sida är lik endast när både ändrad-pixel-kvoten och likhetsporten passerar; metrik utvärderas vid full precision och avrundas till sex decimaler endast för deterministisk JSON-rapportering
Ändrade tiles sammanfogas till deterministiska fyr-anslutna regioner och rapporteras med pixelrumsgränser, ändrad-pixel-antal och maximala färgdeltor
När heatmaps är aktiverade blandas ändrade pixlar från gult till rött över dokument A och sparas som page-000001-diff.png-stilfiler i den anropare-valda katalogen
Gränser och fullständighet
THPDFStructuralCompareLimits styr objekt-, kant-, sid-, djup-, skillnad-, strömbyte- och sökvägsbytesgränser
Om genomgången når en gräns inkluderar rapporten comparisonBudget, sätter comparisonComplete till false och kan inte rapportera dokumenten som identiska
Renderat arbete uppskattas före allokering och begränsas per sida och per jämförelse; renderings-, allokerings- eller överläggsfel lägger till renderBudget eller renderError, sätter renderComparisonComplete och comparisonComplete till false och misslyckas stängt
Jämförelselägen
cmPageCountjämför sidantalcmPageTextjusterar och jämför extraherad sidtextcmObjectCountbehåller sitt befintliga väljarvärde och utför nu strukturell objekt- och sidjämförelsecmRenderedImageutför perceptuell renderad jämförelse med standard- eller anropare-valda alternativcmFullkombinerar sidantal, strukturell och renderad jämförelsecmStructuralutför sid- och objektgrafjämförelse utan rendering
Resultatformat
Rapporten inkluderar källantal, genomgångstelemetri, normaliserade strukturella och renderingsgränser, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical och en differences-array
Renderade lägen returnerar även en renderedPages-array med sidstatus, dimensioner, metrik, ändrade regioner och valfria överläggssökvägar plus aggregerade renderade sid- och pixelantal
Varje skillnad kan inkludera stabila pathA- och pathB-värden, sidindex, objektnummer, en typ och en detaljsträng
Relaterade API:er
THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments