THotPDF.RepairPDFUA2Structure Method

Восстанавливает исправимые дефекты namespace, атрибутов, структуры и доступности PDF/UA-2 внутри транзакции графа copy-on-write и валидирует кандидатный граф перед фиксацией

Объявление

function RepairPDFUA2Structure(
  const Options: THPDFUA2RepairOptions;
  out Report: THPDFUA2RepairReport;
  out Issues: THPDFUA2ValidationIssues): boolean; overload;

function RepairPDFUA2Structure(
  const Options: THPDFUA2RepairOptions;
  out Report: THPDFUA2RepairReport;
  out Issues: THPDFUA2ValidationIssues;
  out Findings: THPDFComplianceFindings): boolean; overload;

Модуль

HPDFDoc

Опции восстановления

Начните с THPDFUA2RepairOptions.Default и переопределите только те решения политики, которые требует входной рабочий процесс

ПолеНазначение
NormalizeDuplicateNamespacesПерестраивает StructTreeRoot/Namespaces с одним каноническим косвенным словарём на URI и отклоняет конфликтующие role map
RegisterReferencedNamespacesРегистрирует допустимые словари пространств имён, на которые ссылаются элементы структуры, атрибуты или учитывающие пространства имён role map
RepairStandardStructureNamespacesПрисваивает пространство имён PDF 2.0 стандартным ролям, когда пространство имён отсутствует или недопустимо, и всегда нормализует верхнеуровневый Document
RepairAttributeNamespacesКанонизирует ссылки на пространства имён атрибутов и удаляет недопустимые записи пространств имён из стандартных владельцев
RepairAttributeRevisionsНормализует отрицательные или дробные номера ревизий и удаляет осиротевшие записи ревизий из массивов атрибутов
RepairListSemanticsНормализует нумерацию, флаги продолжения, недопустимые типы продолжения и одну смещённую подпись, не изобретая содержимое списка
RepairTableSemanticsНормализует недопустимые span и scope, удаляет недопустимые локальные для таблицы ссылки на заголовки и перемещает одну смещённую подпись
RepairRubyWarichuSequencesПереупорядочивает дочерние элементы только когда точный требуемый мультимножество ролей уже присутствует
RepairPronunciationHintsУдаляет неверно типизированные подсказки, отсекает недопустимые ссылки на лексиконы и нормализует встроенные подтипы MIME PLS
RepairMissingAlternateTextВосстанавливает отсутствующий Alt для Figure, Formula и Form из существующего заголовка, текста расширения, извлечённого текста того же MCID или явного fallback — в этом порядке
RepairLanguageInheritanceПродвигает допустимый язык корня структуры или явный язык по умолчанию в Catalog и удаляет недопустимые или избыточные записи языка уровня структуры, когда наследование однозначно
RepairHeadingOrderПеренумеровывает только дефекты первого заголовка и пропущенных уровней, сохраняя порядок документа
RepairArtifactTaggingПереписывает теги marked-content, связанные с элементом структуры Artifact, для содержимого производителя и загруженной страницы
AllowDocumentFragmentHeadingStartsСбрасывает контекст заголовков внутри каждого DocumentFragment как для восстановления, так и для пост-восстановительной валидации
RollbackOnValidationFailureВосстанавливает исходный граф, когда после восстановления остаётся любая ошибка PDF/UA-2
CustomAttributeNamespaceURIПоставляет явное пространство имён для владельцев пользовательских атрибутов, чья семантика не может быть безопасно выведена; пустое значение по умолчанию приводит к отказу
DefaultLanguageПоставляет языковой тег BCP-47 только когда ни Catalog, ни корень структуры не содержат допустимого языка
FallbackAlternateTextПоставляет проверенный вызывающей стороной альтернативный текст после того, как все источники, производные от документа, исчерпаны; пустое значение по умолчанию никогда не фабрикует описание
MaxGeneratedAlternateTextCharactersОграничивает извлечение текста того же MCID; по умолчанию 4,096 code unit UTF-16
MaxObjectsОграничивает сканирование объектного графа; по умолчанию 1,000,000 объектов
MaxRepairsОграничивает удерживаемые мутации; по умолчанию 100,000 операций восстановления

Отчёт о восстановлении

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

UnresolvedAlternateTextCount, UnresolvedLanguageCount и UnresolvedArtifactCount отличают семантику, всё ещё требующую авторского просмотра, от автоматических мутаций

Возвращаемый массив THPDFUA2ValidationIssues содержит пост-восстановительную диагностику при сбое валидации и стабильную диагностику, специфичную для восстановления, когда лимит ресурса или конфликтующий дубликат role map прерывает транзакцию

Детальный overload также возвращает до-восстановительные находки, помеченные как crsApplied, crsUnresolved, crsRolledBack или crsFailed, плюс счётные сводки для каждого семейства восстановления

Этот overload с provenance выполняет дополнительный ограниченный проход валидации до восстановления; используйте существующий overload с тремя выходами, когда требуются только итоговый отчёт и issues

Атомарность и безопасность

Example

var
  Options: THPDFUA2RepairOptions;
  Report: THPDFUA2RepairReport;
  Issues: THPDFUA2ValidationIssues;
begin
  Options := THPDFUA2RepairOptions.Default;
  Options.DefaultLanguage := 'en-US';
  Options.CustomAttributeNamespaceURI :=
    'https://example.com/ns/accessibility-attributes';
  if not PDF.RepairPDFUA2Structure(Options, Report, Issues) then
    raise Exception.CreateFmt('%s at %s',
      [String(Issues[0].Code), String(Issues[0].Path)]);
end;

Связанные API