THotPDF.RepairPDFUA2Structure Method
Corrigeert herstelbare PDF/UA-2-naamruimte-, attribuut-, structurele en toegankelijkheidsdefecten binnen een copy-on-write-grafiektransactie en valideert de kandidaatgrafiek vóór doorvoering
Declaratie
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;
Eenheid
HPDFDoc
Correctieopties
Begin met THPDFUA2RepairOptions.Default en overrule alleen beleidsbeslissingen die de invoerworkflow vereist
| Veld | Doel |
|---|---|
NormalizeDuplicateNamespaces | Bouwt StructTreeRoot/Namespaces opnieuw op met één canoniek indirect woordenboek per URI en wijst conflicterende rolemkaarten af |
RegisterReferencedNamespaces | Registreert geldige naamruimtewoordenboeken waarnaar structuurelementen, attributen of naamruimtebewuste rolemkaarten verwijzen |
RepairStandardStructureNamespaces | Wijs de PDF 2.0-naamruimte toe aan standaardrollen wanneer de naamruimte ontbreekt of ongeldig is en normaliseert altijd de toppagina Document |
RepairAttributeNamespaces | Canonicaliseert naamruimteverwijzingen van attributen en verwijdert ongeldige naamruimteinvoeren van standaardeigenaren |
RepairAttributeRevisions | Normaliseert negatieve of fractionele revisienummers en verwijdert weesrevisie-invoeren uit attributenarrays |
RepairListSemantics | Normaliseert nummering, voortzettingsvlaggen, ongeldige voortzettingstypes en een enkel verkeerd geplaatst bijschrift zonder lijstinhoud te verzinnen |
RepairTableSemantics | Normaliseert ongeldige spans en scopes, verwijdert ongeldige tabellokale headerverwijzingen en verplaatst één verkeerd geplaatst bijschrift |
RepairRubyWarichuSequences | Herschikt kinderen alleen wanneer de exacte vereiste rolemultiset al aanwezig is |
RepairPronunciationHints | Verwijdert verkeerd getypeerde hints, snoeit ongeldige lexiconverwijzingen en normaliseert ingesloten PLS-MIME-subtypes |
RepairMissingAlternateText | Herstelt ontbrekende Alt voor Figure, Formula en Form vanuit een bestaande titel, expansietekst, dezelfde-MCID-geëxtraheerde tekst of een expliciete terugval, in die volgorde |
RepairLanguageInheritance | Bevordert een geldige structuurwortel- of expliciete standaardtaal naar de Catalogus en verwijdert ongeldige of overbodige taalinvoeren op structuurniveau wanneer overerving ondubbelzinnig is |
RepairHeadingOrder | Hernummert alleen eerste-kop- en overgeslagen-niveau-defecten met behoud van documentvolgorde |
RepairArtifactTagging | Herschrijft gemarkeerde-inhoudstags gekoppeld aan een Artifact-structuurelement voor producent- en geladen pagina-inhoud |
AllowDocumentFragmentHeadingStarts | Reset kopcontext binnen elke DocumentFragment voor zowel correctie als validatie na correctie |
RollbackOnValidationFailure | Herstelt de oorspronkelijke grafiek wanneer na correctie een PDF/UA-2-fout resteert |
CustomAttributeNamespaceURI | Levert de expliciete naamruimte voor aangepaste attribuuteigenaren wier semantiek niet veilig kan worden afgeleid, met een lege standaard die faalt bij twijfel |
DefaultLanguage | Levert alleen een BCP-47-taaltag wanneer noch de Catalogus noch de structuurwortel een geldige taal bevat |
FallbackAlternateText | Levert door de aanroeper beoordeelde alternatieve tekst nadat alle uit het document afgeleide bronnen falen, met een lege standaard die nooit een beschrijving verzint |
MaxGeneratedAlternateTextCharacters | Begrenst dezelfde-MCID-tekstextractie en gebruikt standaard 4.096 UTF-16-code-eenheden |
MaxObjects | Begrenst het scannen van de objectgrafiek en gebruikt standaard 1.000.000 objecten |
MaxRepairs | Begrenst bewaarde mutaties en gebruikt standaard 100.000 correctiebewerkingen |
Correctierapport
THPDFUA2RepairReport rapporteert of de grafiek is gewijzigd of teruggedraaid, of een grens is overschreden, validatiestatus na correctie, bekeken objecten, resterende fouten en aantallen voor elke correctiefamilie inclusief alternatieve tekst, taalinvoeren, kopniveaus en Artifact-tags
UnresolvedAlternateTextCount, UnresolvedLanguageCount en UnresolvedArtifactCount onderscheiden semantiek die nog auteursbeoordeling vereist van automatische mutaties
De teruggegeven array THPDFUA2ValidationIssues bevat de diagnostiek na correctie wanneer validatie faalt en stabiele correctiespecifieke diagnostiek wanneer een resourcegrens of conflicterende dubbele rolemkaart de transactie afbreekt
De gedetailleerde overload geeft ook bevindingen vóór correctie terug, gemarkeerd als crsApplied, crsUnresolved, crsRolledBack of crsFailed, plus getelde samenvattingen per correctiefamilie
Deze provenance-overload voert een extra begrensde validatiepass vóór correctie uit; gebruik de bestaande drie-uitvoer-overload wanneer alleen het eindrapport en de problemen nodig zijn
Atomiciteit en veiligheid
- Elke mutatie participeert in de documentgrafiektransactie, inclusief nieuw toegewezen indirecte naamruimtewoordenboeken
- Dubbele naamruimtewoordenboeken worden alleen samengevoegd wanneer hun rolemappingen overeenkomen
- Aangepaste attribuutsemantiek wordt nooit verzonnen tenzij
CustomAttributeNamespaceURIexpliciet wordt geleverd - Alternatieve tekst wordt nooit verzonnen tenzij
FallbackAlternateTextexpliciet wordt geleverd - Bewerkingen van producentpagina-inhoud worden klaargezet tot validatie slaagt, terwijl bewerkingen van geladen streams binnen de grafiektransactie blijven
- Dubbelzinnige tabelintersecties, ontbrekende structurele kinderen, conflicterende ID's, onopgeloste voortzettingsdoelen en afwezige headersemantiek worden nooit geraden
- Het standaardbeleid draait de volledige correctie terug wanneer ongerelateerde PDF/UA-2-fouten blijven
- Geladen en producentenkant-grafieken gebruiken hetzelfde begrensde validatie- en correctiepad
Voorbeeld
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;