function ValidatePdfUa: TPdfUaValidationResult;
ValidatePdfUa recorre el documento abierto buscando los marcadores de formato de archivo PDF/UA-1 definidos por ISO 14289-1:2014
pdfuaid:part = 1 y la descripción correspondiente pdfaExtension:schemas (§5)dc:title dentro del paquete XMP (§7.1)StructTreeRoot en el catalog o en cualquier parte del archivo (§7.1) — necesario para que el documento pueda llevar etiquetado en absoluto/MarkInfo << /Marked true /Suspects false >> (§7.1)./ViewerPreferences << /DisplayDocTitle true >> (§7.1)./Lang con una etiqueta de idioma BCP 47 (§7.2)./ID del tráiler y la ausencia de encriptación.xmp:CreateDate / xmp:ModifyDate (recomendado de cara a la de con paridad y el a e para un u sobre en con e las la además las o un u así un a o o en XMP u el un o e esto además / en a esto de a u o Info)El resultado es un registro TPdfUaValidationResult
puc1 (identificador PDF/UA-1 encontrado), pucNone (sin marcador PDF/UA) o pucUnknown (análisis fallido)TPdfUaValidationIssues que contiene cero o más valores: pvuaiMissingXmpMetadata, pvuaiMissingPdfUaIdentifier, pvuaiMissingExtensionSchema, pvuaiMissingDcTitle, pvuaiMissingStructTreeRoot, pvuaiMissingMarkInfo, pvuaiSuspectsTrue, pvuaiMissingDisplayDocTitle, pvuaiMissingLang, pvuaiEncryptionPresent, pvuaiMissingTrailerId, pvuaiMissingXmpDates, pvuaiFontNotEmbedded, pvuaiFontMissingToUnicode, pvuaiMissingTabsOrder, pvuaiFigureMissingAlt, pvuaiFormulaMissingAlt, pvuaiNoteMissingIdValidatePdfUa es una inspección de solo lectura — no modifica el documento y se puede llamar repetidamente sin riesgo. Úsalo antes de entregar un PDF a un sistema de archivo o a un comprobador de accesibilidad para mostrar la falta de conformidad al operador. Para la comprobación común de "¿es este PDF/UA-1?" que no necesita la lista de problemas, prefiere la propiedad PdfUaConformance, más ligera
ValidatePdfUa cubre los marcadores de formato de archivo, algunas heurísticas de contenido comprobables por bytes (incrustación de fuentes, ToUnicode CMaps, orden de pestañas /Tabs /S de página) y tres comprobaciones de árbol de estructura de alta confianza (Figure sin Alt/ActualText, Formula sin Alt, Note sin un ID único). No verifica el resto de reglas de PDF/UA a nivel de contenido — anidamiento de encabezados, etiquetado de widgets de formulario, atributos de tabla /TH /Scope, corrección de RoleMap, orden lógico de lectura, etc. Para una validación completa, combina este método con una herramienta externa como PAC 2024 o axesPDFValidatePdfUa sobre un documento inactivo devuelve un registro con Conformance = pucUnknown y un conjunto Issues vacíopvuaiSuspectsTrue cuando aparece explícitamente /Suspects true en /MarkInfo. Los documentos que no tienen la clave /Suspects en absoluto se consideran conformes en ese punto (la especificación solo prohíbe true)SaveAsPdfUa aplica las entradas obligatorias de ISO 14289-1 7.1 /ViewerPreferences /DisplayDocTitle true y /MarkInfo /Marked true /Suspects false incluso cuando el origen proporciona esos diccionarios de forma incompleta o como una referencia indirecta (N 0 R); las claves existentes se conservan y el diccionario se normaliza a un diccionario directo en el catálogo reescritouses System.TypInfo;
var
Outcome: TPdfUaValidationResult;
Issue: TPdfUaValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\report.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfUa;
Memo1.Lines.Add('Nivel: ' + GetEnumName(TypeInfo(TPdfUaConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfUaValidationIssue), Ord(Issue)));
end;