PDFium Delphi Component Docs

ValidatePdfUa Метод

Компонент: TPdf  ·  Модуль: PDFium
Исследует текущий документ на соответствие PDF/UA-1 или PDF/UA-2 и возвращает специфичные для профиля проблемы

Syntax

function ValidatePdfUa: TPdfUaValidationResult;

Description

ValidatePdfUa распознаёт PDF/UA-1 и PDF/UA-2 по XMP и применяет правила выбранного профиля

Результат — запись TPdfUaValidationResult:

Проверка PDF/UA-2 дополнительно требует четырёхзначного pdfuaid:rev, действительного PDF 2.0, упорядочивания табуляции аннотаций A/W/S, отсутствия XFA, непустых имён конфигураций необязательного содержимого, отсутствия устаревших в PDF 2.0 аннотаций Sound или Movie и явно нумерованных типов заголовочной структуры H1 через Hn

С v3.73.0 набор проблем может также содержать pvuaiNaturalLanguageUncovered, когда текст страницы вне Artifact или строка Title, Alt, ActualText либо Expansion структуры не имеет действующего объявления /Lang

С v3.74.0 набор проблем может также содержать pvuaiArtifactInStructureTree, когда объект страницы Artifact несёт MCID, заявленный деревом структуры страницы, включая артефакты разбиения на основе контуров

С v3.75.0 проблемы отображения Unicode берутся из одного прохода InspectPdfUaUnicodeCoverage в области объекта; действительный ActualText покрывает только символы своего исходного текстового объекта, тогда как символы Artifact и сгенерированные PDFium исключаются из семантического покрытия

ValidatePdfUa работает только на чтение — документ оно не меняет, и вызывать его повторно безопасно. Используйте его перед передачей PDF в архивную систему или проверку доступности, чтобы показать оператору несоответствия. Для частой проверки «это PDF/UA-1?», не требующей списка проблем, предпочитайте более лёгкое свойство PdfUaConformance

Remarks

Example

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;

See Also

PdfUaConformance, SaveAsPdfUa, SaveAsPdfUaToStream, IsTagged, ValidatePdfA