function ValidatePdfVT: TPdfVTValidationResult;
ValidatePdfVT parcourt le document ouvert à la recherche des marqueurs au niveau format de fichier définis par ISO 16612-2:2010 :
pdfvtid:GTS_PDFVTVersion (§6.3 Tableau 2) et pdfvtid:GTS_PDFVTModDatepdfvtid:GTS_PDFVTModDate et xmp:ModifyDate (§6.3 NOTE 1)pdfxid:GTS_PDFXVersion — PDF/VT-1 doit être PDF/X-4 (§6.2.1), tandis que PDF/VT-2 doit utiliser l’une des bases de jeux de fichiers PDF/X-4p, PDF/X-5g ou PDF/X-5pg (§6.2.2)pdfaExtension:schemas pour les espaces de noms pdfvtid et pdfxid/DPartRoot du catalogue avec un arbre DPart §6.5 exploitable : le /DPartRootNode, la /NodeNameList compatible XML NMTOKEN, les liens parents, le tableau de tableaux /DParts, les plages feuilles /Start//End et les références /DPart par page doivent couvrir l’arbre des pages exactement une fois en ordre profondeur d’abordGTS_XID, GTS_Scope et GTS_Env, le RecordLevel DPartRoot indirect utilisé par la portée Record et la frontière réservée au PDF/VT-2s pour la portée StreamFlateDecode décodés, en résolvant chaque opérande Do via les ressources héritées effectives pour faire respecter les comptages SingleUse, la visibilité des ressources et l’attribution à un destinataire unique pour la portée RecordIntent d’Image, Group de transparence isolé requis avec un espace de couleur de fusion et opérateurs marqués de contenu optionnel dans un contenu Form direct ou imbriqué/OutputIntents du catalogue avec un OutputIntent doté d’un /DestOutputProfile intégré ou d’un /DestOutputProfileRef externe approprié à la base PDF/X/ID de trailer et l’absence de /Encrypt (PDF/X interdit le chiffrement)xmp:CreateDate et xmp:ModifyDate dans XMP pour la parité Info / XMPLe résultat est un enregistrement TPdfVTValidationResult :
pvc1 (marqueur PDF/VT-1), pvc2 (marqueur PDF/VT-2), pvcNone (aucun marqueur PDF/VT) ou pvcUnknown (marqueur présent mais version au niveau fichier non reconnue)TPdfVTValidationIssues avec zéro ou plusieurs valeurs de problèmes de marqueur, de DPart, d’héritage PDF/X, d’objets récurrents et d’encapsulationpvviGtsScopeInvalidValue, pvviGtsScopeRecordWithoutRecordLevel, pvviGtsXidNotUuid, pvviGtsEnvMissing, pvviGtsXidInvalidType, pvviGtsEnvInvalidType, pvviGtsScopeStreamInVT1, pvviGtsScopeSingleUseRepeated, pvviGtsScopeRecordCrossesRecords et pvviGtsResourceNotVisiblepvviGtsEncapsulatedInvalidType, pvviGtsEncapsulatedMissingScope, pvviGtsEncapsulatedImageMissingIntent, pvviGtsEncapsulatedGroupInvalid et pvviGtsEncapsulatedOptionalContentConformance est un vrai niveau PDF/VT et que Issues est videValidatePdfVT est en lecture seule. Il vérifie les marqueurs de
format de fichier, la sémantique sélectionnée de l’arbre DPart, la portée et l’encapsulation des
XObjects récurrents, l’appariement exact des bases PDF/VT-vers-PDF/X et les propriétés
XMP qu’elles soient écrites en éléments ou en attributs RDF. Associez-le
à un moteur de preflight PDF/X pour une vérification complète au niveau contenu et,
pour le PDF/VT-2, à InspectPdfVT2sStream ou à un autre validateur complet de jeux de fichiers. PDF/VT-2s est un niveau de
conformité de flux MIME dont la version est signalée par l’en-tête du flux MIME dans
ISO 16612-2 Annexe A, et non par une valeur pdfvtid:GTS_PDFVTVersion au
niveau fichier
pvviMissingDPartRoot est émis lorsque le catalogue n’a pas de hiérarchie /DPartRoot exploitable ou lorsque l’arbre viole les exigences du §6.5, telles que des tableaux /DParts mal formés, des /Start et /DParts mélangés, une paternité d’enfants dupliquée, des noms /NodeNameList invalides ou des incohérences de profondeur, des plages de pages ne suivant pas l’ordre de l’arbre des pages, des plages d’une seule page répétant /Start comme /End ou des liens /DPart de page ne pointant pas vers le DPart feuille couvrantFlateDecode directs ; les flux de contenu avec d’autres filtres ou des filtres chaînés restent accessibles aux moteurs de preflight complets dédiéspvviModDateMismatch n’est émis que lorsque pdfvtid:GTS_PDFVTModDate et xmp:ModifyDate sont présents et que leurs valeurs diffèrent ; SaveAsPdfVT les écrit toujours avec la même valeurConformance = pvcUnknown et un ensemble Issues vide
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;