Configuración de jobs JSON

THPDFJobProcessor acepta un documento JSON que describe operaciones PDF ordenadas y devuelve un resultado JSON con estado por operación

Operaciones soportadas

merge combina varios PDF de entrada en un único archivo de salida usando AppendPagesFromDocument

split extrae rangos de páginas de un PDF de entrada hacia archivos de salida separados usando ExtractLoadedPagesToPDF

optimise recomprime los streams FlateDecode y LZWDecode con un umbral mínimo de ahorro

encrypt aplica cifrado AES-256, AES-128, RC4-128 o RC4-40 con passwords y tipo de clave especificados por el llamador

validate ejecuta una política de validación incorporada y devuelve el texto del reporte

ocr.layer crea texto buscable a través del engine ASCII integrado por defecto o de adaptadores locales Tesseract/RapidOCR CLI y DLL configurados explícitamente; vea la configuración de jobs OCR externos

Esquema JSON

La entrada debe contener un valor JSON completo con separadores válidos, contenedores cerrados, escapes de string válidos y solo whitespace JSON fuera de los strings; el contenido sobrante y los números fuera del rango finito de Double se rechazan

El parser acepta como máximo 64 niveles anidados de valores, contando el valor raíz como el primer nivel; los jobs malformados o anidados en exceso fallan antes de ejecutar cualquier operación, y los valores parcialmente parseados se liberan

La entrada es un objeto con un arreglo operations; cada operación tiene un campo type y parámetros específicos del tipo

La salida es un objeto con un arreglo results; cada resultado lleva type, status (ok, error o skipped) y campos específicos de la operación

Los valores string preservan los caracteres Unicode escapados, incluido \u0000; los números finitos usan un punto decimal independiente del locale y pueden serializarse fuera del rango con signo de 64 bits

Los valores numéricos se almacenan como Double y siguen la precisión de conversión de punto flotante del runtime del compilador, de modo que los enteros fuera de su rango entero exacto pueden redondearse en la entrada; GetInt y GetInt64 devuelven el valor por defecto suministrado cuando el valor redondeado queda fuera de su rango entero con signo

Presupuestos por operación

Cada operación puede contener un objeto budget con los límites memoryBytes, timeMilliseconds, objectCount, decompressionRatio y outputBytes

{"operations":[{"type":"optimise","input":"in.pdf","output":"out.pdf",
  "budget":{"memoryBytes":268435456,"timeMilliseconds":30000,
  "objectCount":1000000,"decompressionRatio":200,"outputBytes":1073741824}}]}

Una violación de límite devuelve status=budget-exceeded más metric, observed, limit y elapsedMilliseconds sin abortar las operaciones posteriores

Los presupuestos de memoria también se aplican a la contabilidad de decodificación por stream y del documento, de modo que la expansión queda acotada antes de retener buffers grandes

API de handles opacos

HPDFDocCreate devuelve un THPDFDocHandle opaco que envuelve una instancia de THotPDF; HPDFDocLoadFromFile, HPDFDocGetPageCount, HPDFDocSaveLoadedDocument y HPDFDocRunJob operan sobre el handle; HPDFDocDestroy lo libera

Estos helpers Pascal con compatibilidad de fuente siguen disponibles para los llamadores de Delphi y C++Builder

La ABI estable de callbacks C de HotPDF proporciona la frontera C plana y versionada para input de acceso aleatorio, output en streaming, cancelación, progreso, diagnósticos y ciclo de vida de handles opacos