function ValidatePdfE: TPdfEValidationResult;
ValidatePdfE durchläuft das geöffnete Dokument und sucht nach den in ISO 24517-1:2008 definierten PDF/E-1-Dateiformat-Markern:
pdfe:ISO_PDFEVersion enthält (§5 + §13.3)pdfaExtension:schemas-Beschreibung für den pdfe-Namespace (Anforderung an Erweiterungsschemas der XMP Specification 2004, geerbt über §13.1)/ISO_PDFEVersion mit einem Literal-String-Wert (§5 SHALL)/ID-Array (§6.2)xmp:CreateDate- und xmp:ModifyDate-Einträge in XMP (geerbt von ISO 19005-1 §6.7 über §13.1)Das Ergebnis ist ein TPdfEValidationResult-Record:
pec1 (PDF/E-1-Identifikator gefunden und nicht leer), pecNone (kein PDF/E-Marker) oder pecUnknown (Parsen fehlgeschlagen oder Marker vorhanden, aber Wert fehlt)TPdfEValidationIssues-Menge, die keinen oder mehrere der Werte enthält: pveiMissingXmpMetadata, pveiMissingPdfEIdentifier, pveiMissingExtensionSchema, pveiMissingInfoVersionEntry, pveiInfoVersionMismatch, pveiMissingTrailerId, pveiMissingXmpDatesConformance eine echte PDF/E-Stufe ist und Issues leer istValidatePdfE ist eine rein lesende Prüfung — sie verändert das
Dokument nicht und kann gefahrlos wiederholt aufgerufen werden. Setzen
Sie sie ein, bevor eine PDF/E-Nutzlast in ein technisches Archiv
eingespeist wird, um die Dateiformat-Level-Nonkonformitäten offenzulegen,
die diese Bibliothek erkennen kann. Für die häufige Prüfung
„Ist das PDF/E-1?“, die keine Problemliste benötigt, ziehen
Sie die schlankere Eigenschaft PdfEConformance vor
pveiInfoVersionMismatch nur, wenn sowohl Info /ISO_PDFEVersion als auch XMP pdfe:ISO_PDFEVersion vorhanden sind und auseinanderlaufen. Fehlt der Info-Eintrag, meldet der Validator ausschließlich pveiMissingInfoVersionEntry (keine falsche Diskrepanz)Conformance = pecUnknown und einer leeren Issues-Menge
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;