function ValidatePdfVT: TPdfVTValidationResult;
ValidatePdfVT prelazi kroz otvoreni dokument u potrazi za markerima na nivou formata datoteke definisanim standardom ISO 16612-2:2010:
pdfvtid:GTS_PDFVTVersion (§6.3 Tabela 2) i pdfvtid:GTS_PDFVTModDatepdfvtid:GTS_PDFVTModDate i xmp:ModifyDate (§6.3 NOTE 1)pdfxid:GTS_PDFXVersion — PDF/VT-1 mora biti PDF/X-4 (§6.2.1), dok PDF/VT-2 mora koristiti jedan od osnova skupa datoteka PDF/X-4p, PDF/X-5g ili PDF/X-5pg (§6.2.2)pdfaExtension:schemas za pdfvtid i pdfxid namespace-ove/DPartRoot u katalogu sa upotrebljivim §6.5 DPart stablom: /DPartRootNode, /NodeNameList kompatibilan sa XML NMTOKEN, roditeljske veze, /DParts niz nizova, opsezi listova /Start//End i reference /DPart po stranici moraju da pokriju stablo stranica tačno jednom, u dubinskom redosleduGTS_XID, GTS_Scope i GTS_Env, indirektni RecordLevel iz DPartRoot koji koristi Record scope, i granicu samo za PDF/VT-2s za Stream scopeFlateDecode tokove stranica ili Form XObject-a, razrešavajući svaki Do operand kroz efektivne nasleđene resurse, da sprovodi SingleUse brojače, vidljivost resursa i vlasništvo jednog primaoca za Record scopeIntent, obavezan izolovan transparency Group sa blending color space-om i marked operatore optional-content-a u direktnom ili ugnežđenom Form sadržaju/OutputIntents u katalogu sa OutputIntent-om koji ima ugrađeni /DestOutputProfile ili spoljašnji /DestOutputProfileRef primeren PDF/X osnovi/ID niz u trailer-u i odsustvo /Encrypt (PDF/X zabranjuje enkripciju)xmp:CreateDate i xmp:ModifyDate u XMP-u radi Info / XMP podudarnostiRezultat je zapis TPdfVTValidationResult:
pvc1 (PDF/VT-1 marker), pvc2 (PDF/VT-2 marker), pvcNone (nema PDF/VT markera) ili pvcUnknown (marker prisutan, ali verzija na nivou datoteke nije prepoznata)TPdfVTValidationIssues sa nula ili više vrednosti problema markera, DPart-a, nasleđivanja PDF/X, ponavljajućih objekata i enkapsulacijepvviGtsScopeInvalidValue, pvviGtsScopeRecordWithoutRecordLevel, pvviGtsXidNotUuid, pvviGtsEnvMissing, pvviGtsXidInvalidType, pvviGtsEnvInvalidType, pvviGtsScopeStreamInVT1, pvviGtsScopeSingleUseRepeated, pvviGtsScopeRecordCrossesRecords i pvviGtsResourceNotVisiblepvviGtsEncapsulatedInvalidType, pvviGtsEncapsulatedMissingScope, pvviGtsEncapsulatedImageMissingIntent, pvviGtsEncapsulatedGroupInvalid i pvviGtsEncapsulatedOptionalContentConformance pravi PDF/VT nivo i kada je Issues prazanValidatePdfVT samo čita. Proverava markere formata datoteke,
izabranu semantiku DPart stabla, scope i enkapsulaciju ponavljajućih
XObject-a, tačno uparivanje PDF/VT sa PDF/X osnovom i XMP
svojstva bez obzira da li su zapisana kao elementi ili RDF atributi. Uparite
ga sa PDF/X preflight mehanizmom za kompletnu verifikaciju na nivou sadržaja i,
za PDF/VT-2, sa InspectPdfVT2sStream ili drugim kompletnim validátorom skupa datoteka. PDF/VT-2s je nivo usklađenosti MIME
tokova čija se verzija signalizira zaglavljem MIME toka u
ISO 16612-2 Aneksu A, a ne vrednošću pdfvtid:GTS_PDFVTVersion na nivou
datoteke
pvviMissingDPartRoot se emituje kada katalog nema upotrebljivu /DPartRoot hijerarhiju ili kada stablo krši §6.5 zahteve poput neispravnih /DParts nizova, mešanja /Start i /DParts, dupliciranog vlasništva nad podredjenim čvorovima, nevažećih imena u /NodeNameList ili neslaganja dubine, opsega stranica koji ne prate redosled stabla stranica, jednostraničnih opsega koji ponavljaju /Start kao /End ili /DPart veza stranice koje ne ukazuju na pokrivajući list DPartFlateDecode tokove; tokovi sadržaja sa drugim ili ulančanim filterima ostaju dostupni namenskim mehanizmima za kompletan preflightpvviModDateMismatch se emituje samo kada su i pdfvtid:GTS_PDFVTModDate i xmp:ModifyDate prisutni i razlikuju se; SaveAsPdfVT ih uvek zapisuje sa istom vrednošćuConformance = pvcUnknown i praznim skupom Issues
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;