function ValidatePdfVT: TPdfVTValidationResult;
ValidatePdfVT durchsucht das geöffnete Dokument nach den von ISO 16612-2:2010 definierten Markern auf Dateiformatebene:
pdfvtid:GTS_PDFVTVersion (§6.3 Table 2) und pdfvtid:GTS_PDFVTModDate.pdfvtid:GTS_PDFVTModDate und xmp:ModifyDate (§6.3 NOTE 1).pdfxid:GTS_PDFXVersion — PDF/VT-1 muss PDF/X-4 sein (§6.2.1), während PDF/VT-2 eine der File-Set-Basen PDF/X-4p, PDF/X-5g oder PDF/X-5pg verwenden muss (§6.2.2).pdfaExtension:schemas für die Namensräume pdfvtid und pdfxid./DPartRoot im Katalog mit einem verwendbaren DPart-Baum nach §6.5: /DPartRootNode, XML-NMTOKEN-kompatibles /NodeNameList, übergeordnete Verweise, Array-von-Arrays /DParts, Blattbereiche /Start//End und Seitenverweise /DPart müssen den Seitenbaum in Tiefensuche-Reihenfolge genau einmal abdecken./OutputIntents im Katalog mit einem OutputIntent, der /DestOutputProfile besitzt (übernommene PDF/X-4-Anforderung)./ID und das Fehlen von /Encrypt (PDF/X verbietet Verschlüsselung).xmp:CreateDate und xmp:ModifyDate-Einträge in XMP für Info/XMP-Parität.Das Ergebnis ist ein TPdfVTValidationResult-Record:
pvc1 (PDF/VT-1-Marker), pvc2 (PDF/VT-2-Marker), pvcNone (kein PDF/VT-Marker) oder pvcUnknown (Marker vorhanden, aber Dateiformatversion nicht erkannt).TPdfVTValidationIssues mit null oder mehr Werten: pvviMissingXmpMetadata, pvviMissingPdfVTIdentifier, pvviMissingExtensionSchema, pvviMissingPdfVTModDate, pvviModDateMismatch, pvviMissingDPartRoot, pvviMissingPdfXIdentifier, pvviMissingOutputIntent, pvviMissingIccProfile, pvviMissingTrailerId, pvviEncryptionPresent, pvviMissingXmpDates.ValidatePdfVT ist schreibgeschützt. Es prüft die Dateiformatmarker,
ausgewählte DPart-Baumsemantik, die exakte PDF/VT-zu-PDF/X-Basiszuordnung und XMP-
Eigenschaften unabhängig davon, ob sie als Elemente oder RDF-Attribute geschrieben
wurden. Kombinieren Sie es mit einer PDF/X-Preflight-Engine für eine vollständige
Prüfung auf Inhaltsebene und, für PDF/VT-2, mit einem kompletten File-Set-Validator.
PDF/VT-2s ist ein Konformitätsgrad für MIME-Streams, dessen Version durch die
MIME-Stream-Kopfzeile in ISO 16612-2 Annex A signalisiert wird, nicht durch einen
Dateiformatwert pdfvtid:GTS_PDFVTVersion.
pvviMissingDPartRoot wird ausgegeben, wenn dem Katalog eine brauchbare /DPartRoot-Hierarchie fehlt oder wenn der Baum Anforderungen aus §6.5 verletzt, etwa fehlerhafte /DParts-Arrays, gemischte /Start und /DParts, doppelte Kindzuordnung, ungültige /NodeNameList-Namen oder Tiefenfehler, Seitenbereiche, die nicht der Seitenbaumreihenfolge folgen, Einzelseitenbereiche, die /Start als /End wiederholen, oder Seiten-/DPart-Verweise, die nicht auf den umschließenden Blatt-DPart zeigen.pvviModDateMismatch wird nur ausgegeben, wenn sowohl pdfvtid:GTS_PDFVTModDate als auch xmp:ModifyDate vorhanden sind und ihre Werte unterschiedlich sind. SaveAsPdfVT schreibt sie immer mit demselben Wert.Conformance = pvcUnknown und einer leeren Menge Issues zurück.
uses System.TypInfo;
var
Outcome: TPdfVTValidationResult;
Issue: TPdfVTValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\statements.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfVT;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfVTConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfVTValidationIssue), Ord(Issue)));
end;