Funciones de minimización de corpus
function HPDFMinimizeCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
out AInfo: THPDFCorpusMinimizationInfo): TBytes;
El reductor primero elimina los tramos completos de objetos indirectos y luego aplica reducciones de rango de bytes progresivamente menores
Un candidato se acepta solo cuando el predicado sigue informando de la firma de error original
AInfo informa de los intentos, las reducciones aceptadas, los tramos de objetos eliminados, los rangos de bytes eliminados, los tamaños original y final y la firma conservada
Almacenamiento continuo de 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;
El almacén deriva un ID de caso estable del resumen SHA-256 de la firma de error, revalida cualquier caso existente, minimiza tanto los candidatos existentes como los entrantes y conserva el resultado más pequeño
Un bloqueo entre procesos serializa las decisiones de un directorio de corpus, mientras que los archivos temporales de escritura directa y el reemplazo atómico evitan que los lectores observen archivos PDF o de metadatos parciales
THPDFCorpusStoreOptions limita los intentos de minimización, los bytes entrantes, los bytes almacenados y los reintentos de bloqueo, y THPDFCorpusCaseInfo.Action informa de si el caso se añadió, se reemplazó o se conservó
El esquema de archivo auxiliar hotpdf.corpus.case.v1 registra el ID de caso, la firma de error exacta, el SHA-256 del contenido y el recuento de bytes almacenados en un orden de campos estable
HPDFCompareRegressionResultsDeterministic compara las firmas repetidas entre motores en los dominios de análisis, renderizado, texto y guardado, y rechaza las ejecuciones inestables o fallidas