THotPDF.RepairPDFUA2Structure-Methode
Repariert wiederherstellbare PDF/UA-2-Defekte an Namespace, Attributen, Struktur und Barrierefreiheit innerhalb einer Copy-on-Write-Graph-Transaktion und validiert den Kandidatengraphen vor dem Commit
Deklaration
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;
Einheit
HPDFDoc
Reparaturoptionen
Starten Sie mit THPDFUA2RepairOptions.Default und überschreiben Sie nur die Policy-Entscheidungen, die der Eingabe-Workflow verlangt
| Feld | Zweck |
|---|---|
NormalizeDuplicateNamespaces | Baut StructTreeRoot/Namespaces mit genau einem kanonischen indirekten Dictionary pro URI neu ab und weist widersprüchliche Role Maps zurück |
RegisterReferencedNamespaces | Registriert gültige Namespace-Dictionarys, die von Strukturelementen, Attributen oder namespace-bewussten Role Maps referenziert werden |
RepairStandardStructureNamespaces | Weist Standardrollen den PDF-2.0-Namespace zu, wenn der Namespace fehlt oder ungültig ist, und normalisiert das oberste Document immer |
RepairAttributeNamespaces | Kanonisiert Attribut-Namespace-Referenzen und entfernt ungültige Namespace-Einträge von Standard-Ownern |
RepairAttributeRevisions | Normalisiert negative oder gebrochene Revisionsnummern und entfernt verwaiste Revisionseinträge aus Attribut-Arrays |
RepairListSemantics | Normalisiert Nummerierung, Fortsetzungs-Flags, ungültige Fortsetzungstypen und eine einzelne fehlplatzierte Caption, ohne Listeninhalt zu erfinden |
RepairTableSemantics | Normalisiert ungültige Spans und Scopes, entfernt ungültige tabellenlokale Header-Referenzen und verschiebt eine einzelne fehlplatzierte Caption |
RepairRubyWarichuSequences | Ordnet Kinder nur um, wenn das exakt erforderliche Role-Multiset bereits vorhanden ist |
RepairPronunciationHints | Entfernt falsch typisierte Hinweise, beschneidet ungültige Lexikon-Referenzen und normalisiert eingebettete PLS-MIME-Subtypes |
RepairMissingAlternateText | Stellt fehlendes Alt für Figure, Formula und Form aus vorhandenem Titel, Expansionstext, extrahiertem Text mit gleicher MCID oder einem expliziten Fallback wieder her, in dieser Reihenfolge |
RepairLanguageInheritance | Holt eine gültige Struktur-Root- oder explizite Standardsprache in den Catalog und entfernt ungültige oder redundante Sprachattribute auf Strukturebene, wenn die Vererbung eindeutig ist |
RepairHeadingOrder | Nummeriert nur Defekte an erster Überschrift und übersprungenen Ebenen neu und bewahrt dabei die Dokumentreihenfolge |
RepairArtifactTagging | Schreibt Marked-Content-Tags um, die einem Artifact-Strukturelement zugeordnet sind, für Producer- und geladene Seiteninhalte |
AllowDocumentFragmentHeadingStarts | Setzt den Überschriftenkontext innerhalb jedes DocumentFragment für Repair und Post-Repair-Validierung zurück |
RollbackOnValidationFailure | Stellt den ursprünglichen Graphen wieder her, wenn nach der Reparatur ein PDF/UA-2-Fehler verbleibt |
CustomAttributeNamespaceURI | Liefert den expliziten Namespace für Custom-Attribute-Owner, deren Semantik nicht sicher erschlossen werden kann; leerer Standard schlägt kontrolliert fehl |
DefaultLanguage | Liefert ein BCP-47-Sprachtag nur dann, wenn weder Catalog noch Struktur-Root eine gültige Sprache enthalten |
FallbackAlternateText | Liefert vom Aufrufer geprüften Alternativtext, nachdem alle dokumentspezifischen Quellen fehlschlagen; leerer Standard erfindet niemals eine Beschreibung |
MaxGeneratedAlternateTextCharacters | Begrenzt die Textextraktion mit gleicher MCID und ist mit 4.096 UTF-16-Code-Einheiten vorbelegt |
MaxObjects | Begrenzt das Objektgraph-Scanning und ist standardmäßig auf 1.000.000 Objekte begrenzt |
MaxRepairs | Begrenzt zurückgehaltene Mutationen und ist standardmäßig auf 100.000 Reparaturaktionen begrenzt |
Reparaturbericht
THPDFUA2RepairReport meldet, ob der Graph geändert oder zurückgerollt wurde, ob eine Grenze überschritten wurde, den Post-Repair-Validierungsstatus, untersuchte Objekte, verbleibende Fehler und Zähler für jede Reparaturfamilie, einschließlich Alternativtext, Spracheinträge, Überschriftenebenen und Artifact-Tags
UnresolvedAlternateTextCount, UnresolvedLanguageCount und UnresolvedArtifactCount unterscheiden Semantik, die noch einer Autorenprüfung bedarf, von automatischen Mutationen
Das zurückgelieferte THPDFUA2ValidationIssues-Array enthält die Post-Repair-Diagnostik, wenn die Validierung fehlschlägt, und stabile reparaturspezifische Diagnosen, wenn eine Ressourcengrenze oder eine widersprüchliche doppelte Role Map die Transaktion abbricht
Der detaillierte Overload liefert zusätzlich Pre-Repair-Findings mit der Kennung crsApplied, crsUnresolved, crsRolledBack oder crsFailed plus gezählte Zusammenfassungen je Reparaturfamilie
Dieser Provenance-Overload führt einen zusätzlichen begrenzten Pre-Repair-Validierungslauf aus; verwenden Sie den vorhandenen Overload mit drei Ausgängen, wenn nur der abschließende Bericht und die Issues benötigt werden
Atomarität und Sicherheit
- Jede Mutation nimmt an der Dokumentgraph-Transaktion teil, einschließlich neu allozierter indirekter Namespace-Dictionarys
- Doppelte Namespace-Dictionarys werden nur zusammengeführt, wenn ihre Role Mappings übereinstimmen
- Custom-Attribut-Semantik wird nie erfunden, sofern
CustomAttributeNamespaceURInicht ausdrücklich geliefert wird - Alternativtext wird nie fabriziert, sofern
FallbackAlternateTextnicht ausdrücklich geliefert wird - Producer-Seiteninhalts-Änderungen werden gestaged, bis die Validierung gelingt, während Änderungen an geladenen Streams innerhalb der Graph-Transaktion bleiben
- Mehrdeutige Tabellenschnittpunkte, fehlende Strukturkinder, widersprüchliche IDs, unaufgelöste Fortsetzungsziele und fehlende Header-Semantik werden nie erraten
- Die Standard-Policy rollt die vollständige Reparatur zurück, wenn unabhängige PDF/UA-2-Fehler verbleiben
- Geladene und Producer-seitige Graphen nutzen denselben begrenzten Validierungs- und Reparaturpfad
Beispiel
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;