function ValidatePdfA: TPdfAValidationResult;
ValidatePdfA prelazi kroz otvoreni dokument u potrazi za svim markerima PDF/A usklađenosti definisanim standardom ISO 19005-1 (sa Cor.1:2007):
pdfaid:part i pdfaid:conformance, koji validátoru govori prema kom PDF/A nivou je dokument autorisan (1a, 1b, 2b, 3b, ...)/ID niz u trailer-u (obavezan po ISO 19005-1 6.1.3)xmp:CreateDate i xmp:ModifyDate u XMP paketu (potrebni kada Info rečnik drži CreationDate / ModDate vrednosti prema 6.7.3 Primer 2)pdfaExtension:schemas koji opisuje pdfaid šemu proširenja (obavezan prema 6.7.8 / Cor.1)Rezultat je zapis TPdfAValidationResult:
pac1a, pac1b, pac2a, pac2b, pac2u, pac3a, pac3b, pac3u, pacNone ili pacUnknown za PDF/A marker bez prepoznatog nivoa)TPdfAValidationIssues od vrednosti TPdfAValidationIssue koji opisuje svaki pronađeni problem. Strukturni markeri su pvaiMissingXmpMetadata, pvaiMissingPdfAIdentifier, pvaiMissingOutputIntent, pvaiMissingIccProfile, pvaiEncryptionPresent, pvaiMissingTrailerId, pvaiMissingXmpDates i pvaiMissingExtensionSchema. Prijavljuje i povrede na nivou sadržaja koje ubacivanje markera ne može da popravi: pvaiLevelAStructureMissing (zahtev za Level A bez označene strukture), pvaiJavaScriptPresent, pvaiForbiddenAction, pvaiAdditionalActions, pvaiEmbeddedFilesNonConforming, pvaiLzwUsed, pvaiTransparencyForbidden, pvaiOptionalContentForbidden, pvaiForbiddenAnnotation, pvaiNeedAppearancesTrue, pvaiXfaPresent, pvaiFontNotEmbedded i pvaiUnicodeMappingMissing (zahtev za PDF/A-2u / PDF/A-3u čiji fontovi nemaju /ToUnicode). Strožije ISO 19005 provere dodaju pvaiTrappedTrue, pvaiForbiddenActionSubtype, pvaiTransparentColorSpace, pvaiAnnotationDictViolation, pvaiUnembeddedFont, pvaiMixedDeviceColorSpaces, pvaiUndefinedContentOperator, pvaiForbiddenRenderingIntent, pvaiExtGStateTransferFunction, pvaiImageDictionaryViolation, pvaiFormXObjectViolation, pvaiPostScriptOrRefXObject, pvaiAnnotationFlagsViolation, pvaiDeprecatedAction, pvaiMetadataFilterForbidden, pvaiStructElemTypeMissing i pvaiRoleMapMissing. Runda 4 dodaje 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 Aneks E.2) i pvaiJpeg2000Violation (PDF/A-2 6.2.8.3). Runda 5 dodaje pvaiCidFontMissingCidToGidMap (6.3.3.2), pvaiSubsetMissingCharSet (6.3.5), pvaiSubsetMissingCidSet (6.3.5), pvaiWidgetActionForbidden (6.6.1) i pvaiOptionalContentAsKey (PDF/A-2 6.9). Runda 6 dodaje pvaiNeedsRenderingPresent (PDF/A-2 6.4.2), pvaiDestOutputProfileRef (PDF/A-3 6.2.3), pvaiEmbeddedFileMissingUF (PDF/A-3 6.8), pvaiXmpPacketBytesAttr (6.7.5) i pvaiAnnotationToggleNoView (PDF/A-2 6.3.2). Runda 7 (v1.73.0) dodaje sloj PDFium objektnog modela: pvaiPdfiumFontNotEmbedded (6.3.4, po fontu FPDFFont_GetIsEmbedded) i pvaiPdfiumUnicodeMapError (6.3.8, po karakteru FPDFText_HasUnicodeMapError); njih postavlja TPdf.ValidatePdfA, a ne samostalna byte-level ValidatePdfACompliance. Runda 8 (v1.74.0) dodaje pvaiPermissionsViolation (6.1.12), pvaiTransActionForbidden (PDF/A-2 6.5.1) i pvaiPdfiumObjectTransparency (PDF/A-1 6.4 preko FPDFPageObj_HasTransparency). Runda 9 (v1.75.0) dodaje pvaiIntegerImplementationLimit (PDF/A-2 6.1.13), pvaiBlendModeNotWhitelisted (PDF/A-2 6.2.10) i pvaiHexStringOddDigits (6.1.6). Runda 10 (v1.76.0) dodaje pvaiNameNotValidUtf8 (PDF/A-2 6.1.8), pvaiInlineImageLzwForbidden (PDF/A-2 6.1.10) i pvaiTrueTypeDifferencesForbidden (6.3.7). Runda 11 (v1.77.0) dodaje pvaiPdfiumNotDefGlyph (PDF/A-2 6.2.11.8, PDFium objektni model), pvaiWordBreakMissing (Level A 6.8.3.2) i pvaiLinkActionMissingTarget (6.6.3)pvaiMissingXmpMetadata znači da katalog nema ključ /Metadata, da je nečitljiv ili da se ne razrešava u tok-rečnik sa /Type /Metadata i /Subtype /XMLpvaiPdfA1Pdf15Structure prijavljuje PDF/A-1 dokumente koji sadrže PDF 1.5 cross-reference tokove ili object stream-ove; ove strukture ostaju važeće za PDF/A-2 i PDF/A-3pvaiInlineImageLzwForbidden važi za filtere inline slika u svakom PDF/A delu: PDF/A-1 odbacuje /LZWDecode, a PDF/A-2 / PDF/A-3 odbacuju i /LZW, /LZWDecode i /Crypt vrednosti filtera inline slikapvaiImageDictionaryViolation pokriva i inline slike u PDF/A-2 i PDF/A-3 čije je /I ili /Interpolate vrednost true, pored povreda rečnika Image XObject /Alternates, /OPI i /Interpolate truepvaiAnnotationApDictViolation pokriva i neispravne rečnike izgleda anotacija čiji unos /AP sadrži ključeve druge od /N i anotacijama kojima je potreban, a nedostaje, rečnik izgledapvaiInfoXmpValueMismatch prijavljuje najmanje jednu prisutnu Info vrednost čije mapirano XMP svojstvo nedostaje, ima pogrešan oblik RDF kontejnera, razlikuje se kao Unicode tekst, sadrži nevažeći datum ili predstavlja drugi UTC trenutakConformance pravi PDF/A nivo i kada je Issues prazanValidatePdfA je inspekcija koja samo čita — ne menja
dokument i bezbedno se može pozivati više puta. Koristite je pre nego što
PDF predate arhivskom sistemu, da operateru iskažete
neusklađenost. Za uobičajenu proveru „koji je ovo nivo?“ koja ne
treba listu problema, koristite lakše
svojstvo PdfAConformance
Conformance = pacNone i praznim nizom 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;