我需要在iText7中创建符合PDF/UA的文档。最重要的要求是标记所有内容。启用标记时(通过调用PdfDocument.SetTagged()
方法)添加到文档的大多数元素都可以获得正确的标签。如何在iText7中将表格标题单元标记为TH而不是TD?
问题是标记表格标题单元格。根据ISO 32000-1:2008,表格标题单元必须标记为TH,并且表格数据单元必须标记为TD(14.8.4.2.4。表格元素,表337)。
iText允许通过使用Table.AddHeaderCell()
和Table.AddCell()
方法来区分标题单元格和常规单元格。此机制可正确地为行组创建THead和TBody标记。不幸的是,这些单元本身总是被标记为TD。
下面是示例代码,用于生成一个表:
//var pdfDoc = new PdfDocument(...)
pdfDoc.SetTagged();
var doc = new Document(pdfDoc);
var table = new Table(2);
table.AddHeaderCell("Header 0");
table.AddHeaderCell("Header 1");
table.AddCell("Data 0");
table.AddCell("Data 1");
doc.Add(table);
doc.Close();
下面是我们得到标签结构的一个例子:
<Table>
<THead>
<TR>
<TD> //must be TH!
<P>
"Header 0"
<TD>
<P>
"Header 1"
<TBody>
<TR>
<TD> //TD is correct here
<P>
"Data 0"
<TD>
<P>
"Data 1"
是否有可能具有iText生成TH代码时AddHeaderCell()
方法用来?
我利用iText 7.0.0用于.NET(社区版)
只是想确认版本7.0.4。(此时最新)显示相同的行为 –