Метод THotPDF.ValidatePDFA4

Проверяет сгенерированный или загруженный граф объектов на соответствие поддерживаемым профилям PDF/A-4 base, PDF/A-4e engineering или PDF/A-4f associated files и возвращает стабильную структурированную диагностику

Объявление

function ValidatePDFA4(
  const Options: THPDFPDFA4ValidationOptions;
  out Issues: THPDFPDFA4ValidationIssues): boolean; overload;

function ValidatePDFA4(
  const Options: THPDFPDFA4ValidationOptions;
  out Findings: THPDFComplianceFindings): boolean; overload;

Модуль

HPDFDoc

Типы профиля и критичности

THPDFPDFA4Profile = (
  p4pAutomatic,
  p4pBase,
  p4pEngineering,
  p4pAssociatedFiles
);

THPDFPDFA4IssueSeverity = (
  p4isWarning,
  p4isError
);

THPDFPDFA4Profile выбирает вывод метаданных или явный профиль соответствия, а THPDFPDFA4IssueSeverity отличает предупреждающую диагностику от ошибок валидации

Опции

ПолеНазначение
ProfileВыбирает автоматическое определение по метаданным или проверку профиля base, engineering либо associated files
MaxObjectsОграничивает итеративный обход графа объектов, по умолчанию 1,000,000 объектов
MaxIssuesОграничивает объём сохраняемой диагностики, по умолчанию 1,024 записей
MaxDecodedBytesОграничивает суммарный объём декодированных байтов метаданных, ICC и контентных потоков, по умолчанию 64 MiB
MaxContentTokensОграничивает суммарное количество токенов контентных потоков, по умолчанию 4,000,000 токенов
CheckEmbeddedFontsПроверяет, что шрифты для отрисовки имеют встроенную программу шрифта
CheckAnnotationAppearancesПроверяет флаги аннотаций и потоки внешнего вида normal
CheckOptionalContentПроверяет имена конфигураций optional content и их уникальность
CheckColourSpacesПроверяет использованные device-цвета, ICC-профили, output intents, значения по умолчанию, изображения, shadings, формы и группы прозрачности
CheckTransparencyПроверяет использованную альфу, soft masks, blend modes и покрытие страницы blending space
CheckCompositeFontsПроверяет descendants шрифтов Type 0, CIDSystemInfo, совместимость CMap и ограничения CIDToGIDMap
CheckMetadataPacketsПроверяет каждый поток метаданных на соблюдение требований UTF-8, заголовка пакета, RDF-обёртки и идентификации PDF/A

Диагностика

Каждая запись THPDFPDFA4ValidationIssue сообщает критичность, стабильный namespaced-код, применимый пункт ISO 19005-4, путь к объекту, номер объекта, нумеруемый с нуля индекс страницы, если он известен, и человекочитаемое сообщение

Перегрузка с THPDFComplianceFindings открывает тот же обход через общую машиночитаемую модель findings с профилем PDF/A-4 и состоянием ремонта crsNotAttempted

Валидатор охватывает идентификацию PDF 2.0, trailer ID и состояние шифрования, каждый пакет метаданных, ограничения Info, заголовки ICC и число каналов, output intents документа и страниц, использованные device-цвета, унаследованное состояние графики в массивах контентных потоков и вложенных Form XObject, image masks, shadings, прозрачность, встраивание шрифтов для отрисовки, связи составных шрифтов, аннотации и их внешние виды, ограничения AcroForm, действия и дополнительные действия, связанные файлы, optional content, внешние ссылки, а также специфичные для профиля правила 3D или вложений

Диагностика цвета и прозрачности строится на paint-операторах, а не только на операторах установки цвета; токенизация контента и повторное использование декодированных потоков кэшируются, при этом каждый вызов по-прежнему вычисляет унаследованное состояние графики для своей страницы или Form-контекста

Лимиты декодированных байтов, контентных токенов, объектов и сохраняемых записей диагностики срабатывают по принципу fail-closed со стабильными findings pdfa4.validation.*, не позволяя неограниченной работе продолжиться

Пример

var
  Options: THPDFPDFA4ValidationOptions;
  Issues: THPDFPDFA4ValidationIssues;
begin
  Options := THPDFPDFA4ValidationOptions.Default;
  Options.Profile := p4pAutomatic;
  if not PDF.ValidatePDFA4(Options, Issues) then
    raise Exception.CreateFmt('%s at %s',
      [String(Issues[0].Code), String(Issues[0].Path)]);
end;

Поведение генерации

EndDoc автоматически запускает валидатор для '4', '4E' и '4F' и выбрасывает исключение перед сериализацией, если остаётся ошибка

При генерации PDF/A-4 запись Info в trailer опускается, PDF/A-4f всегда создаёт обязательное дерево имён EmbeddedFiles, а аннотации вложений файлов принимаются только в PDF/A-4f, где встроенный поток, Filespec, отношение AF, массив AF в Catalog и дерево имён записываются вместе

Связанные API