function ValidatePdfVT: TPdfVTValidationResult;
ValidatePdfVT prelazi otvoreni dokument tražeći oznake na razini formata datoteke definirane u ISO 16612-2:2010:
pdfvtid:GTS_PDFVTVersion (§6.3 Table 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 jednu od baza skupa datoteka PDF/X-4p, PDF/X-5g ili PDF/X-5pg (§6.2.2)pdfaExtension:schemas za prostor naziva pdfvtid i pdfxid/DPartRoot u katalogu s upotrebljivim DPart stablom iz §6.5: /DPartRootNode, NMTOKEN-kompatibilan XML /NodeNameList, poveznice roditelja, polje polja /DParts, rasponi /Start//End listova i reference /DPart po stranici moraju pokriti stablo stranica točno jednom u dubinskom redoslijeduGTS_XID, GTS_Scope i GTS_Env, neizravni DPartRoot RecordLevel koji koristi opseg Record te granicu samo za PDF/VT-2s za opseg StreamFlateDecode tokove stranica ili Form XObjecta, razrješujući svaki operand Do kroz djelotvorne naslijeđene resurse radi nametanja brojanja SingleUse, vidljivosti resursa i vlasništva jednog primatelja za opseg RecordIntent, obavezna izolirana transparency Group s prostorom boja miješanja te označene operatore neobaveznog sadržaja u izravnom ili ugniježđenom Form sadržaju/OutputIntents u katalogu s OutputIntentom koji ima ugrađeni /DestOutputProfile ili vanjski /DestOutputProfileRef prikladan za PDF/X bazu/ID u traileru i odsutnost /Encrypt (PDF/X zabranjuje šifriranje)xmp:CreateDate i xmp:ModifyDate u XMP-u radi podudarnosti Info / XMPRezultat je zapis TPdfVTValidationResult:
pvc1 (PDF/VT-1 oznaka), pvc2 (PDF/VT-2 oznaka), pvcNone (nema PDF/VT oznake) ili pvcUnknown (oznaka je prisutna, ali verzija na razini datoteke nije prepoznata)TPdfVTValidationIssues s nulom ili više vrijednosti problema oznaka, DParta, PDF/X nasljeđivanja, ponavljajućih objekata i enkapsulacijepvviGtsScopeInvalidValue, pvviGtsScopeRecordWithoutRecordLevel, pvviGtsXidNotUuid, pvviGtsEnvMissing, pvviGtsXidInvalidType, pvviGtsEnvInvalidType, pvviGtsScopeStreamInVT1, pvviGtsScopeSingleUseRepeated, pvviGtsScopeRecordCrossesRecords i pvviGtsResourceNotVisiblepvviGtsEncapsulatedInvalidType, pvviGtsEncapsulatedMissingScope, pvviGtsEncapsulatedImageMissingIntent, pvviGtsEncapsulatedGroupInvalid i pvviGtsEncapsulatedOptionalContentConformance stvarna PDF/VT razina, a Issues prazanValidatePdfVT je samo za čitanje. Provjerava oznake formata
datoteke, semantiku odabranog DPart stabla, opseg i enkapsulaciju
ponavljajućih XObjecta, točno uparivanje PDF/VT i PDF/X baza te XMP
svojstva bez obzira na to jesu li zapisana kao elementi ili RDF
atributi. Uparite ga s PDF/X preflight pogonom za potpunu provjeru na
razini sadržaja te, za PDF/VT-2, s
InspectPdfVT2sStream ili drugim potpunim validatorom skupa datoteka. PDF/VT-2s je razina
sukladnosti MIME toka čija se verzija signalizira zaglavljem MIME toka u
ISO 16612-2 Annex A, a ne vrijednošću
pdfvtid:GTS_PDFVTVersion na razini datoteke
pvviMissingDPartRoot se ispisuje kada katalogu nedostaje upotrebljiva hijerarhija /DPartRoot ili kada stablo krši zahtjeve §6.5 poput neispravnih polja /DParts, miješanja /Start i /DParts, dupliciranog dječjeg vlasništva, nevažećih naziva u /NodeNameList ili neusklađene dubine, raspona stranica koji ne slijede redoslijed stabla stranica, jednostraničnih raspona koji ponavljaju /Start kao /End ili poveznica /DPart stranice koje ne pokazuju na pokrivajući list DPartFlateDecode tokove; tokovi sadržaja s drugim ili ulančanim filterima ostaju dostupni namenskim potpunim preflight pogonimapvviModDateMismatch se ispisuje samo kada su i pdfvtid:GTS_PDFVTModDate i xmp:ModifyDate prisutni i njihove se vrijednosti razlikuju; SaveAsPdfVT ih uvijek zapisuje s istom vrijednošć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;