Automatisk PDF/UA-struktur från layoutträd
THPDFDOMRenderer kan förvandla det visuella layoutträdet till ett matchande logiskt strukturträd utan manuell MCID-allokering
THPDFDOMDocument.GenerateStructure är True som standard, aktiverar taggad PDF-utdata, skapar en Document-rot och en Sect per sektion samt använder THPDFDOMDocument.Language när målfilen saknar dokumentspråk
Semantiska standardvärden och åsidosättanden
| Layoutinnehåll | Genererad struktur |
|---|---|
THPDFDOMText | P, eller H1 genom H6 när HeadingLevel är tilldelat |
THPDFDOMStack och THPDFDOMContainer | Div |
THPDFDOMList | L med LI-, Lbl- och LBody-avkomlingar plus ListNumbering |
THPDFDOMTable | Table, TR, TH och TD, med kolumnomfång på rubrikceller |
THPDFDOMImage | Figure med alternativtext |
| Sidhuvuden, sidfötter, upprepade tabellhuvuden, mellanrum och dekorativa rutor | Artifact-markerat innehåll |
Varje komponent exponerar även SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText och Artifact för explicit kontroll
Exempel på tillgängligt 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);
Renderaren avvisar en första rubrik över H1, hoppade rubriknivåer, föräldralösa lista- eller tabellroller samt en PDF/UA-figur utan alternativtext innan ogiltig struktur skrivs
Identitet och läsordning över sidor
En logisk komponent behåller ett strukturelement när den delas upp över sidor
Varje synligt avbrott får en sidlokal MCID och en MCR-ordlista som pekar från det befintliga strukturelementet till rätt sida
Sidans ParentTree mappar varje MCID tillbaka till samma strukturelement, medan fortsättningskloner bevarar logisk identitet utan att kopiera källtexten eller tabellraderna
Upprepade tabellhuvuden på fortsättningssidor är artefakter så att deras visuella upprepning inte ordnar om det logiska tabellhuvudet före tidigare kroppsrader
Direkta fortsättningssäkra redigerings-API:er
BeginTaggedContentForStructure allokerar en MCID och öppnar markerat innehåll för ett strukturelement som redan finns
AppendStructureMarkedContent lägger till en explicit sida och MCID som en MCR och uppdaterar sidans ParentTree
Använd dessa lägre nivåns metoder när en anpassad layoutrenderare äger fortsättningslogik utanför HPDFLayoutDOM
Statistik och kompatibilitet
THPDFDOMRenderStatistics rapporterar antal struktur-, markerat-innehålls- och artefaktelement tillsammans med sidor, placeringar, delningar och fortsättningsdjup
Ställ in GenerateStructure på False före rendering när byte-kompatibel otaggad utdata krävs