THotPDF.RepairPDFUA2Structure Method

Виправляє відновлювані дефекти простору імен, атрибутів, структури та доступності PDF/UA-2 у транзакції графа з семантикою копіювання-запису та перевіряє кандидата-граф перед комітом

Оголошення

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, і відхиляє конфліктні карти ролей
RegisterReferencedNamespacesРеєструє дійсні словники просторів імен, на які посилаються структурні елементи, атрибути чи ролекомпактні карти ролей
RepairStandardStructureNamespacesПризначає простір імен PDF 2.0 стандартним ролям, коли простір імен відсутній чи недійсний, і завжди нормалізує верхньорівневий Document
RepairAttributeNamespacesКанонізує посилання на простори імен атрибутів і видаляє недійсні записи просторів імен із стандартних власників
RepairAttributeRevisionsНормалізує від'ємні чи дробові номери ревізій і видаляє осиротілі записи ревізій із масивів атрибутів
RepairListSemanticsНормалізує нумерацію, прапори продовження, недійсні типи продовження та один зміщений підпис, не вигадуючи вміст списку
RepairTableSemanticsНормалізує недійсні об'єднання та межі, видаляє недійсні локальні посилання на заголовки таблиці та переміщує один зміщений підпис
RepairRubyWarichuSequencesПеревпорядковує дочірні елементи лише тоді, коли потрібна множина ролей уже присутня
RepairPronunciationHintsВидаляє хибно типізовані підказки, обрізає недійсні посилання на лексикон і нормалізує вбудовані підтипи MIME PLS
RepairMissingAlternateTextВідновлює відсутній Alt для Figure, Formula і Form із наявного заголовка, тексту розширення, витягнутого з тим самим MCID тексту чи явного запасного в цьому порядку
RepairLanguageInheritanceПросуває дійсну мову кореня структури або явну типову мову в Catalog і видаляє недійсні чи зайві записи мови структурного рівня, коли успадкування однозначне
RepairHeadingOrderПеренумеровує лише дефекти першого заголовка та пропущеного рівня, зберігаючи порядок документа
RepairArtifactTaggingПереписує теги зазначеного вмісту, пов'язані зі структурним елементом Artifact, для вмісту виробника та завантаженої сторінки
AllowDocumentFragmentHeadingStartsСкидає контекст заголовка всередині кожного DocumentFragment для виправлення та післявиправлення валідації
RollbackOnValidationFailureВідновлює вихідний граф, коли після виправлення лишається будь-яка помилка PDF/UA-2
CustomAttributeNamespaceURIНадає явний простір імен для власників спеціальних атрибутів, чию семантику не можна безпечно вивести, з порожнім типовим значенням, що закривається зі збоєм
DefaultLanguageНадає тег мови BCP-47 лише тоді, коли ні Catalog, ні корінь структури не містять дійсної мови
FallbackAlternateTextНадає переглянутий викликачем альтернативний текст після збою всіх похідних від документа джерел, з порожнім типовим значенням, що ніколи не вигадує опис
MaxGeneratedAlternateTextCharactersОбмежує витяг тексту з тим самим MCID і за замовчуванням — 4 096 кодових одиниць UTF-16
MaxObjectsОбмежує сканування графа об'єктів і за замовчуванням — 1 000 000 об'єктів
MaxRepairsОбмежує збережені мутації і за замовчуванням — 100 000 операцій виправлення

Звіт про відновлення

THPDFUA2RepairReport повідомляє, чи змінився граф або відкочувався, чи було перевищено межу, статус валідації після виправлення, кількість переглянутих об'єктів, кількість залишкових помилок та лічильники для кожної родини виправлень, включно з альтернативним текстом, записами мови, рівнями заголовків і тегами Artifact

UnresolvedAlternateTextCount, UnresolvedLanguageCount і UnresolvedArtifactCount відрізняють семантику, що все ще потребує перегляду автором, від автоматичних мутацій

Повернений масив THPDFUA2ValidationIssues містить діагностику після виправлення, коли валідація не вдається, і стабільну специфічну для виправлення діагностику, коли межа ресурсів чи конфліктний дублікат карти ролей перериває транзакцію

Детальне перевантаження також повертає знахідки до виправлення, анотовані як crsApplied, crsUnresolved, crsRolledBack чи crsFailed, а також підраховані підсумки для кожної родини виправлень

Це перевантаження походження виконує додатковий обмежений прохід валідації до виправлення; використовуйте наявне перевантаження з трьома результатами, коли потрібні лише підсумковий звіт і проблеми

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

Приклад

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