Funzioni di Minimizzazione del Corpus
function HPDFMinimizeCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
out AInfo: THPDFCorpusMinimizationInfo): TBytes;
Il riduttore rimuove prima gli intervalli completi di oggetti indiretti e poi applica riduzioni progressivamente più piccole degli intervalli di byte
Un candidato viene accettato solo quando il predicato riporta ancora la firma di guasto originale
AInfo riporta i tentativi, le riduzioni accettate, gli intervalli di oggetti rimossi, gli intervalli di byte rimossi, le dimensioni originale e finale e la firma preservata
Archiviazione continua del corpus
function HPDFDefaultCorpusStoreOptions: THPDFCorpusStoreOptions;
function HPDFMinimizeAndStoreCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate;
const CorpusDirectory: string;
const Options: THPDFCorpusStoreOptions;
out AInfo: THPDFCorpusCaseInfo): Boolean;
function HPDFCorpusCaseInfoToJSON(
const AInfo: THPDFCorpusCaseInfo): AnsiString;
type
THPDFCorpusStoreAction = (csaAdded, csaReplaced, csaKeptExisting);
THPDFCorpusStoreOptions = record
MaximumAttempts: Integer;
MaximumInputBytes: Int64;
MaximumStoredBytes: Int64;
LockRetryCount: Integer;
end;
L'archivio deriva un ID di caso stabile dal digest SHA-256 della firma di guasto, rivalida qualsiasi caso esistente, minimizza sia il candidato esistente sia quello in arrivo e conserva il risultato più piccolo
Un blocco cross-process serializza le decisioni per una directory di corpus, mentre file temporanei write-through e sostituzione atomica impediscono ai lettori di osservare file PDF o metadati parziali
THPDFCorpusStoreOptions limita i tentativi di minimizzazione, i byte in ingresso, i byte archiviati e i retry del blocco, e THPDFCorpusCaseInfo.Action riporta se il caso è stato aggiunto, sostituito o conservato
Lo schema sidecar hotpdf.corpus.case.v1 registra l'ID del caso, la firma di guasto esatta, lo SHA-256 del contenuto e il conteggio di byte archiviati in ordine di campo stabile
HPDFCompareRegressionResultsDeterministic confronta le firme cross-engine ripetute nei domini di parse, render, testo e save e rifiuta le esecuzioni instabili o fallite