THotPDF.RepairPDFUA2Structure Method

Opraví zotavitelné vady namespace, atributů, struktury i accessibility PDF/UA-2 uvnitř copy-on-write graph transakce a před commit kandidátní graf zvaliduje

Deklarace

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;

Jednotka

HPDFDoc

Možnosti oprav

Vyjděte z THPDFUA2RepairOptions.Default a přepište jen ta politická rozhodnutí, která vyžaduje vstupní workflow

PoleÚčel
NormalizeDuplicateNamespacesPřestaví StructTreeRoot/Namespaces s jedním kanonickým nepřímým slovníkem na URI a odmítne konfliktní role mapy
RegisterReferencedNamespacesZaregistruje platné namespace slovníky odkazované strukturálními elementy, atributy nebo role mapami citlivými na namespace
RepairStandardStructureNamespacesPřiřadí standardním rolím namespace PDF 2.0, když namespace chybí nebo je neplatný, a vždy normalizuje top-level Document
RepairAttributeNamespacesKanonizuje namespace reference atributů a od standardních ownerů odstraní neplatné namespace položky
RepairAttributeRevisionsNormalizuje záporná či desetinná revizní čísla a z atributových polí odstraní osiřelé revizní položky
RepairListSemanticsNormalizuje číslování, continuation příznaky, neplatné continuation typy a jednu přeházenou caption, aniž by vymýšlela obsah seznamu
RepairTableSemanticsNormalizuje neplatné span a scope, odstraní neplatné tabulkově lokální header reference a přemístí jednu přeházenou caption
RepairRubyWarichuSequencesPřeuspořádá děti jen tehdy, když už je přítomen přesně vyžadovaný multiset rolí
RepairPronunciationHintsOdstraní hinty se špatným typem, prořezá neplatné lexicon reference a normalizuje vložené PLS MIME subtypy
RepairMissingAlternateTextObnoví chybějící Alt pro Figure, Formula a Form ze stávajícího titulku, expansion textu, extrahovaného textu se stejným MCID nebo explicitního fallbacku, v tomto pořadí
RepairLanguageInheritancePovýší platný jazyk structure rootu nebo explicitní výchozí jazyk do Catalogu a při jednoznačné dědičnosti odstraní neplatné či redundantní jazykové položky na úrovni struktur
RepairHeadingOrderPřečísluje jen vady prvního nadpisu a přeskočených úrovní, přičemž pořadí dokumentu zachová
RepairArtifactTaggingPřepíše marked-content tagy spojené se strukturálním elementem Artifact pro producer i načtený obsah stránek
AllowDocumentFragmentHeadingStartsResetuje kontext nadpisů uvnitř každého DocumentFragment pro opravu i post-repair validaci
RollbackOnValidationFailureObnoví původní graf, když po opravě zůstane jakákoli chyba PDF/UA-2
CustomAttributeNamespaceURIDodá explicitní namespace pro vlastní attribute ownery, jejichž semantiku nelze bezpečně odvodit; výchozí prázdná hodnota selhává uzavřeně
DefaultLanguageDodá jazykový tag BCP-47 jen tehdy, když ani Catalog, ani structure root neobsahuje platný jazyk
FallbackAlternateTextDodá volajícím zkontrolovaný alternate text až po selhání všech zdrojů odvozených z dokumentu; výchozí prázdná hodnota nikdy popis nevymyslí
MaxGeneratedAlternateTextCharactersOhraničí extrakci textu se stejným MCID; výchozí hodnota je 4 096 UTF-16 kódových jednotek
MaxObjectsOhraničí scan object grafu; výchozí hodnota je 1 000 000 objektů
MaxRepairsOhraničí uchovávané mutace; výchozí hodnota je 100 000 repair operací

Repair report

THPDFUA2RepairReport hlásí, zda se graf změnil nebo odroloval, zda byl překročen limit, stav validace po opravě, prohlédnuté objekty, zbývající chyby a počty pro každou repair rodinu včetně alternate textu, jazykových položek, úrovní nadpisů a Artifact tagů

UnresolvedAlternateTextCount, UnresolvedLanguageCount a UnresolvedArtifactCount rozliší semantiku, která si ještě vyžaduje autorův dohled, od automatických mutací

Vrácené pole THPDFUA2ValidationIssues obsahuje při neúspěšné validaci post-repair diagnostiku a při přerušení transakce limitem resource nebo konfliktní duplicitní role mapou stabilní diagnostiku specifickou pro opravy

Detailní overload navíc vrací pre-repair nálezy označené jako crsApplied, crsUnresolved, crsRolledBack nebo crsFailed plus spočítané souhrny pro každou repair rodinu

Tento provenance overload provádí dodatečný ohraničený pre-repair validační průchod; když potřebujete jen finální report a issues, použijte stávající overload se třemi výstupy

Atomicita a bezpečnost

Příklad

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;

Související API