function ValidatePdfA: TPdfAValidationResult;
ValidatePdfA käsittelee avoimen dokumentin läpi etsien jokaisen ISO 19005-1 -standardin (Cor.1:2007 mukaan lukien) määrittelemän PDF/A-vaatimustenmukaisuusmerkin:
pdfaid:part- ja pdfaid:conformance-tiedot ja joka kertoo validaattorille, mitä PDF/A-tasoa varten dokumentti on laadittu (1a, 1b, 2b, 3b, ...)/ID-taulukko (pakollinen ISO 19005-1 6.1.3:n mukaan)xmp:CreateDate ja xmp:ModifyDate XMP-paketissa (vaaditaan, kun Info-sanakirjassa on CreationDate- / ModDate-arvot kohdan 6.7.3 esimerkin 2 mukaan)pdfaExtension:schemas-säiliö, joka kuvaa pdfaid-laajennusskeemaa (vaaditaan kohdan 6.7.8 / Cor.1 mukaan)Tulos on TPdfAValidationResult-tietue:
pac1a, pac1b, pac2a, pac2b, pac2u, pac3a, pac3b, pac3u, pacNone tai pacUnknown PDF/A-merkille ilman tunnistettavaa tasoa)TPdfAValidationIssues-joukko TPdfAValidationIssue-arvoja, joka kuvaa jokaisen löydetyn ongelman. Rakennemerkit ovat pvaiMissingXmpMetadata, pvaiMissingPdfAIdentifier, pvaiMissingOutputIntent, pvaiMissingIccProfile, pvaiEncryptionPresent, pvaiMissingTrailerId, pvaiMissingXmpDates ja pvaiMissingExtensionSchema. Se raportoi myös sisältötason rikkomuksia, joita merkkien lisääminen ei korjaa: pvaiLevelAStructureMissing (taso A -vaatimus ilman tagitettua rakennetta), pvaiJavaScriptPresent, pvaiForbiddenAction, pvaiAdditionalActions, pvaiEmbeddedFilesNonConforming, pvaiLzwUsed, pvaiTransparencyForbidden, pvaiOptionalContentForbidden, pvaiForbiddenAnnotation, pvaiNeedAppearancesTrue, pvaiXfaPresent, pvaiFontNotEmbedded ja pvaiUnicodeMappingMissing (PDF/A-2u- tai PDF/A-3u-vaatimus, jonka fonteista puuttuu /ToUnicode). Tiukemmat ISO 19005 -tarkistukset lisäävät arvot pvaiTrappedTrue, pvaiForbiddenActionSubtype, pvaiTransparentColorSpace, pvaiAnnotationDictViolation, pvaiUnembeddedFont, pvaiMixedDeviceColorSpaces, pvaiUndefinedContentOperator, pvaiForbiddenRenderingIntent, pvaiExtGStateTransferFunction, pvaiImageDictionaryViolation, pvaiFormXObjectViolation, pvaiPostScriptOrRefXObject, pvaiAnnotationFlagsViolation, pvaiDeprecatedAction, pvaiMetadataFilterForbidden, pvaiStructElemTypeMissing ja pvaiRoleMapMissing. Kierros 4 lisää arvot pvaiHeaderBinaryMarkerMissing (6.1.2), pvaiExternalStreamRef (6.1.7), pvaiOutputIntentScheme (6.2.2), pvaiInfoXmpDateMismatch (6.7.3), pvaiMarkInfoMissing (6.8.2.2 Level A), pvaiAnnotationApDictViolation (6.5.3), pvaiEmbeddedFileMissingAFRelationship (PDF/A-3 liite E.2) ja pvaiJpeg2000Violation (PDF/A-2 6.2.8.3). Kierros 5 lisää arvot pvaiCidFontMissingCidToGidMap (6.3.3.2), pvaiSubsetMissingCharSet (6.3.5), pvaiSubsetMissingCidSet (6.3.5), pvaiWidgetActionForbidden (6.6.1) ja pvaiOptionalContentAsKey (PDF/A-2 6.9). Kierros 6 lisää arvot pvaiNeedsRenderingPresent (PDF/A-2 6.4.2), pvaiDestOutputProfileRef (PDF/A-3 6.2.3), pvaiEmbeddedFileMissingUF (PDF/A-3 6.8), pvaiXmpPacketBytesAttr (6.7.5) ja pvaiAnnotationToggleNoView (PDF/A-2 6.3.2). Kierros 7 (v1.73.0) lisää Pdfium-objektimallin kerroksen: pvaiPdfiumFontNotEmbedded (6.3.4, per fontti FPDFFont_GetIsEmbedded) ja pvaiPdfiumUnicodeMapError (6.3.8, per merkki FPDFText_HasUnicodeMapError); nämä asettaa TPdf.ValidatePdfA, ei erillinen tavutason ValidatePdfACompliance. Kierros 8 (v1.74.0) lisää arvot pvaiPermissionsViolation (6.1.12), pvaiTransActionForbidden (PDF/A-2 6.5.1) ja pvaiPdfiumObjectTransparency (PDF/A-1 6.4 kautta FPDFPageObj_HasTransparency). Kierros 9 (v1.75.0) lisää arvot pvaiIntegerImplementationLimit (PDF/A-2 6.1.13), pvaiBlendModeNotWhitelisted (PDF/A-2 6.2.10) ja pvaiHexStringOddDigits (6.1.6). Kierros 10 (v1.76.0) lisää arvot pvaiNameNotValidUtf8 (PDF/A-2 6.1.8), pvaiInlineImageLzwForbidden (PDF/A-2 6.1.10) ja pvaiTrueTypeDifferencesForbidden (6.3.7). Kierros 11 (v1.77.0) lisää arvot pvaiPdfiumNotDefGlyph (PDF/A-2 6.2.11.8, Pdfium-objektimalli), pvaiWordBreakMissing (Level A 6.8.3.2) ja pvaiLinkActionMissingTarget (6.6.3)pvaiMissingXmpMetadata tarkoittaa, että katalogin /Metadata-avain puuttuu, on luettamaton tai ei ratkea virtasanakirjaan, jossa ovat /Type /Metadata ja /Subtype /XMLpvaiPdfA1Pdf15Structure raportoi PDF/A-1-dokumentit, jotka sisältävät PDF 1.5 -ristiviitevirtoja tai objektivirtoja; nämä rakenteet ovat edelleen kelvollisia PDF/A-2- ja PDF/A-3-muodoissapvaiInlineImageLzwForbidden koskee sisäkkäisten kuvien suodattimia jokaisessa PDF/A-osassa: PDF/A-1 hylkää arvon /LZWDecode, ja PDF/A-2 ja PDF/A-3 hylkäävät lisäksi sisäkkäisten kuvien suodatinarvot /LZW, /LZWDecode ja /CryptpvaiImageDictionaryViolation kattaa myös PDF/A-2- ja PDF/A-3-sisäkkäiset kuvat, joiden /I- tai /Interpolate-arvo on true, Image XObject -sanakirjan /Alternates-, /OPI- ja /Interpolate true -rikkeiden lisäksipvaiAnnotationApDictViolation kattaa sekä virheelliset merkintöjen ulkoasusanakirjat, joiden /AP-tietue sisältää muita avaimia kuin /N, että merkinnät, jotka vaativat ulkoasusanakirjan mutta eivät sitä sisälläpvaiInfoXmpValueMismatch raportoi vähintään yhden läsnä olevan Info-arvon, jonka kuvattu XMP-ominaisuus puuttuu, on väärän muotoinen RDF-säiliö, eroaa Unicode-tekstinä, sisältää virheellisen päivämäärän tai edustaa toista UTC-hetkeäConformance on oikea PDF/A-taso ja Issues on tyhjäValidatePdfA on vain luku -tyyppinen tutkimus — se ei muokkaa dokumenttia, ja sen voi kutsua toistuvasti turvallisesti. Käytä sitä ennen PDF:n luovuttamista arkistojärjestelmälle, jotta vaatimustenmukaisuuspoikkeamat tulevat operaattorin tietoon. Yleiseen "mikä tämän taso on?" -tarkistukseen, joka ei tarvitse ongelmalistaa, sopii paremmin kevyempi PdfAConformance-ominaisuus
Conformance = pacNone ja tyhjä Issues-taulukko
uses System.TypInfo;
var
Outcome: TPdfAValidationResult;
Issue: TPdfAValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\report.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfA;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfAConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfAValidationIssue), Ord(Issue)));
end;