Structură PDF/UA automată din arbori de layout

THPDFDOMRenderer poate transforma arborele vizual de layout într-un arbore logic de structură corespunzător, fără alocare manuală de MCID

THPDFDOMDocument.GenerateStructure are implicit True, activează ieșirea PDF etichetat, creează o rădăcină Document și un Sect per secțiune și folosește THPDFDOMDocument.Language când ținta nu are o limbă de document

Valori implicite și suprascrieri semantice

Conținut de layoutStructură generată
THPDFDOMTextP, sau H1 până la H6 când HeadingLevel este atribuit
THPDFDOMStack and THPDFDOMContainerDiv
THPDFDOMListL cu descendenți LI, Lbl și LBody, plus ListNumbering
THPDFDOMTableTable, TR, TH și TD, cu scop de coloană pe celulele de antet
THPDFDOMImageFigure cu text alternativ
Antete, subsoluri, antete de tabel repetate, separatoare și casete decorativeConținut marcat Artifact

Fiecare componentă expune, de asemenea, SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText și Artifact pentru control explicit

Exemplu de document accesibil

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-ul respinge un prim titlu peste H1, niveluri de titlu sărite, roluri de listă sau tabel orfane și o figură PDF/UA fără text alternativ înainte de a scrie o structură invalidă

Identitate între pagini și ordine de citire

O componentă logică păstrează un singur element de structură când se împarte între pagini

Fiecare continuare vizibilă primește un MCID local paginii și un dicționar MCR care indică de la elementul existent de structură către pagina corectă

ParentTree-ul paginii mapează fiecare MCID înapoi la același element de structură, în timp ce clonele de continuare păstrează identitatea logică fără a copia textul sursă sau rândurile de tabel

Antetele repetate de tabel pe paginile de continuare sunt artefacte, astfel încât repetarea lor vizuală nu reordonează antetul logic al tabelului înaintea rândurilor anterioare de corp

API-uri de redactare directe, sigure la continuare

BeginTaggedContentForStructure alocă un MCID și deschide conținut marcat pentru un element de structură care există deja

AppendStructureMarkedContent adaugă o pagină și un MCID explicite ca MCR și actualizează ParentTree-ul paginii

Folosiți aceste metode de nivel inferior când un renderer personalizat de layout deține logica de continuare în afara HPDFLayoutDOM

Statistici și compatibilitate

THPDFDOMRenderStatistics raportează numărătorile de elemente de structură, conținut marcat și artefacte, alături de pagini, plasări, împărțiri și adâncimea continuării

Setați GenerateStructure la False înainte de randare când este necesară o ieșire neetichetată compatibilă la nivel de octeți

API-uri conexe