Conversión de PDF cargado a PDF/A-4 ráster

HPDFArchivalConversion crea un documento PDF/A-4 nuevo a partir del contenido visible de las páginas de un documento THotPDF cargado, usando renderizado nativo estricto y un perfil ICC sRGB suministrado

Cada página de salida contiene una imagen RGB ráster comprimida sin pérdida al DPI solicitado, y sus dimensiones visibles originales, el recorte, la rotación y el UserUnit quedan reflejados en la geometría de la página de salida

Use el perfil de preservación de texto y vectores aparte cuando deban sobrevivir las fuentes incrustadas originales, los operadores de texto, las rutas vectoriales, las imágenes, las capas de OCR y las appearances visibles de anotaciones o widgets; el perfil ráster no preserva esas estructuras

Puntos de entrada

function HPDFConvertLoadedToPDFA4Raster(Source: THotPDF;
  Destination: TStream; const SRGBProfile: TBytes;
  const Options: THPDFArchivalConversionOptions;
  out Report: THPDFArchivalConversionReport): Boolean;

function HPDFConvertLoadedToPDFA4RasterFile(Source: THotPDF;
  const TargetFileName: string; const SRGBProfile: TBytes;
  const Options: THPDFArchivalConversionOptions;
  out Report: THPDFArchivalConversionReport): Boolean;

Cargue primero el origen y mantenga vivo cualquier flujo de entrada propiedad del llamador hasta destruir el documento de origen

Para la publicación de archivo ordinaria use el punto de entrada de archivo: sondea un destino existente en busca de alias del origen antes de crear un archivo temporal exclusivo en el directorio de destino, valida la conversión completa, vacía el archivo y reemplaza el destino con MoveFileEx usando MOVEFILE_REPLACE_EXISTING y MOVEFILE_WRITE_THROUGH

Los fallos de conversión, renderizado, validación, cancelación y publicación conservan un archivo de destino existente y eliminan la salida temporal

El punto de entrada por flujo exige un destino vacío, posicionable y situado en la posición cero, y rechaza los alias conocidos de la entrada mediante IsLoadedSourceStreamAlias; solo publica bytes después de que toda la salida de preparación pase la validación nativa

Un fallo de escritura en el destino provoca un restablecimiento de mejor esfuerzo a un flujo vacío, pero un dispositivo arbitrario o un flujo personalizado puede rechazar ese restablecimiento y conservar una escritura parcial; use el punto de entrada de archivo cuando la publicación del archivo deba ser atómica

Opciones y límites de recursos

OpciónValor por defectoSignificado
DPI150Resolución física solicitada, rango aceptado de 36 a 1200
MaxPages1000Número máximo de páginas del origen cargado
MaxPixelsPerPage40,000,000Máximo de píxeles por página y máximo de píxeles de cada imagen de origen
MaxTotalPixels500,000,000Máximo acumulado de píxeles ráster de salida
MaxRasterBytes256 MiBAsignación máxima de ráster de página o de imagen de origen, comprobada de forma conservadora a cuatro bytes por píxel
MaxOutputBytes256 MiBTamaño máximo del PDF de preparación, aplicado antes de asignar y escribir el flujo
MaxDecodedStreamBytes64 MiBLimita cada cadena de filtros, el preflight combinado del contenido de cada página, las devoluciones de llamada individuales de lectura nativa de flujos, los flujos individuales de imágenes de origen codificadas y el validador nativo de salida
MaxTotalDecodedBytes256 MiBLimita el trabajo adicional nativo de decodificadores filtrados durante la conversión, el preflight combinado de contenido entre páginas y las devoluciones de llamada acumuladas de lectura nativa de flujos entre páginas
MaxInputObjects200,000Número máximo de objetos indirectos ya cargados
CancellationTokennilToken prestado que se comprueba antes del trabajo, durante el renderizado y la decodificación nativos, y antes de la publicación
CheckpointnilCallback síncrono prestado que se invoca con un sender nil en los checkpoints de conversión y de recursos nativos; no vuelva a entrar en el documento de origen

Los límites de decodificación contabilizan trabajo del decodificador y pueden cargar de nuevo el mismo flujo filtrado durante el preflight, la compilación de la display list y el renderizado; aumentar un presupuesto es una decisión explícita del llamador

El preflight de píxeles cubre tanto la resolución física solicitada como el DPI entero del renderizador nativo tras el escalado por UserUnit; unas unidades muy pequeñas pueden requerir píxeles ráster adicionales, y unas dimensiones de página fraccionarias pueden introducir remuestreo de subpíxel cuando la imagen se vuelve a mapear sobre la página física

Los límites de conversión se aplican después de cargar el origen; configure los límites de recursos propios del cargador cuando acepte entrada no confiable

