function ValidatePdfVT: TPdfVTValidationResult;
ValidatePdfVT käsittelee avoimen dokumentin läpi etsien ISO 16612-2:2010 -standardin määrittelemät tiedostomuototason merkit:
pdfvtid:GTS_PDFVTVersion (§6.3 taulukko 2) ja pdfvtid:GTS_PDFVTModDatepdfvtid:GTS_PDFVTModDate:n ja xmp:ModifyDate:n yhtäsuuruus (§6.3 HUOM. 1)pdfxid:GTS_PDFXVersion — PDF/VT-1:n on oltava PDF/X-4 (§6.2.1), kun taas PDF/VT-2:n on käytettävä yhtä tiedostojoukkopohjista PDF/X-4p, PDF/X-5g tai PDF/X-5pg (§6.2.2)pdfaExtension:schemas-kuvaus sekä pdfvtid- että pdfxid-nimiavaruudille/DPartRoot-tietue, jossa on käytettävä §6.5 DPart-puu: /DPartRootNode, XML NMTOKEN -yhteensopiva /NodeNameList, vanhempien linkit, /DParts-taulukkojen taulukko, lehtien /Start//End-alueet ja sivukohtaisten /DPart-viittausten on katettava sivupuu täsmälleen kerran syvyys ensin -järjestyksessäGTS_XID:n, GTS_Scope:n ja GTS_Env:n suorat arvotyypit ja sallitut arvot, Record-laajuuden käyttämä epäsuora DPartRoot RecordLevel sekä Stream-laajuuden PDF/VT-2s-rajaFlateDecode-sivu- tai Form XObject -virrat, joissa jokainen Do-operandi ratkaistaan efektiivisten perittyjen resurssien kautta valvomaan SingleUse-määrät, resurssien näkyvyys ja yksittäisen vastaanottajan omistus Record-laajuudessaIntent, vaadittu eristetty läpinäkyvyys Group sekoitusväriavaruudella sekä valinnaisen sisällön merkityt operaattorit suorassa tai sisäkkäisessä Form-sisällössä/OutputIntents-taulukko, jossa on OutputIntent, jolla on upotettu /DestOutputProfile tai ulkoinen /DestOutputProfileRef, joka sopii PDF/X-pohjaan/ID-taulukko ja /Encrypt:n puuttuminen (PDF/X kieltää salauksen)xmp:CreateDate- ja xmp:ModifyDate-tiedot XMP:ssä Info/XMP-yhteensopivuuden vuoksiTulos on TPdfVTValidationResult-tietue:
pvc1 (PDF/VT-1-merkki), pvc2 (PDF/VT-2-merkki), pvcNone (ei PDF/VT-merkkiä) tai pvcUnknown (merkki läsnä, mutta tiedostotason versio tunnistamaton)TPdfVTValidationIssues-joukko, jossa on nolla tai useampia merkkeihin, DPart-rakenteeseen, PDF/X-periytymään, toistuviin objekteihin ja kapselointiin liittyvää ongelma-arvoapvviGtsScopeInvalidValue, pvviGtsScopeRecordWithoutRecordLevel, pvviGtsXidNotUuid, pvviGtsEnvMissing, pvviGtsXidInvalidType, pvviGtsEnvInvalidType, pvviGtsScopeStreamInVT1, pvviGtsScopeSingleUseRepeated, pvviGtsScopeRecordCrossesRecords ja pvviGtsResourceNotVisiblepvviGtsEncapsulatedInvalidType, pvviGtsEncapsulatedMissingScope, pvviGtsEncapsulatedImageMissingIntent, pvviGtsEncapsulatedGroupInvalid ja pvviGtsEncapsulatedOptionalContentConformance on oikea PDF/VT-taso ja Issues on tyhjäValidatePdfVT on vain luku -tyyppinen. Se tarkistaa tiedostomuotomerkit, valitun DPart-puun semantiikan, toistuvien XObjectien laajuuden ja kapseloinnin, täsmällisen PDF/VT-PDF/X-pohjaparityksen ja XMP-ominaisuudet riippumatta siitä, onko ne kirjoitettu elementteinä vai RDF-attribuutteina. Yhdistä siihen PDF/X-preflight-moottori täyteen sisältötason varmistukseen sekä PDF/VT-2:lle InspectPdfVT2sStream tai toinen täydellinen tiedostojoukkovalidaattori. PDF/VT-2s on MIME-virran vaatimustenmukaisuustaso, jonka version ilmaisee ISO 16612-2 liitteen A MIME-virtaotsikko, ei tiedostotason pdfvtid:GTS_PDFVTVersion-arvo
pvviMissingDPartRoot nostetaan, kun katalogista puuttuu käytettävä /DPartRoot-hierarkia tai kun puu rikkoo §6.5-vaatimuksia, kuten virheellisiä /DParts-taulukoita, sekoitettuja /Start- ja /DParts-arvoja, monistettua lapsiomistusta, virheellisiä /NodeNameList-nimiä tai syvyysristiriitoja, sivualueita, jotka eivät noudata sivupuun järjestystä, yksisivuisia alueita, jotka toistavat /Start:n /End:nä, tai sivun /DPart-linkkejä, jotka eivät osoita kattavaan lehti-DPartiinFlateDecode-virtoja; sisältövirrat, joissa on muita tai ketjutettuja suodattimia, pysyvät omistautuneiden täyspreflight-moottorien käytettävissäpvviModDateMismatch nostetaan vain, kun sekä pdfvtid:GTS_PDFVTModDate että xmp:ModifyDate ovat läsnä ja niiden arvot eroavat; SaveAsPdfVT kirjoittaa ne aina samalla arvollaConformance = pvcUnknown ja tyhjä Issues-joukko
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;