Automatische PDF/UA-structuur uit lay-outboom
THPDFDOMRenderer kan de visuele lay-outboom omzetten in een overeenkomende logische structuurboom zonder handmatige MCID-toewijzing
THPDFDOMDocument.GenerateStructure is standaard True, schakelt gelabelde PDF-uitvoer in, maakt één Document-root en één Sect per sectie en gebruikt THPDFDOMDocument.Language wanneer het doel geen documenttaal heeft
Semantische standaarden en overschrijvingen
| Lay-outinhoud | Gegenereerde structuur |
|---|---|
THPDFDOMText | P, of H1 tot en met H6 wanneer HeadingLevel is toegewezen |
THPDFDOMStack en THPDFDOMContainer | Div |
THPDFDOMList | L met LI-, Lbl- en LBody-descendenten plus ListNumbering |
THPDFDOMTable | Table, TR, TH en TD, met kolomscope op kopcellen |
THPDFDOMImage | Figure met alternatieve tekst |
| Kop- en voetteksten, herhaalde tabealkoppen, spaties en decoratieve vakken | Artifact-gemarkeerde inhoud |
Elk component stelt ook SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText en Artifact beschikbaar voor expliciete controle
Toegankelijk documentvoorbeeld
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);
De renderer weigert een eerste kop boven H1, overgeslagen kopniveaus, wees-lijsten of tabelrollen en een PDF/UA-figuur zonder alternatieve tekst vóór het schrijven van ongeldige structuur
Identiteit en leesvolgorde over pagina's
Een logisch component behoudt één structuurelement wanneer het over pagina's wordt gesplitst
Elke zichtbare voortzetting ontvangt een pagina-lokale MCID en een MCR-woordenlijst die vanaf het bestaande structuurelement naar de juiste pagina wijst
De pagina-ParentTree mapt elke MCID terug naar datzelfde structuurelement, terwijl voortzettingsklonen de logische identiteit behouden zonder de brontekst of tabelrijen te kopiëren
Herhaalde tabealkoppen op voortzettingspagina's zijn artefacten zodat hun visuele herhaling de logische tabealkop niet vóór eerdere tabelrij-rijen herordent
Directe voortzetting-veilige authoring-API's
BeginTaggedContentForStructure wijst een MCID toe en opent gemarkeerde inhoud voor een structuurelement dat al bestaat
AppendStructureMarkedContent voegt een expliciete pagina en MCID toe als een MCR en werkt de pagina-ParentTree bij
Gebruik deze methoden op lager niveau wanneer een aangepaste lay-outrenderer voortzettingslogica buiten HPDFLayoutDOM beheert
Statistieken en compatibiliteit
THPDFDOMRenderStatistics rapporteert aantallen structuurelementen, gemarkeerde inhoud en artefacten naast pagina's, plaatsingen, splitsingen en voortzettingsdiepte
Stel GenerateStructure in op False vóór het renderen wanneer byte-compatibele ongetagde uitvoer vereist is