function ValidatePdfA: TPdfAValidationResult;
ValidatePdfA preišče odprt dokument in poišče vsak označevalec skladnosti s PDF/A, ki ga določa ISO 19005-1 (s Cor.1:2007):
pdfaid:part in pdfaid:conformance, ki pove validatorju, proti kateri ravni PDF/A je bil dokument ustvarjen (1a, 1b, 2b, 3b, ...)/ID v repnem delu (obvezno po ISO 19005-1 6.1.3)xmp:CreateDate in xmp:ModifyDate v paketu XMP (zahtevano, kadar slovar Info vsebuje vrednosti CreationDate / ModDate, po 6.7.3 Primer 2)pdfaExtension:schemas, ki opisuje razširitveno shemo pdfaid (zahtevan po 6.7.8 / Cor.1)Rezultat je zapis TPdfAValidationResult:
pac1a, pac1b, pac2a, pac2b, pac2u, pac3a, pac3b, pac3u, pacNone ali pacUnknown za označevalec PDF/A brez prepoznane ravni)TPdfAValidationIssues vrednosti TPdfAValidationIssue, ki opisuje vsako najdeno težavo. Strukturni označevalci so pvaiMissingXmpMetadata, pvaiMissingPdfAIdentifier, pvaiMissingOutputIntent, pvaiMissingIccProfile, pvaiEncryptionPresent, pvaiMissingTrailerId, pvaiMissingXmpDates in pvaiMissingExtensionSchema. Poroča tudi o kršitvah na ravni vsebine, ki jih vstavljanje označevalcev ne more popraviti: pvaiLevelAStructureMissing (zahteva po ravni A brez označene strukture), pvaiJavaScriptPresent, pvaiForbiddenAction, pvaiAdditionalActions, pvaiEmbeddedFilesNonConforming, pvaiLzwUsed, pvaiTransparencyForbidden, pvaiOptionalContentForbidden, pvaiForbiddenAnnotation, pvaiNeedAppearancesTrue, pvaiXfaPresent, pvaiFontNotEmbedded in pvaiUnicodeMappingMissing (zahteva po PDF/A-2u / PDF/A-3u s pisavami brez /ToUnicode). Strožja preverjanja ISO 19005 dodajajo pvaiTrappedTrue, pvaiForbiddenActionSubtype, pvaiTransparentColorSpace, pvaiAnnotationDictViolation, pvaiUnembeddedFont, pvaiMixedDeviceColorSpaces, pvaiUndefinedContentOperator, pvaiForbiddenRenderingIntent, pvaiExtGStateTransferFunction, pvaiImageDictionaryViolation, pvaiFormXObjectViolation, pvaiPostScriptOrRefXObject, pvaiAnnotationFlagsViolation, pvaiDeprecatedAction, pvaiMetadataFilterForbidden, pvaiStructElemTypeMissing in pvaiRoleMapMissing. Krog 4 doda pvaiHeaderBinaryMarkerMissing (6.1.2), pvaiExternalStreamRef (6.1.7), pvaiOutputIntentScheme (6.2.2), pvaiInfoXmpDateMismatch (6.7.3), pvaiMarkInfoMissing (6.8.2.2 raven A), pvaiAnnotationApDictViolation (6.5.3), pvaiEmbeddedFileMissingAFRelationship (PDF/A-3 Priloga E.2) in pvaiJpeg2000Violation (PDF/A-2 6.2.8.3). Krog 5 doda pvaiCidFontMissingCidToGidMap (6.3.3.2), pvaiSubsetMissingCharSet (6.3.5), pvaiSubsetMissingCidSet (6.3.5), pvaiWidgetActionForbidden (6.6.1) in pvaiOptionalContentAsKey (PDF/A-2 6.9). Krog 6 doda pvaiNeedsRenderingPresent (PDF/A-2 6.4.2), pvaiDestOutputProfileRef (PDF/A-3 6.2.3), pvaiEmbeddedFileMissingUF (PDF/A-3 6.8), pvaiXmpPacketBytesAttr (6.7.5) in pvaiAnnotationToggleNoView (PDF/A-2 6.3.2). Krog 7 (v1.73.0) doda plast objektnega modela Pdfium: pvaiPdfiumFontNotEmbedded (6.3.4, na pisavo FPDFFont_GetIsEmbedded) in pvaiPdfiumUnicodeMapError (6.3.8, na znak FPDFText_HasUnicodeMapError); ti nastavita TPdf.ValidatePdfA in ne samostojni preverjanje na ravni bajtov ValidatePdfACompliance. Krog 8 (v1.74.0) doda pvaiPermissionsViolation (6.1.12), pvaiTransActionForbidden (PDF/A-2 6.5.1) in pvaiPdfiumObjectTransparency (PDF/A-1 6.4 prek FPDFPageObj_HasTransparency). Krog 9 (v1.75.0) doda pvaiIntegerImplementationLimit (PDF/A-2 6.1.13), pvaiBlendModeNotWhitelisted (PDF/A-2 6.2.10) in pvaiHexStringOddDigits (6.1.6). Krog 10 (v1.76.0) doda pvaiNameNotValidUtf8 (PDF/A-2 6.1.8), pvaiInlineImageLzwForbidden (PDF/A-2 6.1.10) in pvaiTrueTypeDifferencesForbidden (6.3.7). Krog 11 (v1.77.0) doda pvaiPdfiumNotDefGlyph (PDF/A-2 6.2.11.8, objektni model Pdfium), pvaiWordBreakMissing (raven A 6.8.3.2) in pvaiLinkActionMissingTarget (6.6.3)pvaiMissingXmpMetadata pomeni, da ključ /Metadata v katalogu manjka, da je neberljiv ali da se ne razreši v tokovni slovar s /Type /Metadata in /Subtype /XMLpvaiPdfA1Pdf15Structure poroča o dokumentih PDF/A-1, ki vsebujejo tokove navzkrižnih referenc ali tokove objektov iz PDF 1.5; te strukture ostanejo veljavne za PDF/A-2 in PDF/A-3pvaiInlineImageLzwForbidden velja za filtre vgrajenih slik v vsakem delu PDF/A: PDF/A-1 zavrača /LZWDecode, PDF/A-2 in PDF/A-3 pa poleg tega zavračata vgrajenoslikovne vrednosti filtrov /LZW, /LZWDecode in /CryptpvaiImageDictionaryViolation pokriva tudi vgrajene slike PDF/A-2 in PDF/A-3 z vrednostjo /I ali /Interpolate true, poleg kršitev slovarja Image XObject /Alternates, /OPI in /Interpolate truepvaiAnnotationApDictViolation pokriva tako napačno oblikovane slovarje izgleda opomb, katerih vnos /AP vsebuje ključe drugačne od /N, kot opombe, ki slovar izgleda zahtevajo, a ga nimajopvaiInfoXmpValueMismatch poroča o vsaj eni prisotni vrednosti Info, katere pripadajoča lastnost XMP manjka, ima napačno obliko vsebnika RDF, se razlikuje kot Unicode besedilo, vsebuje neveljaven datum ali predstavlja drug trenutek UTCConformance prava raven PDF/A in je Issues prazenValidatePdfA je pregled v načinu samo za branje — dokumenta ne spreminja in ga je varno klicati večkrat zapored. Uporabite ga, preden PDF izročite arhivskemu sistemu, da operaterju razkrije neskladnost. Za pogost pregled »katere ravni je ta dokument?«, ki ne potrebuje seznama težav, raje uporabite lažjo lastnost PdfAConformance
Conformance = pacNone in praznim poljem Issues
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;