Operaciones de documento JSON y C ABI
export.structured exporta las páginas seleccionadas como HTML, XHTML, XML o JSON semántico; tables.export exporta tablas tipadas como CSV, JSON o XLSX, conservando la continuidad entre páginas, las celdas combinadas y la inferencia nativa de valores
Ambas operaciones exigen un destino binario de salida, preservan el documento y los campos de firma existentes, y exponen opciones nativas de exportación acotadas
Exportaciones estructuradas y de tablas tipadas
{"schemaVersion":1,"type":"export.structured","pages":[0,1],"format":"html",
"options":{"imageMode":"metadata","includeFormControls":false}}
{"schemaVersion":1,"type":"tables.export","pages":[0,1],"format":"json",
"options":{"mergeAcrossPages":true,"dateOrder":"dmy",
"decimalSeparator":",","thousandsSeparator":"."}}
La exportación estructurada acepta html, xhtml, xml y json (por defecto); la exportación de tablas acepta csv (por defecto), json y xlsx
Las opciones booleanas estructuradas son includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations y includeFormControls; todas son true por defecto
imageMode acepta omit, metadata y embedded-png (por defecto); consulte Exportación estructurada de páginas cargadas para el modelo semántico y el comportamiento con campos sensibles
Las opciones de recursos estructurados son maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes y maxTotalImageBytes
Las opciones booleanas de tablas son detectMergedCells, detectRepeatedHeaders, mergeAcrossPages e inferValueTypes; todas son true por defecto
dateOrder acepta ymd (por defecto), mdy y dmy; los separadores deben ser caracteres individuales imprimibles, y un thousandsSeparator vacío lo deshabilita
minimumTableConfidence acepta de 0 a 1 y su valor por defecto es 0.55; una columnTolerance positiva usa 12 unidades de página por defecto
Las opciones de recursos de tablas son maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters y maxOutputBytes; consulte Extracción de tablas tipadas y exportación XLSX para el modelo de celdas
Los nombres de opción desconocidos, los tipos no válidos, los formatos no soportados y los límites no positivos se rechazan; los límites nativos solicitados se recortan con presupuestos conservadores de memoria y objetos
La preparación de la exportación se limita al menor valor entre budget.outputBytes y un cuarto de budget.memoryBytes; effectiveOutputLimit informa de ese tope, y un options.maxOutputBytes más estricto puede aplicarse además
Los fallos nativos de recursos informan budget-exceeded, la métrica nativeExportResources y el diagnóstico nativo; observed=1 y limit=0 denotan una condición de recurso denegado en lugar de un uso de bytes medido
Ambas operaciones informan documentUpdated: false, preservan los ajustes de auto-launch y decodificación del origen, preparan la salida antes de publicarla y conservan los destinos de archivo existentes tras un trabajo de archivo fallido
Las comprobaciones de deadline y de cancelación vía callbacks de la ABI son cooperativas en los puntos de control de operación y publicación; los tokens nativos de cancelación también actúan dentro de las etapas de extracción que los soportan, y el trabajo nativo no se interrumpe a la fuerza
THPDFJobProcessor.ExecuteLoadedOperation y hpdf_document_execute_json_v1 comparten el mismo motor de operaciones de documento versionado por esquema
Descubra los nombres de operación actuales, los formatos, el perfil de firma, el comportamiento de callbacks y los presupuestos por defecto con THPDFJobProcessor.Capabilities o hpdf_capabilities_json_to_io
Operaciones
El JSON de operación usa UTF-8 y schemaVersion: 1; los índices de página son basados en cero y los arrays de páginas seleccionadas no pueden contener duplicados
| Tipo | Entrada | Resultado |
|---|---|---|
| info | Documento cargado | Recuentos de páginas, objetos, formularios y campos de firma |
| render | page, dpi (18–1,200), format (png) | Artefacto PNG y dimensiones |
| export.structured | pages, format, options | Artefacto HTML/XHTML/XML/JSON semántico y telemetría de exportación |
| tables.export | pages, format, options | Artefacto CSV/JSON/XLSX tipado y telemetría de tabla/celda/encabezado |
| text.extract | pages, layout opcional | Texto Unicode de la página y artefacto de texto UTF-8 opcional |
| text.replace | pages, needle, replacement, matchCase | Recuentos por página de coincidencias/reemplazos/omisiones y artefacto PDF opcional |
| forms.read | Documento cargado | Nombres, valores Unicode decodificados y tipos nativos de campo |
| forms.fill | array de fields con cadenas name/value | Actualizaciones atómicas; los nombres desconocidos o duplicados rechazan la operación |
| forms.flatten | Documento cargado | Recuento aplanado y campos restantes |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | PDF buscable y recuentos de palabras aceptadas/descartadas |
| redact | burnIn: true, rectángulos con page/x1/y1/x2/y2 | Recuento de redacciones aplicadas y artefacto PDF |
| sign | pfxFile, pfxPassword, page, fieldName, rectángulo y contentsBytes opcionales | Artefacto PDF firmado con PFX |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, dpi y options opcionales | Artefacto ráster PDF/A-4 validado, recuentos de eliminación y un perfil de pérdida explícito; preserva el origen cargado |
El reemplazo de texto devuelve un estado parcial cuando la API nativa de reemplazo no puede codificar una coincidencia; examine sus recuentos por página
OCR expone por ahora el motor ASCII integrado; las API nativas de Delphi aceptan adaptadores OCR externos
Las mutaciones rechazan documentos con campos de firma existentes, incluidos los placeholders sin firmar; use las API nativas incrementales para preservar firmas en esos documentos
La firma incremental con PFX acepta una fuente retenida sin modificar, incluidos PDF cifrados soportados con una contraseña de operación explícita, valida cada CMS antiguo y nuevo, preserva los bytes y el cifrado originales, admite un campo vacío existente, comprueba los permisos de cifrado y rechaza alias de archivos de origen/salida
Firmar produce un artefacto firmado y restaura el handle original, informando documentUpdated: false; los campos de formulario existentes siguen disponibles, los campos de firma temporales se eliminan, y el handle puede consultarse o usarse para otra operación después de firmar
Conversión de archivado ráster PDF/A-4
{
"schemaVersion": 1,
"type": "archive.pdfa4.raster",
"acceptInformationLoss": true,
"iccProfileFile": "profiles/sRGB.icm",
"dpi": 150,
"input": "source.pdf",
"output": "archive.pdf"
}
Coloque este objeto en el array operations de un file job, o suminístrelo directamente a través de hpdf_document_execute_json_v1 con un handle cargado y callbacks binarios de salida; la C ABI ignora las rutas de entrada/salida del file job y usa sus adaptadores
acceptInformationLoss debe ser el booleano JSON true, y iccProfileFile debe nombrar una ruta no vacía y sin NUL hacia un perfil ICC sRGB matrix/TRC soportado en el host de ejecución; las rutas de perfil relativas se resuelven contra el directorio de trabajo del proceso
dpi es 150 por defecto y acepta enteros de 36 a 1,200; la conversión cubre todas las páginas del origen y rechaza cualquier miembro pages
El objeto de resultado archive informa nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields y removedEmbeddedFiles
archive.lossy es true, y cada indicador de archive.lossProfile es false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances y structureIdentity
El contenido de página se convierte en píxeles RGB; las anotaciones y las apariencias de widget se omiten, y las firmas originales no se trasladan a la salida. El origen cargado sigue disponible con documentUpdated: false, también tras una publicación fallida; sus ajustes previos de launch, decodificación, umbral de stream, cancelación y renderizado se restauran
Se requiere salida binaria, y la validación nativa de PDF/A-4 debe tener éxito antes de la entrega. Para los límites de renderizado, color, codec, alias de origen y conformidad, consulte conversión de PDF cargado a PDF/A-4 ráster
Presupuestos de recursos de archivado
El objeto opcional options acepta enteros exactos positivos que estrechan los topes efectivos siguientes; las claves desconocidas y los valores que exceden un tope rechazan la petición en lugar de ampliar el presupuesto de la operación
| Opción | Valor por defecto efectivo y máximo |
|---|---|
| maxPages | Mínimo de 1,000 y budget.pageCount |
| maxInputObjects | Mínimo de 200,000 y budget.objectCount |
| maxPixelsPerPage | Mínimo de 40,000,000, budget.pixels y memoryBytes / 32 |
| maxTotalPixels | Mínimo de 500,000,000, budget.pixels y memoryBytes / 32 |
| maxRasterBytes | Mínimo de 256 MiB y memoryBytes / 8 |
| maxOutputBytes | Mínimo de 256 MiB, budget.outputBytes y memoryBytes / 8 |
| maxDecodedStreamBytes | Mínimo de 64 MiB y memoryBytes / 8 |
| maxTotalDecodedBytes | Mínimo de 256 MiB y memoryBytes / 4 |
El archivo ICC se limita al menor valor entre 4 MiB y memoryBytes / 16 antes de la asignación; estos márgenes conservadores cubren la preparación simultánea, los buffers de salida, los datos de imagen y el trabajo de los decodificadores, y no establecen un límite estricto de RSS del proceso
Augmente los presupuestos de nivel superior del job cuando una carga de archivado mayor sea intencionada; las options anidadas solo estrechan los topes efectivos, y los máximos nativos siguen aplicando
Los puntos de control de archivado consultan la cancelación de callbacks, el token de cancelación del origen prestado, el tiempo transcurrido y los recuentos de objetos durante la conversión. Los fallos de presupuesto y de cancelación conservan sus códigos de estado estructurados a través del conversor nativo
File jobs
{
"operations": [
{"type": "capabilities"},
{"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
"pages": [0, 1], "output": "text.txt"}
]
}
THPDFJobProcessor.Execute acepta un array de operaciones, hasta 1024 operaciones y 4 MiB de JSON; los trabajos existentes de merge, split, optimise, encrypt y validate siguen disponibles
Cada operación de documento suministra una ruta de entrada y una contraseña opcional; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign y archive.pdfa4.raster exigen una ruta de salida
Los artefactos se escriben en un archivo temporal junto al destino, se vacían y validan, y después se publican de forma atómica; un fallo preserva un destino existente, y la entrada y la salida pueden compartir ruta
Contrato de callbacks de C
Inicialice a cero hpdf_operation_v1, asigne struct_size a su tamaño nativo, abi_version a HPDF_ABI_VERSION_1 y los flags a cero; compare su tamaño con hpdf_abi_operation_v1_size
El registro de operación transporta bytes JSON y una longitud exacta, una entrada opcional de acceso aleatorio, una salida binaria secuencial opcional y una salida secuencial obligatoria del resultado JSON
Los callbacks de entrada, los datos de usuario y los bytes PDF de respaldo deben seguir válidos hasta que el handle se reemplace o destruya, porque el parsing perezoso retiene el adaptador
Los callbacks de salida/resultado existen solo durante la llamada; serialice las llamadas de cada handle y evite la reentrada de callbacks
Los callbacks usan cdecl, las transferencias parciales se reintentan, y las escrituras con éxito deben avanzar de forma positiva; las excepciones se convierten en códigos de estado fijos
Las mutaciones solo se consolidan cuando la entrega del artefacto y del resultado JSON tiene éxito; un fallo o una cancelación de callback revierten los cambios, y los llamadores descartan cualquier byte ya entregado
La entrada de reemplazo se carga antes de la transacción de mutación y sigue siendo un cambio de estado separado
Presupuestos
El objeto opcional de presupuesto acepta enteros exactos positivos no mayores de 9,007,199,254,740,991
| Clave | Por defecto |
|---|---|
| memoryBytes | 268,435,456 |
| outputBytes | 134,217,728 |
| resultBytes | 16,777,216 |
| timeMilliseconds | 60,000 |
| objectCount | 1,000,000 |
| pageCount | 1,024 |
| pixels | 100,000,000 |
Los presupuestos generales de salida/resultado se limitan cada uno a la mitad del presupuesto de memoria; la conversión de archivado aplica los topes más estrictos de arriba. Estos límites acotan los recursos configurados de la operación, no la memoria total del proceso
Las comprobaciones de cancelación y de tiempo transcurrido son cooperativas en los puntos de control de operación, página, lectura de entrada y escritura de salida; una rutina nativa larga puede continuar hasta su siguiente punto de control
Los informes transportan schemaVersion, status y statusCode; los errores de presupuesto usan status 8, la cancelación 4, el fallo de E/S 5, el fallo de parsing 6, los argumentos no válidos 1 y el fallo de ejecución 7