Confronto headless di documenti nativi
HPDFHeadlessCompare confronta due documenti nativi caricati tramite HPDFCompareHeadlessDocuments; la callback ABI di Linux espone la stessa implementazione via hpdf_document_compare_json_v1 con type:compare
| Modalità Pascal | Modalità JSON | Contenuto confrontato |
|---|---|---|
| hcmPageCount | pagecount | Conteggio foglie dell'albero delle pagine |
| hcmPageText | pagetext | Conteggio pagine e testo Unicode estratto |
| hcmObjectCount | objectcount | Conteggio pagine e conteggio fisico degli oggetti cross-reference in uso |
| hcmRenderedImage | renderedimage | Conteggio pagine, dimensioni renderizzate e pixel Cairo nativi |
| hcmStructural | structural | Conteggio pagine e grafi normalizzati di catalog, information e oggetti non raggiungibili |
| hcmFull | full | Conteggi di pagine e oggetti, grafi normalizzati, testo Unicode e pixel renderizzati |
Equivalenza strutturale
Il confronto strutturale risolve i riferimenti indiretti, ordina le voci dei dizionari, normalizza i nomi PDF e le rappresentazioni di stringa letterali o esadecimali, e decodifica i filtri di stream ordinari prima di calcolare l'hash del contenuto con SHA-256
Numeri di oggetto, ordine di serializzazione e compressione ordinaria degli stream non alterano l'equivalenza strutturale; le codifiche delle immagini terminali conservano filtro e policy di decodifica, mentre gli oggetti non raggiungibili vengono confrontati come multiset
I dizionari di cifratura e i contenitori di archiviazione cross-reference o object-stream sono esclusi dalla struttura semantica; il contenuto AES R5/R6 autenticato viene confrontato dopo la decifratura, applicando il permesso di estrazione
Una differenza strutturale riporta il percorso a livello documento $Document; i conteggi fisici degli oggetti restano una modalità separata e possono divergere quando contenuto equivalente usa layout di archiviazione diversi
Confronto renderizzato
Ogni pagina viene davvero renderizzata con il device Cairo nativo al DPI selezionato; i pixel delle immagini decodificate vengono composti su bianco e confrontati in RGB o luminanza
I report contengono dimensioni, conteggio dei pixel modificati, delta massimo di canale, errore assoluto medio, rapporto di pixel modificati e similarità; la similarità è 1 - meanAbsoluteError / 255
Un pixel cambia quando il suo delta massimo di canale supera ColorTolerance; una pagina passa solo se le dimensioni corrispondono e sia la similarità sia il rapporto di pixel modificati rispettano le soglie configurate
Il rendering richiede gli stessi font supportati, codec immagine e semantiche grafiche del rendering nativo delle pagine; una pagina non supportata fallisce il confronto invece di produrre un report identico
Esecuzione con limiti
Le opzioni di confronto limitano traversata, profondità, oggetti, stream decodificati, preparazione del testo, archiviazione dei risultati e pixel renderizzati; la cancellazione interessa traversata, estrazione testo e rendering
Mantieni entrambe le istanze documento vive e in proprietà esclusiva durante un confronto Pascal; contenuto originale e opzioni risorsa vengono preservati su successo, fallimento e cancellazione
La ABI Linux accetta i sei nomi di modalità in minuscolo visti sopra e membri options rigorosi allineati ai limiti Pascal, più dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio e colorSpace:rgb o luminance
I risultati ABI sono completamente preparati e limitati prima della pubblicazione sincrona via callback; chiamate sullo stesso handle e chiamate concorrenti in ordine inverso usano il consueto ordinamento stabile dei lock
Campi del report · Confronto del contratto semantico · C ABI nativa di Linux