Confronto di Documenti

THPDFDocComparison confronta due documenti THotPDF caricati e restituisce un report JSON deterministico

Confronto strutturale

cmStructural parte dal catalogo di ciascun documento, segue i riferimenti indiretti e assegna i percorsi a partire dalle chiavi del dizionario ordinate e dagli indici degli array, come $Catalog/Pages/Kids[0]/Contents

I valori scalari e i byte dei flussi decodificati vengono sottoposti a hashing SHA-256, quindi i flussi di grandi dimensioni vengono confrontati in modo incrementale senza materializzare un'altra copia completa

Gli oggetti con lo stesso percorso ma firme diverse vengono segnalati come objectChanged; le firme uguali in percorsi diversi sono objectMoved; gli oggetti rimanenti non abbinati sono objectInserted o objectDeleted

Allineamento delle pagine

Le pagine con testo estraibile usano una firma di testo semantica per l'allineamento e ripiegano su una firma strutturale quando il testo è vuoto o non disponibile

Un passaggio sulla sottosequenza crescente più lunga preserva l'ordine delle pagine tra inserimenti ed eliminazioni mentre segnala come pageMoved il vero riordinamento

Le pagine allineate senza corrispondenza diventano pageChanged, pageInserted o pageDeleted; i metadati di pagina sono firmati indipendentemente da /Parent, /Contents e /Resources per evitare il rumore dovuto alla codifica dei subset di font

Confronto reso

cmRenderedImage e cmFull renderizzano le pagine comuni al DPI configurato e scansionano ogni bitmap una sola volta per calcolare i pixel modificati, il rapporto di pixel modificati, l'errore cromatico assoluto medio, il delta cromatico massimo e un punteggio di luminanza globale di tipo SSIM

THPDFRenderedCompareOptions seleziona la differenza RGB o di luminanza, la tolleranza del colore per pixel, la similarità minima, il rapporto massimo dei pixel cambiati, la dimensione del tile, la conservazione delle regioni cambiate, i budget dei pixel e sovrapposizioni PNG opzionali

Una pagina è simile solo quando superano sia il gate del rapporto dei pixel cambiati sia quello della similarità; le metriche vengono valutate a piena precisione e arrotondate a sei decimali solo per il report JSON deterministico

I tile cambiati vengono uniti in regioni deterministiche connesse in quattro direzioni e riportati con i limiti nello spazio dei pixel, i conteggi dei pixel cambiati e i delta massimi del colore

Quando le heatmap sono attivate, i pixel cambiati vengono sfumati dal giallo al rosso sul documento A e salvati come file in stile page-000001-diff.png nella directory selezionata dal chiamante

Limiti e completezza

THPDFStructuralCompareLimits controlla i limiti di oggetti, archi, pagine, profondità, differenze, byte di flusso, byte di valori e byte di percorso

Se l'attraversamento raggiunge un limite, il report include comparisonBudget, imposta comparisonComplete su false e non può dichiarare i documenti identici

Il lavoro di rendering viene stimato prima dell'allocazione e limitato per pagina e per confronto; errori di rendering, allocazione o overlay aggiungono renderBudget o renderError, impostano renderComparisonComplete e comparisonComplete su false e falliscono in modalità fail-closed

Modalità di confronto

Formato del risultato

Il report include i conteggi delle sorgenti, la telemetria dell'attraversamento, i limiti strutturali e di rendering normalizzati, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical e un array differences

Le modalità rese restituiscono anche un array renderedPages con lo stato della pagina, le dimensioni, le metriche, le regioni cambiate e i percorsi delle sovrapposizioni opzionali, oltre ai conteggi aggregati di pagine e pixel resi

Ogni differenza può includere valori pathA e pathB stabili, indici di pagina, numeri di oggetto, un tipo e una stringa di dettaglio

API correlate

THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments