Automatische PDF/UA-Struktur aus Layout-Bäumen

THPDFDOMRenderer kann den visuellen Layout-Baum ohne manuelle MCID-Zuweisung in einen passenden logischen Strukturbaum überführen

THPDFDOMDocument.GenerateStructure ist standardmäßig True, aktiviert die Tagged-PDF-Ausgabe, erstellt eine Document-Wurzel sowie pro Abschnitt ein Sect und verwendet THPDFDOMDocument.Language, falls das Ziel keine Dokumentsprache besitzt

Semantische Vorgaben und Überschreibungen

Layout-InhaltErzeugte Struktur
THPDFDOMTextP oder H1 bis H6, wenn HeadingLevel gesetzt ist
THPDFDOMStack und THPDFDOMContainerDiv
THPDFDOMListL mit Nachfahren LI, Lbl und LBody sowie ListNumbering
THPDFDOMTableTable, TR, TH und TD mit Spaltengültigkeitsbereich in Kopfzellen
THPDFDOMImageFigure mit Alternativtext
Kopf- und Fußzeilen, wiederholte Tabellenköpfe, Abstandselemente und dekorative Rahmenals Artifact markierter Inhalt

Jede Komponente bietet außerdem SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText und Artifact für explizite Steuerung

Beispiel für ein barrierefreies Dokument

Document.Language := 'en-US';
Section := Document.AddSection;
Section.Header := THPDFDOMText.Create('Quarterly report');
Section.Body.AddHeading('Results', 1, 'Title');

List := THPDFDOMList.Create('Decimal', 'Steps');
List.AddItem('1.', 'Review the totals');
Section.Body.Add(List);

Table := THPDFDOMTable.Create('Summary');
Table.AddColumn;
Table.AddColumn;
Header := Table.AddRow(18, True);
Header[0].Text := 'Name';
Header[1].Text := 'Value';
Row := Table.AddRow(18);
Row[0].Text := 'Alpha';
Row[1].Text := '42';
Section.Body.Add(Table);

Section.Body.Add(THPDFDOMImage.Create(Bitmap, 120, 80,
  'Revenue chart by quarter', 'Chart'));

PDF.PDFUACompliance := True;
PDF.PDFUAPart := 2;
Statistics := Renderer.Render(Document, PDF);

Der Renderer weist vor dem Schreiben einer ungültigen Struktur eine erste Überschrift oberhalb von H1, übersprungene Überschriftenebenen, verwaiste Listen- oder Tabellenrollen und PDF/UA-Abbildungen ohne Alternativtext zurück

Seitenübergreifende Identität und Lesereihenfolge

Eine logische Komponente behält ein einzelnes Strukturelement, wenn sie sich über mehrere Seiten erstreckt

Jede sichtbare Fortsetzung erhält eine seitenlokale MCID und ein MCR-Dictionary, das vom bestehenden Strukturelement auf die richtige Seite verweist

Der ParentTree der Seite ordnet jede MCID demselben Strukturelement zu, während Fortsetzungsklone die logische Identität bewahren, ohne den Quelltext oder Tabellenzeilen zu kopieren

Wiederholte Tabellenköpfe auf Folgeseiten sind Artefakte, damit ihre visuelle Wiederholung den logischen Tabellenkopf nicht vor frühere Datenzeilen einsortiert

Direkte APIs für fortsetzungssicheres Schreiben

BeginTaggedContentForStructure reserviert eine MCID und öffnet markierten Inhalt für ein bereits vorhandenes Strukturelement

AppendStructureMarkedContent fügt eine explizite Seite und MCID als MCR an und aktualisiert den ParentTree der Seite

Verwenden Sie diese APIs auf niedriger Ebene, wenn ein eigener Layout-Renderer die Fortsetzungslogik außerhalb von HPDFLayoutDOM verwaltet

Statistiken und Kompatibilität

THPDFDOMRenderStatistics meldet Struktur-, markierte Inhalts- und Artefaktanzahlen zusammen mit Seiten, Platzierungen, Aufteilungen und Fortsetzungstiefe

Setzen Sie GenerateStructure vor dem Rendern auf False, wenn eine bytekompatible Ausgabe ohne Tags erforderlich ist

Verwandte APIs