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