Automatisk PDF/UA-struktur fra layouttræer
THPDFDOMRenderer kan omdanne det visuelle layouttræ til et tilsvarende logisk strukturtræ uden manuel MCID-tildeling
THPDFDOMDocument.GenerateStructure er som standard True, aktiverer tagget PDF-output, opretter én Document-rod og én Sect pr. afsnit og bruger THPDFDOMDocument.Language, når målet ikke har noget dokumentsprog
Semantiske standarder og tilsidesættelser
| Layoutindhold | Genereret struktur |
|---|---|
THPDFDOMText | P, eller H1 til H6 når HeadingLevel er tildelt |
THPDFDOMStack og THPDFDOMContainer | Div |
THPDFDOMList | L med efterkommere af LI, Lbl og LBody samt ListNumbering |
THPDFDOMTable | Table, TR, TH og TD med kolonneområde på overskriftsceller |
THPDFDOMImage | Figure med alternativ tekst |
| Sidehoveder, sidefødder, gentagne tabelhoveder, afstandselementer og dekorative bokse | Artifact-markeret indhold |
Hver komponent eksponerer også SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText og Artifact til eksplicit styring
Eksempel på tilgængeligt 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);
Rendereren afviser en første overskrift over H1, oversprungne overskriftsniveauer, forældreløse liste- eller tabelroller og en PDF/UA-figur uden alternativ tekst, før den skriver ugyldig struktur
Identitet på tværs af sider og læserækkefølge
En logisk komponent beholder ét strukturelement, når den deles på tværs af sider
Hver synlig fortsættelse modtager en sidelokal MCID og et MCR-dictionary, der peger fra det eksisterende strukturelement til den korrekte side
Sidens ParentTree afbilder hver MCID tilbage til samme strukturelement, mens fortsættelseskloner bevarer den logiske identitet uden at kopiere kildeteksten eller tabelrækkerne
Gentagne tabelhoveder på fortsættelsessider er artefakter, så deres visuelle gentagelse ikke omarrangerer det logiske tabelhoved foran tidligere brødtekstrækker
Direkte forfatnings-API'er, der er sikre ved fortsættelser
BeginTaggedContentForStructure tildeler en MCID og åbner markeret indhold for et strukturelement, der allerede findes
AppendStructureMarkedContent tilføjer en eksplicit side og MCID som en MCR og opdaterer sidens ParentTree
Brug disse lavere niveau-metoder, når en brugerdefineret layoutrenderer ejer fortsættelseslogik uden for HPDFLayoutDOM
Statistik og kompatibilitet
THPDFDOMRenderStatistics rapporterer antal strukturelementer, markeret indhold og artefakter sammen med sider, placeringer, opdelinger og fortsættelsesdybde
Sæt GenerateStructure til False før rendering, når bytekompatibelt output uden tags er påkrævet