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, а також підраховані підсумки для кожної родини виправлень
Це перевантаження походження виконує додатковий обмежений прохід валідації до виправлення; використовуйте наявне перевантаження з трьома результатами, коли потрібні лише підсумковий звіт і проблеми
Атомарність і безпека
- Кожна мутація бере участь у транзакції графа документа, включно з новоствореними непрямими словниками просторів імен
- Дублікати словників просторів імен об'єднуються лише тоді, коли їхні зіставлення ролей збігаються
- Семантика спеціальних атрибутів ніколи не вигадується, якщо явно не надано
CustomAttributeNamespaceURI - Альтернативний текст ніколи не фабрикується, якщо явно не надано
FallbackAlternateText - Редагування вмісту сторінок виробника інсценуються, поки валідація не вдається, тоді як редагування завантажених потоків лишаються всередині транзакції графа
- Двозначні перетини таблиць, відсутні структурні дочірні елементи, конфліктні ідентифікатори, нерозвязані цілі продовження та відсутня семантика заголовків ніколи не вгадуються
- Типова політика відкочує повне виправлення, коли лишаються не пов'язані з ним помилки PDF/UA-2
- Завантажений і виробничий графи використовують той самий шлях обмеженої валідації та виправлення
Приклад
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;