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

PolePrzeznaczenie
NormalizeDuplicateNamespacesOdbudowuje StructTreeRoot/Namespaces z jednym kanonicznym pośrednim słownikiem na URI i odrzuca konfliktowe mapy ról
RegisterReferencedNamespacesRejestruje poprawne słowniki przestrzeni nazw odwoływane przez elementy struktury, atrybuty lub mapy ról świadome przestrzeni nazw
RepairStandardStructureNamespacesPrzypisuje przestrzeń nazw PDF 2.0 rolom standardowym, gdy przestrzeń nazw jest brakująca lub nieprawidłowa, i zawsze normalizuje najwyższy poziom Document
RepairAttributeNamespacesKanonicznie zapisuje odwołania do przestrzeni nazw atrybutów i usuwa nieprawidłowe wpisy przestrzeni nazw ze standardowych właścicieli
RepairAttributeRevisionsNormalizuje ujemne lub ułamkowe numery rewizji i usuwa osierocone wpisy rewizji z tablic atrybutów
RepairListSemanticsNormalizuje numerację, flagi kontynuacji, nieprawidłowe typy kontynuacji i pojedynczy źle umieszczony podpis, nie wymyślając zawartości list
RepairTableSemanticsNormalizuje nieprawidłowe span i scope, usuwa nieprawidłowe odwołania do nagłówków lokalnych dla tabeli i przenosi pojedynczy źle umieszczony podpis
RepairRubyWarichuSequencesZmienia kolejność dzieci tylko wtedy, gdy dokładnie wymagany multiset ról już występuje
RepairPronunciationHintsUsuwa źle wpisane podpowiedzi wymowy, przycina nieprawidłowe odwołania do leksykonów i normalizuje osadzone subtypy MIME PLS
RepairMissingAlternateTextOdtwarza 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
RepairLanguageInheritancePromuje 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
RepairHeadingOrderPonumeruje ponownie tylko defekty pierwszego nagłówka i pominiętych poziomów, zachowując kolejność dokumentu
RepairArtifactTaggingPrzepisuje tagi marked-content powiązane z elementem struktury Artifact dla zawartości producenta i wczytanych stron
AllowDocumentFragmentHeadingStartsResetuje kontekst nagłówków wewnątrz każdego DocumentFragment zarówno dla naprawy, jak i walidacji posnaprawczej
RollbackOnValidationFailurePrzywraca pierwotny graf, gdy po naprawie pozostanie jakikolwiek błąd PDF/UA-2
CustomAttributeNamespaceURIDostarcza 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)
DefaultLanguageDostarcza tag języka BCP-47 tylko wtedy, gdy ani Catalog, ani korzeń struktury nie zawiera poprawnego języka
FallbackAlternateTextDostarcza tekst alternatywny sprawdzony przez wywołującego po wyczerpaniu wszystkich źródeł z dokumentu; domyślnie pusty, więc opis nigdy nie jest fabrykowany
MaxGeneratedAlternateTextCharactersOgranicza ekstrakcję tekstu z tego samego MCID; domyślnie 4 096 jednostek kodowych UTF-16
MaxObjectsOgranicza skan grafu obiektów; domyślnie 1 000 000 obiektów
MaxRepairsOgranicza 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

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;

Powiązane API