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
cmPageCountconfronta i conteggi delle paginecmPageTextallinea e confronta il testo delle pagine estrattocmObjectCountmantiene il proprio valore di selettore esistente e ora esegue il confronto strutturale di oggetti e paginecmRenderedImageesegue un confronto reso percettivo usando le opzioni predefinite o selezionate dal chiamantecmFullcombina il conteggio delle pagine, il confronto strutturale e quello resocmStructuralesegue il confronto di pagine e di oggetti senza rendering
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