Fonctions de minimisation du corpus
function HPDFMinimizeCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
out AInfo: THPDFCorpusMinimizationInfo): TBytes;
Le réducteur supprime d'abord les plages complètes d'objets indirects, puis applique des réductions d'intervalles d'octets de plus en plus petites
Un candidat n'est accepté que lorsque le prédicat signale toujours la signature d'échec d'origine
AInfo signale les tentatives, les réductions acceptées, les plages d'objets supprimées, les plages d'octets supprimées, les tailles initiale et finale, ainsi que la signature préservée
Stockage continu du 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;
Le magasin dérive un identifiant de cas stable du condensat SHA-256 de la signature d'échec, revalide tout cas existant, minimise à la fois les candidats existant et entrant, puis conserve le plus petit résultat
Un verrou inter-processus sérialise les décisions pour un répertoire de corpus donné, tandis que des fichiers temporaires à écriture directe et un remplacement atomique évitent aux lecteurs d'observer des fichiers PDF ou de métadonnées partiels
THPDFCorpusStoreOptions borne les tentatives de minimisation, les octets entrants, les octets stockés et les nouvelles tentatives de verrou, et THPDFCorpusCaseInfo.Action signale si le cas a été ajouté, remplacé ou conservé
Le schéma secondaire hotpdf.corpus.case.v1 enregistre l'identifiant du cas, la signature d'échec exacte, le SHA-256 du contenu et le nombre d'octets stockés dans un ordre de champs stable
HPDFCompareRegressionResultsDeterministic compare les signatures multi-moteurs répétées dans les domaines analyse, rendu, texte et sauvegarde, et rejette les exécutions instables ou en échec