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
| Campo | Propósito |
|---|---|
Profile | Selecciona la detección automática por metadatos, la validación base, de ingeniería o de archivos asociados |
MaxObjects | Acota el traversal iterativo del object graph y por defecto admite 1,000,000 de objetos |
MaxIssues | Acota los diagnósticos retenidos y por defecto admite 1,024 issues |
MaxDecodedBytes | Acota los bytes acumulados decodificados de metadatos, ICC y content streams, con un default de 64 MiB |
MaxContentTokens | Acota los tokens acumulados de content streams, con un default de 4,000,000 de tokens |
CheckEmbeddedFonts | Verifica que las fuentes de renderizado tengan un programa de fuente incrustado |
CheckAnnotationAppearances | Verifica los flags de anotaciones y los appearance streams normales |
CheckOptionalContent | Verifica los nombres y la unicidad de las configuraciones de optional content |
CheckColourSpaces | Verifica el color de device pintado, los profiles ICC, los output intents, los defaults, las imágenes, los shadings, los forms y los transparency groups |
CheckTransparency | Verifica el alpha pintado, los soft masks, los blend modes y la cobertura del blending space a nivel de página |
CheckCompositeFonts | Verifica los descendientes Type 0, el CIDSystemInfo, la compatibilidad del CMap y las restricciones del CIDToGIDMap |
CheckMetadataPackets | Verifica 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