THotPDF.RepairPDFUA2Structure Method
Naprawia odzyskiwalne defekty PDF/UA-2: przestrzenie nazw, atrybuty, struktury i semantykę dostępności wewnątrz transakcji grafu copy-on-write, walidując kandydacki graf przed zatwierdzeniem
Deklaracja
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;
Jednostka
HPDFDoc
Opcje naprawy
Zacznij od THPDFUA2RepairOptions.Default i nadpisz tylko te decyzje polityki, których wymaga przepływ pracy z danym wejściem
| Pole | Przeznaczenie |
|---|---|
NormalizeDuplicateNamespaces | Odbudowuje StructTreeRoot/Namespaces z jednym kanonicznym pośrednim słownikiem na URI i odrzuca konfliktowe mapy ról |
RegisterReferencedNamespaces | Rejestruje poprawne słowniki przestrzeni nazw odwoływane przez elementy struktury, atrybuty lub mapy ról świadome przestrzeni nazw |
RepairStandardStructureNamespaces | Przypisuje przestrzeń nazw PDF 2.0 rolom standardowym, gdy przestrzeń nazw jest brakująca lub nieprawidłowa, i zawsze normalizuje najwyższy poziom Document |
RepairAttributeNamespaces | Kanonicznie zapisuje odwołania do przestrzeni nazw atrybutów i usuwa nieprawidłowe wpisy przestrzeni nazw ze standardowych właścicieli |
RepairAttributeRevisions | Normalizuje ujemne lub ułamkowe numery rewizji i usuwa osierocone wpisy rewizji z tablic atrybutów |
RepairListSemantics | Normalizuje numerację, flagi kontynuacji, nieprawidłowe typy kontynuacji i pojedynczy źle umieszczony podpis, nie wymyślając zawartości list |
RepairTableSemantics | Normalizuje nieprawidłowe span i scope, usuwa nieprawidłowe odwołania do nagłówków lokalnych dla tabeli i przenosi pojedynczy źle umieszczony podpis |
RepairRubyWarichuSequences | Zmienia kolejność dzieci tylko wtedy, gdy dokładnie wymagany multiset ról już występuje |
RepairPronunciationHints | Usuwa źle wpisane podpowiedzi wymowy, przycina nieprawidłowe odwołania do leksykonów i normalizuje osadzone subtypy MIME PLS |
RepairMissingAlternateText | Odtwarza brakujące Alt dla Figure, Formula i Form z istniejącego tytułu, tekstu rozszerzenia, tekstu wyekstrahowanego z tego samego MCID albo jawnego fallbacku — w tej kolejności |
RepairLanguageInheritance | Promuje poprawny język korzenia struktury albo jawny język domyślny do Catalog i usuwa nieprawidłowe lub redundantne wpisy języka na poziomie struktury, gdy dziedziczenie jest jednoznaczne |
RepairHeadingOrder | Ponumeruje ponownie tylko defekty pierwszego nagłówka i pominiętych poziomów, zachowując kolejność dokumentu |
RepairArtifactTagging | Przepisuje tagi marked-content powiązane z elementem struktury Artifact dla zawartości producenta i wczytanych stron |
AllowDocumentFragmentHeadingStarts | Resetuje kontekst nagłówków wewnątrz każdego DocumentFragment zarówno dla naprawy, jak i walidacji posnaprawczej |
RollbackOnValidationFailure | Przywraca pierwotny graf, gdy po naprawie pozostanie jakikolwiek błąd PDF/UA-2 |
CustomAttributeNamespaceURI | Dostarcza jawną przestrzeń nazw dla niestandardowych właścicieli atrybutów, których semantyki nie da się bezpiecznie wywnioskować; domyślnie pusta, co zawieka domknięcie (fail closed) |
DefaultLanguage | Dostarcza tag języka BCP-47 tylko wtedy, gdy ani Catalog, ani korzeń struktury nie zawiera poprawnego języka |
FallbackAlternateText | Dostarcza tekst alternatywny sprawdzony przez wywołującego po wyczerpaniu wszystkich źródeł z dokumentu; domyślnie pusty, więc opis nigdy nie jest fabrykowany |
MaxGeneratedAlternateTextCharacters | Ogranicza ekstrakcję tekstu z tego samego MCID; domyślnie 4 096 jednostek kodowych UTF-16 |
MaxObjects | Ogranicza skan grafu obiektów; domyślnie 1 000 000 obiektów |
MaxRepairs | Ogranicza liczbę przechowywanych mutacji; domyślnie 100 000 operacji naprawy |
Raport naprawy
THPDFUA2RepairReport raportuje, czy graf został zmieniony albo wycofany, czy przekroczono limit, status walidacji posnaprawczej, liczbę obejrzanych obiektów, pozostałe błędy oraz liczniki dla każdej rodziny napraw, w tym tekstu alternatywnego, wpisów języka, poziomów nagłówków i tagów Artifact
UnresolvedAlternateTextCount, UnresolvedLanguageCount i UnresolvedArtifactCount odróżniają semantyki, które nadal wymagają przeglądu autora, od automatycznych mutacji
Zwracana tablica THPDFUA2ValidationIssues zawiera diagnostyki posnaprawcze, gdy walidacja się nie powiedzie, oraz stabilne diagnostyki specyficzne dla naprawy, gdy transakcję przerwie limit zasobów albo konfliktowe zduplikowane mapy ról
Szczegółowy wariant zwraca dodatkowo wyniki sprzed naprawy oznaczone jako crsApplied, crsUnresolved, crsRolledBack albo crsFailed, plus zliczone podsumowania dla każdej rodziny napraw
Ten wariant z proweniencją wykonuje dodatkowy, ograniczony przebieg walidacji przed naprawą; gdy potrzebne są tylko końcowy raport i problemy, użyj istniejącego wariantu z trzema wyjściami
Atomowość i bezpieczeństwo
- Każda mutacja uczestniczy w transakcji grafu dokumentu, włącznie z nowo alokowanymi pośrednimi słownikami przestrzeni nazw
- Zduplikowane słowniki przestrzeni nazw są scalane tylko wtedy, gdy ich mapowania ról są zgodne
- Semantyki niestandardowych atrybutów nigdy nie są wymyślane, chyba że jawnie podano
CustomAttributeNamespaceURI - Tekst alternatywny nigdy nie jest fabrykowany, chyba że jawnie podano
FallbackAlternateText - Edycje zawartości stron producenta są etapowane do czasu udanej walidacji, a edycje wczytanych strumieni pozostają wewnątrz transakcji grafu
- Niejednoznaczne przecięcia tabel, brakujące dzieci strukturalne, konfliktowe ID, nierozwiązane cele kontynuacji i nieobecna semantyka nagłówków nigdy nie są zgadywane
- Polityka domyślna wycofuje całą naprawę, gdy pozostają niezwiązane z nią błędy PDF/UA-2
- Grafy wczytane i po stronie producenta korzystają z tej samej ograniczonej ścieżki walidacji i naprawy
Przykład
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;