THotPDF.RepairPDFUA2Structure-metode
Reparerer gjenopprettbare PDF/UA-2-defekter i namespace, attributter, struktur og tilgjengelighet inne i en copy-on-write-graftransaksjon, og validerer kandidatgrafen før commit
Deklarasjon
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;
Enhet
HPDFDoc
Reparasjonsalternativer
Start med THPDFUA2RepairOptions.Default og overstyr bare policybeslutningene arbeidsflyten krever
| Felt | Formål |
|---|---|
NormalizeDuplicateNamespaces | Bygger StructTreeRoot/Namespaces opp igjen med én canonical indirekte ordbok per URI og avviser motstridende role maps |
RegisterReferencedNamespaces | Registrerer gyldige namespace-ordbøker det refereres til fra strukturelementer, attributter eller namespace-bevisste role maps |
RepairStandardStructureNamespaces | Tilordner PDF 2.0-namespace til standardroller når namespace mangler eller er ugyldig, og normaliserer alltid toppnivåets Document |
RepairAttributeNamespaces | Kanoniserer attributtnamespace-referanser og fjerner ugyldige namespace-oppføringer fra standardowners |
RepairAttributeRevisions | Normaliserer negative eller desimale revisjonsnumre og fjerner foreldreløse revisjonsoppføringer fra attributtmatriser |
RepairListSemantics | Normaliserer nummerering, continuation-flagg, ugyldige continuation-typer og én enkelt feilplassert caption uten å dikte opp listinnhold |
RepairTableSemantics | Normaliserer ugyldige spans og scopes, fjerner ugyldige tabellokale headerreferanser og flytter én enkelt feilplassert caption |
RepairRubyWarichuSequences | Sorterer barn på nytt bare når den eksakte påkrevde rollen-multimengden allerede finnes |
RepairPronunciationHints | Fjerner feiltypede hints, rydder bort ugyldige leksikonreferanser og normaliserer innebygde PLS MIME-subtyper |
RepairMissingAlternateText | Gjenoppretter manglende Alt for Figure, Formula og Form fra eksisterende tittel, utvidelsestekst, ekstrahert tekst fra samme MCID, eller en eksplisitt fallback, i den rekkefølgen |
RepairLanguageInheritance | Løfter et gyldig structure-root- eller eksplisitt standardspråk opp til Catalog og fjerner ugyldige eller redundante språkoppføringer på strukturnivå når arven er entydig |
RepairHeadingOrder | Nummererer om bare første-overskrift- og hoppet-nivå-defekter mens dokumentrekkefølgen beholdes |
RepairArtifactTagging | Omskriver marked-content-tagger knyttet til et Artifact-strukturelement for produsent og lastet sideinnhold |
AllowDocumentFragmentHeadingStarts | Nullstiller overskriftskonteksten inne i hver DocumentFragment for både reparasjon og etterpågående validering |
RollbackOnValidationFailure | Gjenoppretter original grafen når noen PDF/UA-2-feel gjenstår etter reparasjonen |
CustomAttributeNamespaceURI | Oppgir det eksplisitte namespace for custom attributtowners hvis semantikk ikke kan utledes trygt, med tom standardverdi som feiler lukket |
DefaultLanguage | Oppgir en BCP-47-språkkode bare når verken Catalog eller strukturoten inneholder et gyldig språk |
FallbackAlternateText | Oppgir alternativ tekst gjennomgått av kalleren etter at alle dokumentbaserte kilder har feilet, med tom standardverdi som aldri fabriserer en beskrivelse |
MaxGeneratedAlternateTextCharacters | Begrenser tekstekstraksjon fra samme MCID og bruker 4 096 UTF-16-kodeenheter som standard |
MaxObjects | Begrenser skanning av objektgrafen og bruker 1 000 000 objekter som standard |
MaxRepairs | Begrenser beholdte mutasjoner og bruker 100 000 reparasjonsoperasjoner som standard |
Reparasjonsrapport
THPDFUA2RepairReport rapporterer om grafen endret seg eller ble rullet tilbake, om en grense ble overskredet, valideringsstatus etter reparasjon, undersøkte objekter, gjenværende feil, og telling for hver reparasjonsfamilie inkludert alternativ tekst, språkoppføringer, overskriftsnivåer og Artifact-tagger
UnresolvedAlternateTextCount, UnresolvedLanguageCount og UnresolvedArtifactCount skiller semantikk som fortsatt krever forfattergjennomgang fra automatiske mutasjoner
Den returnerte THPDFUA2ValidationIssues-matrisen inneholder diagnosene etter reparasjon når valideringen feiler, og stabile reparasjonsspesifikke diagnoser når en ressursgrense eller en motstridende duplisert role map avbryter transaksjonen
Den detaljerte overloaden returnerer også funn fra før reparasjon annotert som crsApplied, crsUnresolved, crsRolledBack eller crsFailed, pluss oppsummerte telling per reparasjonsfamilie
Denne provenance-overloaden kjører en ekstra avgrenset valideringsrunde før reparasjonen; bruk den eksisterende overloaden med tre ut-data når bare sluttrapporten og issues trengs
Atomisitet og trygghet
- Enhver mutasjon inngår i dokumentgraftransaksjonen, inkludert ny-allokerte indirekte namespace-ordbøker
- Duplikate namespace-ordbøker flettes bare når rollemappingene deres er enige
- Semantikken for custom attributter diktes aldri opp med mindre
CustomAttributeNamespaceURIer eksplisitt oppgitt - Alternativ tekst fabriseres aldri med mindre
FallbackAlternateTexter eksplisitt oppgitt - Redigeringer av produsentsideinnhold settes på vent til valideringen lykkes, mens redigeringer i lastede streams forblir inne i graftransaksjonen
- Tvetydige tabellkryss, manglende strukturelle barn, motstridende ID-er, uløste continuation-mål og fraværende headersemantikk gjettes aldri
- Standardpolicyen ruller tilbake hele reparasjonen når urelaterte PDF/UA-2-feiler gjenstår
- Lastede og produsentside-grafer bruker samme avgrensede validerings- og reparasjonssti
Eksempel
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;