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

TipoEntradaResultado
infoDocumento cargadoRecuentos de páginas, objetos, formularios y campos de firma
renderpage, dpi (18–1,200), format (png)Artefacto PNG y dimensiones
export.structuredpages, format, optionsArtefacto HTML/XHTML/XML/JSON semántico y telemetría de exportación
tables.exportpages, format, optionsArtefacto CSV/JSON/XLSX tipado y telemetría de tabla/celda/encabezado
text.extractpages, layout opcionalTexto Unicode de la página y artefacto de texto UTF-8 opcional
text.replacepages, needle, replacement, matchCaseRecuentos por página de coincidencias/reemplazos/omisiones y artefacto PDF opcional
forms.readDocumento cargadoNombres, valores Unicode decodificados y tipos nativos de campo
forms.fillarray de fields con cadenas name/valueActualizaciones atómicas; los nombres desconocidos o duplicados rechazan la operación
forms.flattenDocumento cargadoRecuento aplanado y campos restantes
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingPDF buscable y recuentos de palabras aceptadas/descartadas
redactburnIn: true, rectángulos con page/x1/y1/x2/y2Recuento de redacciones aplicadas y artefacto PDF
signpfxFile, pfxPassword, page, fieldName, rectángulo y contentsBytes opcionalesArtefacto PDF firmado con PFX
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, dpi y options opcionalesArtefacto 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ónValor por defecto efectivo y máximo
maxPagesMínimo de 1,000 y budget.pageCount
maxInputObjectsMínimo de 200,000 y budget.objectCount
maxPixelsPerPageMínimo de 40,000,000, budget.pixels y memoryBytes / 32
maxTotalPixelsMínimo de 500,000,000, budget.pixels y memoryBytes / 32
maxRasterBytesMínimo de 256 MiB y memoryBytes / 8
maxOutputBytesMínimo de 256 MiB, budget.outputBytes y memoryBytes / 8
maxDecodedStreamBytesMínimo de 64 MiB y memoryBytes / 8
maxTotalDecodedBytesMí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

ClavePor defecto
memoryBytes268,435,456
outputBytes134,217,728
resultBytes16,777,216
timeMilliseconds60,000
objectCount1,000,000
pageCount1,024
pixels100,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