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 |
|---|---|
NormalizeDuplicateNamespaces | Přestaví StructTreeRoot/Namespaces s jedním kanonickým nepřímým slovníkem na URI a odmítne konfliktní role mapy |
RegisterReferencedNamespaces | Zaregistruje platné namespace slovníky odkazované strukturálními elementy, atributy nebo role mapami citlivými na namespace |
RepairStandardStructureNamespaces | Přiřadí standardním rolím namespace PDF 2.0, když namespace chybí nebo je neplatný, a vždy normalizuje top-level Document |
RepairAttributeNamespaces | Kanonizuje namespace reference atributů a od standardních ownerů odstraní neplatné namespace položky |
RepairAttributeRevisions | Normalizuje záporná či desetinná revizní čísla a z atributových polí odstraní osiřelé revizní položky |
RepairListSemantics | Normalizuje číslování, continuation příznaky, neplatné continuation typy a jednu přeházenou caption, aniž by vymýšlela obsah seznamu |
RepairTableSemantics | Normalizuje neplatné span a scope, odstraní neplatné tabulkově lokální header reference a přemístí jednu přeházenou caption |
RepairRubyWarichuSequences | Přeuspořádá děti jen tehdy, když už je přítomen přesně vyžadovaný multiset rolí |
RepairPronunciationHints | Odstraní hinty se špatným typem, prořezá neplatné lexicon reference a normalizuje vložené PLS MIME subtypy |
RepairMissingAlternateText | Obnoví 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í |
RepairLanguageInheritance | Povýší 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 |
RepairHeadingOrder | Přečísluje jen vady prvního nadpisu a přeskočených úrovní, přičemž pořadí dokumentu zachová |
RepairArtifactTagging | Přepíše marked-content tagy spojené se strukturálním elementem Artifact pro producer i načtený obsah stránek |
AllowDocumentFragmentHeadingStarts | Resetuje kontext nadpisů uvnitř každého DocumentFragment pro opravu i post-repair validaci |
RollbackOnValidationFailure | Obnoví původní graf, když po opravě zůstane jakákoli chyba PDF/UA-2 |
CustomAttributeNamespaceURI | Dodá explicitní namespace pro vlastní attribute ownery, jejichž semantiku nelze bezpečně odvodit; výchozí prázdná hodnota selhává uzavřeně |
DefaultLanguage | Dodá jazykový tag BCP-47 jen tehdy, když ani Catalog, ani structure root neobsahuje platný jazyk |
FallbackAlternateText | Dodá 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í |
MaxGeneratedAlternateTextCharacters | Ohraničí extrakci textu se stejným MCID; výchozí hodnota je 4 096 UTF-16 kódových jednotek |
MaxObjects | Ohraničí scan object grafu; výchozí hodnota je 1 000 000 objektů |
MaxRepairs | Ohraničí 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
- Každá mutace se účastní graph transakce dokumentu, včetně nově alokovaných nepřímých namespace slovníků
- Duplicitní namespace slovníky se slučují jen tehdy, když jejich role mapování souhlasí
- Semantika vlastních atributů se nikdy nevymyslí, pokud se
CustomAttributeNamespaceURIexplicitně nedodá - Alternate text se nikdy nevymyslí, pokud se explicitně nedodá
FallbackAlternateText - Editace page contentu na straně produceru se stagedují do úspěšné validace, zatímco editace načtených streamů zůstávají uvnitř graph transakce
- Nejednoznačné tabulkové průniky, chybějící strukturální děti, konfliktní ID, nevyřešené continuation cíle a chybějící header semantika se nikdy neodhadují
- Výchozí politika odroluje celou opravu, když zůstanou nesouvisející chyby PDF/UA-2
- Načtené i producer-side grafy používají stejnou ohraničenou validační a opravnou cestu
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;