function ValidatePdfUa: TPdfUaValidationResult;
ValidatePdfUa går igenom det öppna dokumentet och letar efter PDF/UA-1-filformatsmarkörerna som definieras av ISO 14289-1:2014:
/MarkInfo << /Marked true /Suspects false >> (§7.1)./ViewerPreferences << /DisplayDocTitle true >> (§7.1)./Lang with a BCP 47 language tag (§7.2)./ID array and the absence of encryption.xmp:CreateDate / xmp:ModifyDate (recommended for Info/XMP parity).Resultatet är ett TPdfUaValidationResult-record:
puc1 (PDF/UA-1 identifierad), pucNone (ingen PDF/UA-markör) eller pucUnknown (parsing misslyckades)TPdfUaValidationIssues-mängd med noll eller flera värden: pvuaiMissingXmpMetadata, pvuaiMissingPdfUaIdentifier, pvuaiMissingExtensionSchema, pvuaiMissingDcTitle, pvuaiMissingStructTreeRoot, pvuaiMissingMarkInfo, pvuaiSuspectsTrue, pvuaiMissingDisplayDocTitle, pvuaiMissingLang, pvuaiEncryptionPresent, pvuaiMissingTrailerId, pvuaiMissingXmpDates, pvuaiFontNotEmbedded, pvuaiFontMissingToUnicode, pvuaiMissingTabsOrder, pvuaiFigureMissingAlt, pvuaiFormulaMissingAlt, pvuaiNoteMissingIdValidatePdfUa är en skrivskyddad inspektion — den ändrar inte dokumentet och är säker att anropa upprepade gånger. Använd den innan du lämnar en PDF till ett archivesystem eller en tillgänglighetskontroll för att synliggöra bristande överensstämmelse för operatören. För den vanliga kontrollen "är detta PDF/UA-1?" som inte behöver problemlistan, använd den lättare PdfUaConformance-egenskapen
Conformance = pucUnknown och en tom Issues-mängdpvuaiSuspectsTrue när ett explicit /Suspects true visas i /MarkInfo. Dokument som helt saknar nyckeln /Suspects anses uppfylla kravet på den punkten (specifikationen förbjuder bara true)N 0 R); befintliga nycklar bevaras och dictionaryn normaliseras till en direkt dictionary i den omskrivna katalogen
uses System.TypInfo;
var
Outcome: TPdfUaValidationResult;
Issue: TPdfUaValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\report.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfUa;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfUaConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfUaValidationIssue), Ord(Issue)));
end;