function ValidatePdfA: TPdfAValidationResult;
ValidatePdfA recorre el documento abierto buscando todos los
marcadores de conformidad PDF/A definidos por ISO 19005-1 (con Cor.1:2007)
pdfaid:part y pdfaid:conformance, que indica al validador contra qué nivel PDF/A se creó el documento (1a, 1b, 2b, 3b, ...)OutputIntent con un perfil ICC incrustado — necesario para que cualquier color dependiente del dispositivo pueda reproducirse en consumidores PDF/A/ID en el trailer (obligatoria según ISO 19005-1 6.1.3)xmp:CreateDate y xmp:ModifyDate en el paquete XMP (obligatorios cuando el diccionario Info contiene valores CreationDate / ModDate según 6.7.3 Example 2)pdfaExtension:schemas que describe el esquema de extensión pdfaid (obligatorio según 6.7.8 / Cor.1)El resultado es un registro TPdfAValidationResult:
pac1a, pac1b, pac2a, pac2b, pac2u, pac3a, pac3b, pac3u, pacNone, o pacUnknown para un marcador PDF/A sin nivel reconocido)TPdfAValidationIssues de valores TPdfAValidationIssue que describe cada problema detectado. Los marcadores estructurales son pvaiMissingXmpMetadata, pvaiMissingPdfAIdentifier, pvaiMissingOutputIntent, pvaiMissingIccProfile, pvaiEncryptionPresent, pvaiMissingTrailerId, pvaiMissingXmpDates y pvaiMissingExtensionSchema. También informa de infracciones a nivel de contenido que la inyección de marcadores no puede corregir: pvaiLevelAStructureMissing (una declaración de nivel A sin estructura etiquetada), pvaiJavaScriptPresent, pvaiForbiddenAction, pvaiAdditionalActions, pvaiEmbeddedFilesNonConforming, pvaiLzwUsed, pvaiTransparencyForbidden, pvaiOptionalContentForbidden, pvaiForbiddenAnnotation, pvaiNeedAppearancesTrue, pvaiXfaPresent, pvaiFontNotEmbedded y pvaiUnicodeMappingMissing (una declaración PDF/A-2u / PDF/A-3u cuyas fuentes carecen de /ToUnicode)ValidatePdfA es una inspección de solo lectura — no modifica
el documento y es seguro llamarlo repetidamente. Úsalo antes de entregar un
PDF a un sistema de archivo para mostrar la falta de conformidad al
operador. Para la comprobación común de "¿qué nivel es este?" que no
necesita la lista de problemas, prefiere la propiedad
PdfAConformance, más ligera
ValidatePdfA ahora señala numerosas infracciones a nivel de contenido — JavaScript y otras acciones prohibidas, archivos incrustados, LZWDecode, transparencia, contenido opcional, subtipos de anotación prohibidos, /NeedAppearances y /XFA de AcroForm, y fuentes cuyos descriptores no contienen ningún programa de fuente incrustado — además de los marcadores estructurales. Las comprobaciones de transparencia, contenido opcional y archivos incrustados se aplican según la parte de PDF/A declarada (prohibidas en PDF/A-1; permitidas en PDF/A-2 y PDF/A-3). Sigue siendo una inspección rápida a nivel de bytes en lugar de un validador exhaustivo (no analiza, por ejemplo, los espacios de color ni la cobertura de fuentes glifo a glifo), así que combínalo con un validador completo como veraPDF cuando se requiera una certificación exhaustivaValidatePdfA sobre un documento inactivo devuelve un registro con Conformance = pacNone y un array Issues vacíouses System.TypInfo;
var
Outcome: TPdfAValidationResult;
Issue: TPdfAValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\report.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfA;
Memo1.Lines.Add('Nivel: ' + GetEnumName(TypeInfo(TPdfAConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfAValidationIssue), Ord(Issue)));
end;