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