function ValidatePdfE: TPdfEValidationResult;
ValidatePdfE обходит открытый документ в поисках маркеров формата файла PDF/E-1, определённых ISO 24517-1:2008:
pdfe:ISO_PDFEVersion (§5 + §13.3)pdfaExtension:schemas для пространства имён pdfe (требование расширяемой схемы XMP Specification 2004, унаследованное через §13.1)/ISO_PDFEVersion в словаре Document Information со значением литеральной строки (§5 SHALL)/ID в трейлере (§6.2)xmp:CreateDate и xmp:ModifyDate в XMP (унаследовано из ISO 19005-1 §6.7 через §13.1)Результат — запись TPdfEValidationResult:
pec1 (идентификатор PDF/E-1 найден и непуст), pecNone (маркера PDF/E нет) или pecUnknown (разбор не удался либо маркер присутствует, но значения нет)TPdfEValidationIssues с нулём или более значений: pveiMissingXmpMetadata, pveiMissingPdfEIdentifier, pveiMissingExtensionSchema, pveiMissingInfoVersionEntry, pveiInfoVersionMismatch, pveiMissingTrailerId, pveiMissingXmpDatesConformance является реальным уровнем PDF/E, а Issues пустValidatePdfE работает только на чтение — документ оно не меняет, и вызывать его повторно безопасно. Используйте его перед отправкой полезной нагрузки PDF/E в инженерный архив, чтобы показать несоответствия формата файла, которые эта библиотека способна обнаружить. Для частой проверки «это PDF/E-1?», не требующей списка проблем, предпочитайте более лёгкое свойство PdfEConformance
pveiInfoVersionMismatch, только когда присутствуют и расходятся оба значения: Info /ISO_PDFEVersion и XMP pdfe:ISO_PDFEVersion. Когда запись Info отсутствует, проверяющий сообщает только pveiMissingInfoVersionEntry (без ложного несоответствия)Conformance = pecUnknown и пустым набором Issues
uses System.TypInfo;
var
Outcome: TPdfEValidationResult;
Issue: TPdfEValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\drawing.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfE;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfEConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfEValidationIssue), Ord(Issue)));
end;