function ValidatePdfVT: TPdfVTValidationResult;
ValidatePdfVT preišče odprt dokument in poišče označevalce na ravni oblike datoteke, ki jih določa ISO 16612-2:2010:
pdfvtid:GTS_PDFVTVersion (§6.3 Tabela 2) in pdfvtid:GTS_PDFVTModDatepdfvtid:GTS_PDFVTModDate in xmp:ModifyDate (§6.3 OPOMBA 1)pdfxid:GTS_PDFXVersion — PDF/VT-1 mora biti PDF/X-4 (§6.2.1), PDF/VT-2 pa mora uporabiti eno od osnov nabora datotek PDF/X-4p, PDF/X-5g ali PDF/X-5pg (§6.2.2)pdfaExtension:schemas za imenska prostora pdfvtid in pdfxid/DPartRoot v katalogu z uporabnim drevesom DPart po §6.5: /DPartRootNode, z XML NMTOKEN združljiv /NodeNameList, povezave na starše, polje polj /DParts, obsegi listov /Start//End in reference /DPart na posamezno stran morajo drevo strani pokriti točno enkrat v globinskem vrstnem reduGTS_XID, GTS_Scope in GTS_Env, posrednim DPartRoot RecordLevel, ki ga uporablja obseg Record, in z PDF/VT-2s omejeno mejo za obseg StreamFlateDecode, ki vsak operand Do razrešijo skozi učinkovite podedovane vire, da uveljavijo števce SingleUse, vidljivost virov in lastništvo enega prejemnika za obseg RecordIntent, zahtevana izolirana prosojnost Group z barvnim prostorom mešanja ter označeni operatorji izbirne vsebine v neposredni ali gnezdeni vsebini Form/OutputIntents v katalogu z OutputIntent, ki ima vgrajen /DestOutputProfile ali zunanji /DestOutputProfileRef, primeren za osnovo PDF/X/ID v repnem delu in odsotnost /Encrypt (PDF/X prepoveduje šifriranje)xmp:CreateDate in xmp:ModifyDate v XMP za soglasje Info / XMPRezultat je zapis TPdfVTValidationResult:
pvc1 (označevalec PDF/VT-1), pvc2 (označevalec PDF/VT-2), pvcNone (brez označevalca PDF/VT) ali pvcUnknown (označevalec prisoten, vrednost različice na ravni datoteke pa neprepoznana)TPdfVTValidationIssues z nič ali več vrednostmi težav za označevalce, DPart, podedovanje PDF/X, ponavljajoče se objekte in zaprto oblikopvviGtsScopeInvalidValue, pvviGtsScopeRecordWithoutRecordLevel, pvviGtsXidNotUuid, pvviGtsEnvMissing, pvviGtsXidInvalidType, pvviGtsEnvInvalidType, pvviGtsScopeStreamInVT1, pvviGtsScopeSingleUseRepeated, pvviGtsScopeRecordCrossesRecords in pvviGtsResourceNotVisiblepvviGtsEncapsulatedInvalidType, pvviGtsEncapsulatedMissingScope, pvviGtsEncapsulatedImageMissingIntent, pvviGtsEncapsulatedGroupInvalid in pvviGtsEncapsulatedOptionalContentConformance prava raven PDF/VT in je Issues prazenValidatePdfVT deluje samo za branje. Preveri označevalce oblike
datoteke, izbrano semantiko drevesa DPart, obseg in zaprto obliko
ponavljajočih se XObject, točno parjenje PDF/VT z osnovo PDF/X ter
lastnosti XMP, ne glede na to, ali so zapisane kot elementi ali kot
atributi RDF. Za popolno preverjanje na ravni vsebine ga parite s
predtiskovnim mehanizmom PDF/X, za PDF/VT-2 pa z
InspectPdfVT2sStream ali drugim polnim
validatorjem nabora datotek. PDF/VT-2s je raven skladnosti toka MIME,
katere različico signalizira glava toka MIME iz Priloge A ISO 16612-2,
in ne vrednost pdfvtid:GTS_PDFVTVersion na ravni datoteke
pvviMissingDPartRoot se izda, ko katalog nima uporabne hierarhije /DPartRoot ali ko drevo krši zahteve §6.5, na primer napačno oblikovana polja /DParts, mešanje /Start in /DParts, podvojeno lastništvo podrejenih, neveljavna imena /NodeNameList ali neskladje globin, obsege strani, ki ne sledijo vrstnemu redu drevesa strani, enostranske obsege, ki /Start ponovijo kot /End, ali povezave /DPart strani, ki ne kažejo na pokrivajoči list DPartFlateDecode; tokovi vsebine z drugimi ali veriženimi filtri ostanejo na voljo namenskim polnim predtiskovnim mehanizmompvviModDateMismatch se izda samo, ko sta pdfvtid:GTS_PDFVTModDate in xmp:ModifyDate prisotna in si vrednosti protita; SaveAsPdfVT ju vedno zapiše z enako vrednostjoConformance = pvcUnknown in prazno množico 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;