Je dois créer un document compatible PDF/UA dans iText7. L'exigence la plus importante est le marquage de tout le contenu. Lorsque le marquage est activé (en appelant la méthode PdfDocument.SetTagged()
), la plupart des éléments ajoutés au document obtiennent des étiquettes correctes.Comment étiqueter des cellules d'en-tête de tableau comme TH au lieu de TD dans iText7?
Le problème est lié au marquage des cellules d'en-tête de table. Selon la norme ISO 32000-1: 2008, les cellules d'en-tête de tableau doivent être marquées TH et les cellules de données de table doivent être marquées comme TD (14.8.4.2.4, éléments de table, tableau 337). IText permet de distinguer entre les cellules d'en-tête et les cellules normales en utilisant les méthodes Table.AddHeaderCell()
et Table.AddCell()
. Ce mécanisme crée correctement des balises THead et TBody pour les groupes de lignes. Malheureusement, les cellules elles-mêmes sont toujours marquées comme TD.
Voici un exemple de code pour générer une table:
//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();
Voici un exemple de la structure de marquage que nous obtenons:
<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"
Est-il possible d'avoir iText générer des balises TH lorsque AddHeaderCell()
méthode est utilisé?
J'utilise iText 7.0.0 pour .NET (édition communautaire)
Je veux juste confirmer que la version 7.0.4.(le plus récent à ce moment) montre le même comportement –