Automatyczna struktura PDF/UA z drzew układu

THPDFDOMRenderer może przekształcić wizualne drzewo układu w pasujące logiczne drzewo struktury bez ręcznego przydzielania identyfikatorów MCID

THPDFDOMDocument.GenerateStructure domyślnie przyjmuje wartość True, włącza oznaczony wyjście PDF, tworzy jeden korzeń Document i jeden Sect na sekcję oraz używa THPDFDOMDocument.Language, gdy obiekt docelowy nie ma języka dokumentu

Domyślna semantyka i nadpisywania

Zawartość układuWygenerowana struktura
THPDFDOMTextP lub H1 do H6, gdy przypisano HeadingLevel
THPDFDOMStack i THPDFDOMContainerDiv
THPDFDOMListL z potomkami LI, Lbl i LBody oraz ListNumbering
THPDFDOMTableTable, TR, TH i TD z zakresem kolumny na komórkach nagłówka
THPDFDOMImageFigure z tekstem alternatywnym
Nagłówki, stopki, powtarzane nagłówki tabel, odstępniki i dekoracyjne ramkiOznaczona treść Artifact

Każdy komponent udostępnia również SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText i Artifact dla jawnej kontroli

Przykład dostępnego dokumentu

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);

Renderer odrzuca pierwszy nagłówek powyżej H1, pominięte poziomy nagłówków, osierocone role list lub tabel oraz figurę PDF/UA bez tekstu alternatywnego przed zapisaniem nieprawidłowej struktury

Tożsamość między stronami i kolejność czytania

Komponent logiczny zachowuje jeden element struktury, gdy rozdziela się na strony

Każda widoczna kontynuacja otrzymuje lokalny dla strony identyfikator MCID oraz słownik MCR, który wskazuje z istniejącego elementu struktury na prawidłową stronę

Strona ParentTree odwzorowuje każdy identyfikator MCID z powrotem na ten sam element struktury, podczas gdy klony kontynuacji zachowują tożsamość logiczną bez kopiowania źródłowego tekstu ani wierszy tabeli

Powtarzane nagłówki tabel na stronach kontynuacji są artefaktami, więc ich wizualne powtarzanie nie przestawia logicznego nagłówka tabeli przed wcześniejsze wiersze treści

Bezpośrednie API autorskie bezpieczne dla kontynuacji

BeginTaggedContentForStructure przydziela identyfikator MCID i otwiera oznaczoną treść dla elementu struktury, który już istnieje

AppendStructureMarkedContent dołącza jawną stronę i identyfikator MCID jako MCR oraz aktualizuje stronę ParentTree

Użyj tych metod niższego poziomu, gdy niestandardowy renderer układu posiada logikę kontynuacji poza HPDFLayoutDOM

Statystyki i zgodność

THPDFDOMRenderStatistics zgłasza liczniki elementów struktury, oznaczonych treści i artefaktów obok stron, rozmieszczeń, podziałów i głębokości kontynuacji

Ustaw GenerateStructure na False przed renderowaniem, gdy wymagane jest wyjście bez oznaczeń zgodne bajtowo

Powiązane API