Método THotPDF.ValidatePDFA4

Valida un object graph generado o cargado contra el profile base PDF/A-4, el de ingeniería PDF/A-4e o el de archivos asociados PDF/A-4f compatibles, y devuelve diagnósticos estructurados estables

Declaración

function ValidatePDFA4(
  const Options: THPDFPDFA4ValidationOptions;
  out Issues: THPDFPDFA4ValidationIssues): boolean; overload;

function ValidatePDFA4(
  const Options: THPDFPDFA4ValidationOptions;
  out Findings: THPDFComplianceFindings): boolean; overload;

Unidad

HPDFDoc

Tipos de profile y severidad

THPDFPDFA4Profile = (
  p4pAutomatic,
  p4pBase,
  p4pEngineering,
  p4pAssociatedFiles
);

THPDFPDFA4IssueSeverity = (
  p4isWarning,
  p4isError
);

THPDFPDFA4Profile selecciona la inferencia por metadatos o un profile de conformidad explícito, mientras que THPDFPDFA4IssueSeverity distingue los diagnósticos informativos de los errores de validación

Opciones

CampoPropósito
ProfileSelecciona la detección automática por metadatos, la validación base, de ingeniería o de archivos asociados
MaxObjectsAcota el traversal iterativo del object graph y por defecto admite 1,000,000 de objetos
MaxIssuesAcota los diagnósticos retenidos y por defecto admite 1,024 issues
MaxDecodedBytesAcota los bytes acumulados decodificados de metadatos, ICC y content streams, con un default de 64 MiB
MaxContentTokensAcota los tokens acumulados de content streams, con un default de 4,000,000 de tokens
CheckEmbeddedFontsVerifica que las fuentes de renderizado tengan un programa de fuente incrustado
CheckAnnotationAppearancesVerifica los flags de anotaciones y los appearance streams normales
CheckOptionalContentVerifica los nombres y la unicidad de las configuraciones de optional content
CheckColourSpacesVerifica el color de device pintado, los profiles ICC, los output intents, los defaults, las imágenes, los shadings, los forms y los transparency groups
CheckTransparencyVerifica el alpha pintado, los soft masks, los blend modes y la cobertura del blending space a nivel de página
CheckCompositeFontsVerifica los descendientes Type 0, el CIDSystemInfo, la compatibilidad del CMap y las restricciones del CIDToGIDMap
CheckMetadataPacketsVerifica cada metadata stream por las restricciones de UTF-8, packet header, envelope RDF e identificación PDF/A

Diagnósticos

Cada THPDFPDFA4ValidationIssue reporta la severidad, un código con namespace estable, la cláusula aplicable de ISO 19005-4, la ruta del objeto, el número de objeto, el índice de página basado en cero cuando se conoce y un mensaje legible para personas

El overload con THPDFComplianceFindings expone el mismo traversal a través del modelo de findings compartido legible por máquina, con el profile PDF/A-4 y el estado de reparación crsNotAttempted

El validador cubre la identificación PDF 2.0, el ID del trailer y el estado de cifrado, cada metadata packet, las restricciones de Info, los headers ICC y los conteos de canales, los output intents del documento y de página, el color de device pintado, el graphics state heredado a través de arrays de content streams y Form XObjects anidados, las image masks, los shadings, la transparencia, la incrustación de fuentes renderizadas, las relaciones de fuentes compuestas, las anotaciones y apariencias, las restricciones de AcroForm, las actions y additional actions, los archivos asociados, el optional content, las referencias externas y las reglas de 3D o adjuntos específicas del profile

Los findings de color y transparencia se basan en los operadores de pintado y no solo en los operadores de ajuste de color; la tokenización del contenido y la reutilización de streams decodificados se cachean, aunque cada invocación sigue evaluando el graphics state heredado para su propio contexto de página o Form

Los límites de bytes decodificados, tokens de contenido, objetos e issues retenidos fallan de forma cerrada con findings estables pdfa4.validation.* antes de que el trabajo sin límites pueda continuar

Ejemplo

var
  Options: THPDFPDFA4ValidationOptions;
  Issues: THPDFPDFA4ValidationIssues;
begin
  Options := THPDFPDFA4ValidationOptions.Default;
  Options.Profile := p4pAutomatic;
  if not PDF.ValidatePDFA4(Options, Issues) then
    raise Exception.CreateFmt('%s at %s',
      [String(Issues[0].Code), String(Issues[0].Path)]);
end;

Comportamiento de generación

EndDoc ejecuta automáticamente el validador para '4', '4E' y '4F' y lanza antes de la serialización si queda algún error

La generación PDF/A-4 omite la entrada Info del trailer, PDF/A-4f siempre crea el name tree de EmbeddedFiles requerido, y las anotaciones de adjuntos de archivo solo las acepta PDF/A-4f, donde el stream incrustado, el Filespec, la relación AF, el array AF del Catalog y el name tree se emiten juntos

APIs relacionadas