function ValidatePdfA: TPdfAValidationResult;
ValidatePdfA prelazi otvoreni dokument tražeći svaku oznaku PDF/A sukladnosti definiranu u ISO 19005-1 (s Cor.1:2007):
pdfaid:part i pdfaid:conformance koji validatoru govori protiv koje razine PDF/A-a je dokument autoriran (1a, 1b, 2b, 3b, ...)/ID u traileru (obavezno prema ISO 19005-1 6.1.3)xmp:CreateDate i xmp:ModifyDate u XMP paketu (obavezno kada Info rječnik nosi vrijednosti CreationDate / ModDate prema 6.7.3 Primjer 2)pdfaExtension:schemas koji opisuje pdfaid proširenu shemu (obavezno prema 6.7.8 / Cor.1)Rezultat je zapis TPdfAValidationResult:
pac1a, pac1b, pac2a, pac2b, pac2u, pac3a, pac3b, pac3u, pacNone ili pacUnknown za PDF/A oznaku bez prepoznate razine)TPdfAValidationIssues vrijednosti TPdfAValidationIssue koje opisuju svaki pronaden problem. Strukturne oznake su pvaiMissingXmpMetadata, pvaiMissingPdfAIdentifier, pvaiMissingOutputIntent, pvaiMissingIccProfile, pvaiEncryptionPresent, pvaiMissingTrailerId, pvaiMissingXmpDates i pvaiMissingExtensionSchema. Izvještava i kršenja na razini sadržaja kojima ubrizgavanje oznaka ne može doskočiti: pvaiLevelAStructureMissing (tvrdnja razine A bez označene strukture), pvaiJavaScriptPresent, pvaiForbiddenAction, pvaiAdditionalActions, pvaiEmbeddedFilesNonConforming, pvaiLzwUsed, pvaiTransparencyForbidden, pvaiOptionalContentForbidden, pvaiForbiddenAnnotation, pvaiNeedAppearancesTrue, pvaiXfaPresent, pvaiFontNotEmbedded i pvaiUnicodeMappingMissing (tvrdnja PDF/A-2u / PDF/A-3u čijim fontovima nedostaje /ToUnicode). Strožije ISO 19005 provjere dodaju pvaiTrappedTrue, pvaiForbiddenActionSubtype, pvaiTransparentColorSpace, pvaiAnnotationDictViolation, pvaiUnembeddedFont, pvaiMixedDeviceColorSpaces, pvaiUndefinedContentOperator, pvaiForbiddenRenderingIntent, pvaiExtGStateTransferFunction, pvaiImageDictionaryViolation, pvaiFormXObjectViolation, pvaiPostScriptOrRefXObject, pvaiAnnotationFlagsViolation, pvaiDeprecatedAction, pvaiMetadataFilterForbidden, pvaiStructElemTypeMissing i pvaiRoleMapMissing. 4. krug 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 Annex E.2) i pvaiJpeg2000Violation (PDF/A-2 6.2.8.3). 5. krug 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). 6. krug 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). 7. krug (v1.73.0) dodaje sloj Pdfium objektnog modela: pvaiPdfiumFontNotEmbedded (6.3.4, po fontu FPDFFont_GetIsEmbedded) i pvaiPdfiumUnicodeMapError (6.3.8, po znaku FPDFText_HasUnicodeMapError); postavlja ih TPdf.ValidatePdfA, a ne samostalna bajtovna ValidatePdfACompliance. 8. krug (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). 9. krug (v1.75.0) dodaje pvaiIntegerImplementationLimit (PDF/A-2 6.1.13), pvaiBlendModeNotWhitelisted (PDF/A-2 6.2.10) i pvaiHexStringOddDigits (6.1.6). 10. krug (v1.76.0) dodaje pvaiNameNotValidUtf8 (PDF/A-2 6.1.8), pvaiInlineImageLzwForbidden (PDF/A-2 6.1.10) i pvaiTrueTypeDifferencesForbidden (6.3.7). 11. krug (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 je ključ /Metadata kataloga odsutan, nečitljiv ili se ne razrješuje u rječnik toka s /Type /Metadata i /Subtype /XMLpvaiPdfA1Pdf15Structure izvještava PDF/A-1 dokumente koji sadrže PDF 1.5 tokove unakrsnih referenci ili tokove objekata; te strukture ostaju valjane za PDF/A-2 i PDF/A-3pvaiInlineImageLzwForbidden odnosi se na filtere ugrađenih slika u svakom PDF/A dijelu: PDF/A-1 odbacuje /LZWDecode, a PDF/A-2 / PDF/A-3 također odbacuju vrijednosti filtera /LZW, /LZWDecode i /Crypt ugrađenih slikapvaiImageDictionaryViolation pokriva i PDF/A-2 i PDF/A-3 ugrađene slike čija je vrijednost /I ili /Interpolate true, uz kršenja rječnika Image XObject /Alternates, /OPI i /Interpolate truepvaiAnnotationApDictViolation pokriva i neispravne rječnike izgleda anotacija čiji unos /AP sadrži ključeve osim /N i anotacije koje zahtijevaju, ali nemaju rječnik izgledapvaiInfoXmpValueMismatch izvještava kada barem jedna prisutna Info vrijednost ima preslikano XMP svojstvo koje je odsutno, ima krivi oblik RDF spremnika, razlikuje se kao Unicode tekst, sadrži nevažeći datum ili predstavlja drugi UTC trenutakConformance stvarna PDF/A razina, a Issues prazanValidatePdfA je pregled samo za čitanje — ne mijenja
dokument i sigurno se može pozivati više puta. Koristite ga prije
predaje PDF-a arhivskom sustavu kako bi operateru ukazali na
nesukladnost. Za uobičajenu provjeru „koja je to razina?” kojoj nije
potreban popis problema radije koristite lakše svojstvo
PdfAConformance
Conformance = pacNone i 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;