THotPDF.RepairPDFUA2Structure Method
Popravlja obnovljive PDF/UA-2 defekte imenskih prostora, atributa, strukture i pristupačnosti unutar copy-on-write transakcije grafa i validira kandidat-graf pre potvrde
Deklaracija
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;
Unit
HPDFDoc
Opcije popravke
Kreni od THPDFUA2RepairOptions.Default i predefiniši samo one odluke politike koje input workflow zahteva
| Polje | Svrha |
|---|---|
NormalizeDuplicateNamespaces | Ponovo gradi StructTreeRoot/Namespaces sa jednim kanonskim indirektnim rečnikom po URI-ju i odbaja konfliktne role mape |
RegisterReferencedNamespaces | Registruje važeće namespace rečnike na koje referenciraju elementi strukture, atributi ili role mape svesne imenskih prostora |
RepairStandardStructureNamespaces | Dodeljuje PDF 2.0 namespace standardnim rolama kada namespace nedostaje ili je nevažeći, i uvek normalizuje najviši nivo Document |
RepairAttributeNamespaces | Kanonizuje reference atributa na namespace i uklanja nevažeće namespace unose sa standardnih vlasnika |
RepairAttributeRevisions | Normalizuje negativne ili razlomljene brojeve revizija i uklanja orphan revizione unose iz nizova atributa |
RepairListSemantics | Normalizuje numerisanje, continuation zastavice, nevažeće continuation tipove i jedan pogrešno smesten caption, bez izmišljanja sadržaja liste |
RepairTableSemantics | Normalizuje nevažeće span i scope vrednosti, uklanja nevažeće reference na header-e lokalne za tabelu i premešta jedan pogrešno smesten caption |
RepairRubyWarichuSequences | Preuređuje decu samo kada tačno traženi multiset rola već postoji |
RepairPronunciationHints | Uklanja hintove pogrešnog tipa, čisti nevažeće reference na leksikone i normalizuje ugrađene PLS MIME podtipove |
RepairMissingAlternateText | Vraća nedostajući Alt za Figure, Formula i Form iz postojećeg naslova, expansion teksta, izdvojenog teksta istog MCID-a ili eksplicitnog fallback-a, baš tim redosledom |
RepairLanguageInheritance | Promoviše važeći jezik strukturnog korena ili eksplicitan podrazumevani jezik u Catalog i uklanja nevažeće ili suvišne jezičke unose na nivou strukture kada je nasleđivanje nedvosmisleno |
RepairHeadingOrder | Ponovo numeriše samo defekte prvog naslova i preskočenih nivoa, uz zadržavanje redosleda dokumenta |
RepairArtifactTagging | Prepisuje marked-content tagove vezane za Artifact element strukture za producer i učitani sadržaj stranica |
AllowDocumentFragmentHeadingStarts | Resetuje kontekst naslova unutar svakog DocumentFragment, i za popravku i za validaciju posle nje |
RollbackOnValidationFailure | Vraća originalni graf kada bilo koja PDF/UA-2 greška ostane nakon popravke |
CustomAttributeNamespaceURI | Dostavlja eksplicitan namespace za vlasnike custom atributa čija se semantika ne može sigurno zaključiti, uz podrazumevanu praznu vrednost koja bezbedno prekida rad |
DefaultLanguage | Dostavlja BCP-47 jezički tag samo kada ni Catalog ni strukturni koren ne sadrže važeći jezik |
FallbackAlternateText | Dostavlja alternate tekst koji je pozivalac pregledao nakon što svi izvori iz dokumenta otpadnu, uz podrazumevanu praznu vrednost koja nikada ne izmišlja opis |
MaxGeneratedAlternateTextCharacters | Ograničava izdvajanje teksta istog MCID-a, podrazumevano 4.096 UTF-16 code units |
MaxObjects | Ograničava skeniranje grafa objekata, podrazumevano 1.000.000 objekata |
MaxRepairs | Ograničava zadržane mutacije, podrazumevano 100.000 operacija popravke |
Izveštaj o popravci
THPDFUA2RepairReport izveštava da li je graf promenjen ili vraćen, da li je prekoračen neki limit, status validacije posle popravke, pregledane objekte, preostale greške i brojače za svaku familiju popravki, uključujući alternate tekst, jezičke unose, nivoe naslova i Artifact tagove
UnresolvedAlternateTextCount, UnresolvedLanguageCount i UnresolvedArtifactCount razdvajaju semantiku koja još traži pregled autora od automatskih mutacija
Vraćeni niz THPDFUA2ValidationIssues sadrži dijagnostiku posle popravke kada validacija ne uspe, i stabilnu dijagnostiku specifičnu za popravku kada resursni limit ili konfliktne duplirane role mape prekinu transakciju
Detaljni overload vraća i nalaze pre popravke označene kao crsApplied, crsUnresolved, crsRolledBack ili crsFailed, plus sume sa brojačima za svaku familiju popravki
Ovaj overload sa podacima o poreklu izvršava dodatni ograničeni validacioni prolaz pre popravke; koristi postojeći overload sa tri izlaza kada su potrebni samo konačni izveštaj i problemi
Atomskost i bezbednost
- Svaka mutacija učestvuje u transakciji grafa dokumenta, uključujući novododeljene indirektne namespace rečnike
- Duplirani namespace rečnici se spajaju samo kada se njihove role mape slažu
- Semantika custom atributa se nikada ne izmišlja osim ako se eksplicitno dostavi
CustomAttributeNamespaceURI - Alternate tekst se nikada ne izmišlja osim ako se eksplicitno dostavi
FallbackAlternateText - Izmene producer sadržaja stranica se pripremaju dok validacija ne uspe, dok izmene učitanih stream-ova ostaju unutar transakcije grafa
- Dvosmislena preseka tabela, nedostajuća strukturna deca, konfliktni ID-jevi, nerešeni continuation ciljevi i odsutna semantika header-a se nikada ne pogađaju
- Podrazumevana politika radi rollback cele popravke kada ostanu nepovezane PDF/UA-2 greške
- Učitani i producer grafovi koriste istu ograničenu putanju validacije i popravke
Primer
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;