Travailler avec les tables dans les PDF balisés
Créer une table dans un PDF balisé
Aspose.PDF pour .NET permet de créer une table dans des documents PDF balisés. Aspose.PDF pour .NET permet de créer une table dans les documents PDF étiquetés.
Le code suivant fonctionne également avec la bibliothèque Aspose.PDF.Drawing.
Le code suivant montre comment créer une table dans le document PDF étiqueté :
// Pour des exemples complets et des fichiers de données, veuillez aller à https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Le chemin vers le répertoire des documents.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Créer le document
Document document = new Document();
ITaggedContent contenuTaggé = document.TaggedContent;
contenuTaggé.SetTitle("Tableau Exemple");
contenuTaggé.SetLanguage("en-US");
// Obtenir l'élément de structure racine
StructureElement rootElement = contenuTaggé.RootElement;
TableElement tableElement = contenuTaggé.CreateTableElement();
rootElement.AppendChild(tableElement);
tableElement.Border = new BorderInfo(BorderSide.All, 1.2F, Color.DarkBlue);
TableTHeadElement tableTHeadElement = tableElement.CreateTHead();
TableTBodyElement tableTBodyElement = tableElement.CreateTBody();
TableTFootElement tableTFootElement = tableElement.CreateTFoot();
int rowCount = 50;
int colCount = 4;
int rowIndex;
int colIndex;
TableTRElement headTrElement = tableTHeadElement.CreateTR();
headTrElement.AlternativeText = "Ligne d'en-tête";
headTrElement.BackgroundColor = Color.LightGray;
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTHElement thElement = headTrElement.CreateTH();
thElement.SetText(String.Format("En-tête {0}", colIndex));
thElement.BackgroundColor = Color.GreenYellow;
thElement.Border = new BorderInfo(BorderSide.All, 4.0F, Color.Gray);
thElement.IsNoBorder = true;
thElement.Margin = new MarginInfo(16.0, 2.0, 8.0, 2.0);
thElement.Alignment = HorizontalAlignment.Right;
}
for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
TableTRElement trElement = tableTBodyElement.CreateTR();
trElement.AlternativeText = String.Format("Ligne {0}", rowIndex);
for (colIndex = 0; colIndex < colCount; colIndex++)
{
int colSpan = 1;
int rowSpan = 1;
if (colIndex == 1 && rowIndex == 1)
{
colSpan = 2;
rowSpan = 2;
}
else if (colIndex == 2 && (rowIndex == 1 || rowIndex == 2))
{
continue;
}
else if (rowIndex == 2 && (colIndex == 1 || colIndex == 2))
{
continue;
}
TableTDElement tdElement = trElement.CreateTD();
tdElement.SetText(String.Format("Cellule [{0}, {1}]", rowIndex, colIndex));
tdElement.BackgroundColor = Color.Yellow;
tdElement.Border = new BorderInfo(BorderSide.All, 4.0F, Color.Gray);
tdElement.IsNoBorder = false;
tdElement.Margin = new MarginInfo(8.0, 2.0, 8.0, 2.0);
tdElement.Alignment = HorizontalAlignment.Center;
TextState cellTextState = new TextState();
cellTextState.ForegroundColor = Color.DarkBlue;
cellTextState.FontSize = 7.5F;
cellTextState.FontStyle = FontStyles.Bold;
cellTextState.Font = FontRepository.FindFont("Arial");
tdElement.DefaultCellTextState = cellTextState;
tdElement.IsWordWrapped = true;
tdElement.VerticalAlignment = VerticalAlignment.Center;
tdElement.ColSpan = colSpan;
tdElement.RowSpan = rowSpan;
}
}
TableTRElement footTrElement = tableTFootElement.CreateTR();
footTrElement.AlternativeText = "Ligne de pied";
footTrElement.BackgroundColor = Color.LightSeaGreen;
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = footTrElement.CreateTD();
tdElement.SetText(String.Format("Pied {0}", colIndex));
tdElement.Alignment = HorizontalAlignment.Center;
tdElement.StructureTextState.FontSize = 7F;
tdElement.StructureTextState.FontStyle = FontStyles.Bold;
}
StructureAttributes tableAttributes = tableElement.Attributes.GetAttributes(AttributeOwnerStandard.Table);
StructureAttribute summaryAttribute = new StructureAttribute(AttributeKey.Summary);
summaryAttribute.SetStringValue("Le texte récapitulatif pour la table");
tableAttributes.SetAttribute(summaryAttribute);
// Sauvegarder le document PDF étiqueté
document.Save(dataDir + "CreateTableElement.pdf");
// Vérification de la conformité PDF/UA
document = new Document(dataDir + "CreateTableElement.pdf");
bool isPdfUaCompliance = document.Validate(dataDir + "table.xml", PdfFormat.PDF_UA_1);
Console.WriteLine(String.Format("Conformité PDF/UA : {0}", isPdfUaCompliance));
Style Table Element
Aspose.PDF pour .NET permet de styliser un tableau dans un document PDF balisé. Pour styliser un tableau, vous pouvez créer un tableau en utilisant la méthode CreateTableElement() de l’interface ITaggedContent et définir le style du tableau en utilisant les propriétés de la classe TableElement. Voici la liste des propriétés que vous pouvez utiliser pour styliser un tableau :
- BackgroundColor
- Border
- Alignment
- CornerStyle
- Style de coin
- Cassé
- Ajustement de colonne
- Largeurs de colonnes
- Bordure de cellule par défaut
- Rembourrage de cellule par défaut
- État du texte de cellule par défaut
- Largeur de colonne par défaut
- Est cassé
- IsBroken - Est brisé
- IsBordersIncluded - Inclut les bordures
- Left - Gauche
- Top - Haut
Le code suivant montre comment styliser une table dans un document PDF tagué :
// Pour des exemples complets et des fichiers de données, veuillez aller à https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Le chemin vers le répertoire des documents.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Créer le document
Document document = new Document();
ITaggedContent taggedContent = document.TaggedContent;
taggedContent.SetTitle("Style de table exemple");
taggedContent.SetLanguage("en-US");
// Obtenir l'élément de structure racine
StructureElement rootElement = taggedContent.RootElement;
// Créer un élément de structure de table
TableElement tableElement = taggedContent.CreateTableElement();
rootElement.AppendChild(tableElement);
tableElement.BackgroundColor = Color.Beige;
tableElement.Border = new BorderInfo(BorderSide.All, 0.80F, Color.Gray);
tableElement.Alignment = HorizontalAlignment.Center;
tableElement.Broken = TableBroken.Vertical;
tableElement.ColumnAdjustment = ColumnAdjustment.AutoFitToWindow;
tableElement.ColumnWidths = "80 80 80 80 80";
tableElement.DefaultCellBorder = new BorderInfo(BorderSide.All, 0.50F, Color.DarkBlue);
tableElement.DefaultCellPadding = new MarginInfo(16.0, 2.0, 8.0, 2.0);
tableElement.DefaultCellTextState.ForegroundColor = Color.DarkCyan;
tableElement.DefaultCellTextState.FontSize = 8F;
tableElement.DefaultColumnWidth = "70";
tableElement.IsBroken = false;
tableElement.IsBordersIncluded = true;
tableElement.Left = 0F;
tableElement.Top = 40F;
tableElement.RepeatingColumnsCount = 2;
tableElement.RepeatingRowsCount = 3;
TextState rowStyle = new TextState();
rowStyle.BackgroundColor = Color.LightCoral;
tableElement.RepeatingRowsStyle = rowStyle;
TableTHeadElement tableTHeadElement = tableElement.CreateTHead();
TableTBodyElement tableTBodyElement = tableElement.CreateTBody();
TableTFootElement tableTFootElement = tableElement.CreateTFoot();
int rowCount = 10;
int colCount = 5;
int rowIndex;
int colIndex;
TableTRElement headTrElement = tableTHeadElement.CreateTR();
headTrElement.AlternativeText = "Ligne d'en-tête";
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTHElement thElement = headTrElement.CreateTH();
thElement.SetText(String.Format("En-tête {0}", colIndex));
}
for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
TableTRElement trElement = tableTBodyElement.CreateTR();
trElement.AlternativeText = String.Format("Ligne {0}", rowIndex);
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = trElement.CreateTD();
tdElement.SetText(String.Format("Cellule [{0}, {1}]", rowIndex, colIndex));
}
}
TableTRElement footTrElement = tableTFootElement.CreateTR();
footTrElement.AlternativeText = "Ligne de pied";
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = footTrElement.CreateTD();
tdElement.SetText(String.Format("Pied {0}", colIndex));
}
// Sauvegarder le document PDF tagué
document.Save(dataDir + "StyleTableElement.pdf");
// Vérifier la conformité PDF/UA
document = new Document(dataDir + "StyleTableElement.pdf");
bool isPdfUaCompliance = document.Validate(dataDir + "StyleTableElement.xml", PdfFormat.PDF_UA_1);
Console.WriteLine(String.Format("Conformité PDF/UA : {0}", isPdfUaCompliance));
Style Table Row
Aspose.PDF pour .NET permet de styliser une ligne de tableau dans un document PDF tagué. Pour styliser une ligne de tableau, vous pouvez utiliser les propriétés de la classe TableTRElement. Voici la liste des propriétés que vous pouvez utiliser pour styliser une ligne de tableau :
- Couleur de Fond
- Bordure
- Bordure de Cellule par Défaut
- Hauteur Minimale de la Ligne
- Hauteur Fixe de la Ligne
- EstDansNouvellePage
- LigneCassée
- État du Texte de la Cellule par Défaut
- Rembourrage de Cellule par Défaut
- Alignement Vertical
Le fragment de code suivant montre comment styliser une ligne de tableau dans le document PDF tagué :
// Pour des exemples complets et des fichiers de données, veuillez aller à https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Le chemin vers le répertoire des documents.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Créer un document
Document document = new Document();
ITaggedContent taggedContent = document.TaggedContent;
taggedContent.SetTitle("Exemple de style de ligne de tableau");
taggedContent.SetLanguage("en-US");
// Obtenir l'élément de structure racine
StructureElement rootElement = taggedContent.RootElement;
// Créer un élément de structure de tableau
TableElement tableElement = taggedContent.CreateTableElement();
rootElement.AppendChild(tableElement);
TableTHeadElement tableTHeadElement = tableElement.CreateTHead();
TableTBodyElement tableTBodyElement = tableElement.CreateTBody();
TableTFootElement tableTFootElement = tableElement.CreateTFoot();
int rowCount = 7;
int colCount = 3;
int rowIndex;
int colIndex;
TableTRElement headTrElement = tableTHeadElement.CreateTR();
headTrElement.AlternativeText = "Ligne d'En-tête";
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTHElement thElement = headTrElement.CreateTH();
thElement.SetText(String.Format("En-tête {0}", colIndex));
}
for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
TableTRElement trElement = tableTBodyElement.CreateTR();
trElement.AlternativeText = String.Format("Ligne {0}", rowIndex);
trElement.BackgroundColor = Color.LightGoldenrodYellow;
trElement.Border = new BorderInfo(BorderSide.All, 0.75F, Color.DarkGray);
trElement.DefaultCellBorder = new BorderInfo(BorderSide.All, 0.50F, Color.Blue);
trElement.MinRowHeight = 100.0;
trElement.FixedRowHeight = 120.0;
trElement.IsInNewPage = (rowIndex % 3 == 1);
trElement.IsRowBroken = true;
TextState cellTextState = new TextState();
cellTextState.ForegroundColor = Color.Red;
trElement.DefaultCellTextState = cellTextState;
trElement.DefaultCellPadding = new MarginInfo(16.0, 2.0, 8.0, 2.0);
trElement.VerticalAlignment = VerticalAlignment.Bottom;
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = trElement.CreateTD();
tdElement.SetText(String.Format("Cellule [{0}, {1}]", rowIndex, colIndex));
}
}
TableTRElement footTrElement = tableTFootElement.CreateTR();
footTrElement.AlternativeText = "Ligne de Pied";
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = footTrElement.CreateTD();
tdElement.SetText(String.Format("Pied {0}", colIndex));
}
// Sauvegarder le document PDF tagué
document.Save(dataDir + "StyleTableRow.pdf");
// Vérification de la conformité PDF/UA
document = new Document(dataDir + "StyleTableRow.pdf");
bool isPdfUaCompliance = document.Validate(dataDir + "StyleTableRow.xml", PdfFormat.PDF_UA_1);
Console.WriteLine(String.Format("Conformité PDF/UA : {0}", isPdfUaCompliance));
Style de cellule de tableau
Aspose.PDF pour .NET permet de styliser une cellule de tableau dans un document PDF balisé. Pour styliser une cellule de tableau, vous pouvez utiliser les propriétés de la classe TableCellElement. Voici la liste des propriétés que vous pouvez utiliser pour styliser une cellule de tableau :
- BackgroundColor
- Border
- IsNoBorder
- Margin
- Alignment
- DefaultCellTextState
- DefaultCellTextState
- IsWordWrapped
- VerticalAlignment
- ColSpan
- RowSpan
Le code suivant montre comment styliser une cellule de tableau dans un document PDF balisé :
// Pour des exemples complets et des fichiers de données, veuillez aller sur https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Le chemin vers le répertoire des documents.
string dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Créer un document
Document document = new Document();
ITaggedContent taggedContent = document.TaggedContent;
taggedContent.SetTitle("Style de cellule de tableau exemple");
taggedContent.SetLanguage("en-US");
// Obtenir l'élément de structure racine
StructureElement rootElement = taggedContent.RootElement;
// Créer un élément de structure de tableau
TableElement tableElement = taggedContent.CreateTableElement();
rootElement.AppendChild(tableElement);
TableTHeadElement tableTHeadElement = tableElement.CreateTHead();
TableTBodyElement tableTBodyElement = tableElement.CreateTBody();
TableTFootElement tableTFootElement = tableElement.CreateTFoot();
int rowCount = 4;
int colCount = 4;
int rowIndex;
int colIndex;
TableTRElement headTrElement = tableTHeadElement.CreateTR();
headTrElement.AlternativeText = "Ligne d'en-tête";
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTHElement thElement = headTrElement.CreateTH();
thElement.SetText(String.Format("En-tête {0}", colIndex));
thElement.BackgroundColor = Color.GreenYellow;
thElement.Border = new BorderInfo(BorderSide.All, 4.0F, Color.Gray);
thElement.IsNoBorder = true;
thElement.Margin = new MarginInfo(16.0, 2.0, 8.0, 2.0);
thElement.Alignment = HorizontalAlignment.Right;
}
for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
TableTRElement trElement = tableTBodyElement.CreateTR();
trElement.AlternativeText = String.Format("Ligne {0}", rowIndex);
for (colIndex = 0; colIndex < colCount; colIndex++)
{
int colSpan = 1;
int rowSpan = 1;
if (colIndex == 1 && rowIndex == 1)
{
colSpan = 2;
rowSpan = 2;
}
else if (colIndex == 2 && (rowIndex == 1 || rowIndex == 2))
{
continue;
}
else if (rowIndex == 2 && (colIndex == 1 || colIndex == 2))
{
continue;
}
TableTDElement tdElement = trElement.CreateTD();
tdElement.SetText(String.Format("Cellule [{0}, {1}]", rowIndex, colIndex));
tdElement.BackgroundColor = Color.Yellow;
tdElement.Border = new BorderInfo(BorderSide.All, 4.0F, Color.Gray);
tdElement.IsNoBorder = false;
tdElement.Margin = new MarginInfo(8.0, 2.0, 8.0, 2.0);
tdElement.Alignment = HorizontalAlignment.Center;
TextState cellTextState = new TextState();
cellTextState.ForegroundColor = Color.DarkBlue;
cellTextState.FontSize = 7.5F;
cellTextState.FontStyle = FontStyles.Bold;
cellTextState.Font = FontRepository.FindFont("Arial");
tdElement.DefaultCellTextState = cellTextState;
tdElement.IsWordWrapped = true;
tdElement.VerticalAlignment = VerticalAlignment.Center;
tdElement.ColSpan = colSpan;
tdElement.RowSpan = rowSpan;
}
}
TableTRElement footTrElement = tableTFootElement.CreateTR();
footTrElement.AlternativeText = "Ligne de pied";
for (colIndex = 0; colIndex < colCount; colIndex++)
{
TableTDElement tdElement = footTrElement.CreateTD();
tdElement.SetText(String.Format("Pied {0}", colIndex));
}
// Enregistrer le document PDF balisé
document.Save(dataDir + "StyleTableCell.pdf");
// Vérifier la conformité PDF/UA
document = new Document(dataDir + "StyleTableCell.pdf");
bool isPdfUaCompliance = document.Validate(dataDir + "StyleTableCell.xml", PdfFormat.PDF_UA_1);
Console.WriteLine(String.Format("Conformité PDF/UA : {0}", isPdfUaCompliance));
Sure, I'll need the document or the content you'd like translated to proceed. Please paste the text here.