function ValidatePdfE: TPdfEValidationResult;
ValidatePdfE recorre el documento abierto buscando los marcadores de formato de archivo PDF/E-1 definidos por ISO 24517-1:2008:
pdfe:ISO_PDFEVersion (§5 + §13.3)pdfaExtension:schemas correspondiente para el espacio de nombres pdfe (requisito de esquema de extensión de XMP Specification 2004, heredado vía §13.1)/ISO_PDFEVersion del Document Information Dictionary con un valor de cadena literal (§5 SHALL)/ID en el trailer (§6.2)xmp:CreateDate y xmp:ModifyDate en XMP (heredadas de ISO 19005-1 §6.7 vía §13.1)El resultado es un registro TPdfEValidationResult:
pec1 (identificador PDF/E-1 encontrado y no vacío), pecNone (sin marcador PDF/E) o pecUnknown (fallo de análisis o marcador presente pero valor ausente)TPdfEValidationIssues que contiene cero o más valores: pveiMissingXmpMetadata, pveiMissingPdfEIdentifier, pveiMissingExtensionSchema, pveiMissingInfoVersionEntry, pveiInfoVersionMismatch, pveiMissingTrailerId, pveiMissingXmpDatesConformance es un nivel real de PDF/E y Issues está vacíoValidatePdfE es una inspección de solo lectura — no modifica
el documento y es seguro llamarla repetidamente. Úsela antes de enviar una
carga PDF/E a un archivo de ingeniería para hacer visibles las
no conformidades a nivel de formato de archivo que esta biblioteca puede detectar. Para la
comprobación común de "¿es este PDF/E-1?" que no necesita la lista de
problemas, prefiera la propiedad más ligera PdfEConformance
pveiInfoVersionMismatch solo cuando tanto Info /ISO_PDFEVersion como XMP pdfe:ISO_PDFEVersion están presentes y discrepan. Cuando la entrada Info está ausente, el validador informa únicamente pveiMissingInfoVersionEntry (sin una discrepancia espuria)Conformance = pecUnknown y un conjunto Issues vacío
uses System.TypInfo;
var
Outcome: TPdfEValidationResult;
Issue: TPdfEValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\drawing.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfE;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfEConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfEValidationIssue), Ord(Issue)));
end;