El grafo de objetos del origen se conserva, mientras que las cachés de lectura y las estadísticas de decodificación pueden quedar rellenas; la configuración de renderizado, el token de cancelación, el backend y los presupuestos de decodificación se restauran tanto en el éxito como en el fallo

Dé al convertidor acceso exclusivo a su documento de origen mientras aplica temporalmente esta configuración

Renderizado y color

Cada página debe renderizar sin un diagnóstico nativo de fallback, sin un diagnóstico descartado y sin un fallo de recurso ausente; el contenido no admitido rechaza la conversión en lugar de publicar una página incompleta

El argumento ICC debe describir sRGB con una representación matrix/TRC reconocida, los primarios estándar adaptados a D50 y la función de transferencia sRGB de la IEC; se rechazan los perfiles RGB no relacionados, los perfiles CMYK, los perfiles malformados y los perfiles basados en LUT

La salida declara un OutputIntent sRGB y metadatos XMP de PDF/A-4; un flujo de trabajo ICC personalizado de prueba o de salida ya configurado en el origen se rechaza porque su configuración del decodificador de imágenes no puede reinterpretarse de forma segura como sRGB

La compilación FPC exige su puente nativo de codecs con LittleCMS disponible y rechaza la conversión cuando falta ese backend de gestión de color

Los flujos de imágenes JPEG y JPX, incluidas las imágenes inline codificadas, tienen sus dimensiones reales de codestream inspeccionadas antes de la decodificación nativa de píxeles y deben coincidir con el diccionario de imágenes del PDF

JPEG acepta cabeceras acotadas baseline de 8 bits, secuenciales extendidas y progresivas; JPX acepta cabeceras J2K SIZ acotadas y cajas JP2 de longitud ordinaria con como mucho cuatro componentes y una precisión de componente de 16 bits como máximo

Los codecs codificados tienen un presupuesto de trabajo conservador adicional de 64 bytes por píxel de origen, y los metadatos de tile JPX están limitados a la vez por MaxInputObjects y por 1024 bytes por tile dentro de MaxRasterBytes; el presupuesto ráster por defecto de 256 MiB admite por tanto como mucho 4,194,304 píxeles de origen codificados, y los llamadores pueden aumentarlo explícitamente para imágenes mayores

La conversión JBIG2 se rechaza porque sus asignaciones internas de regiones y símbolos no pueden acotarse desde la API de cabeceras disponible; también se rechazan los codecs de imagen no terminales, las cajas JP2 de longitud extendida, los envoltorios no admitidos y los flujos de codecs envueltos que llevan DecodeParms

Los parámetros de fax CCITT deben conservar las dimensiones positivas de imagen declaradas; las anulaciones de DecodeParms.Columns y Rows que difieran del diccionario, incluido un Rows=0 desconocido, se rechazan antes de la decodificación nativa

Estas comprobaciones acotan los perfiles conocidos de cabecera y asignación que este convertidor acepta y no prometen un sandbox completo de memoria de proceso para cada decodificador nativo

Pérdida de información y de calidad

THPDFArchivalConversionReport aporta el estado de éxito y cancelación, los recuentos de páginas del origen y de páginas renderizadas, los píxeles ráster, los bytes de salida, los recuentos de anotaciones, formularios y adjuntos eliminados, un diagnóstico de fallo y los hallazgos de la validación nativa

FailureKind distingue afkNone, afkConversion, afkBudget y afkCancelled; los fallos de presupuesto tipados del convertidor aportan además BudgetMetric, BudgetObserved y BudgetLimit

Una excepción de checkpoint detiene la conversión y se informa a través del resultado nativo de fallo; los envoltorios que necesiten la categoría original de la excepción del callback deben retenerla antes de que el convertidor la capture

La archive.pdfa4.raster operación JSON y C ABI exige aceptación explícita de la pérdida de información, preserva el handle del origen, entrega el PDF validado y el informe de pérdidas, y aplica topes conservadores de presupuesto por trabajo

Verificación de conformidad

El convertidor recarga su salida de preparación y exige ValidatePDFA4 con el perfil base de PDF/A-4 antes de publicar; el validador nativo cubre su conjunto documentado y acotado de reglas y no es una prueba de todos los requisitos de ISO 19005-4

La aceptación independiente puede usar veraPDF con --flavour 4; el fixture de regresión que contiene texto sin incrustar, transparencia, una imagen RGB, un enlace, un widget de firma y un adjunto pasó veraPDF 1.30.2 sin reglas ni comprobaciones fallidas

Ejecute Tests/Delphi/Run-HotPDFArchivalTests.bat para la suite de regresión no GUI específica