Style Table Cell

Introduction

Creating professional-looking PDF tables can be tricky, but with Aspose.PDF for .NET, it’s surprisingly straightforward! Whether you’re styling headers, footers, or specific table cells, this powerful library provides you with all the tools you need to create beautifully formatted PDF documents. In this tutorial, we’ll walk through how to style table cells in a PDF document using Aspose.PDF for .NET. Don’t worry—we’ll break everything down into easy-to-follow steps.

Prerequisites

Before diving into the code, make sure you have the following prerequisites:

  1. Aspose.PDF for .NET: Download and install the latest version of Aspose.PDF from here.
  2. IDE (like Visual Studio): Set up a .NET development environment.
  3. Basic knowledge of C# programming: A bit of familiarity with C# is required.
  4. Aspose.PDF License: Obtain a temporary or full license to unlock the full features of the library. You can get a free trial here.

Import Packages

Before starting, make sure to import the necessary namespaces. You’ll need the following in your project:

using Aspose.Pdf.LogicalStructure;
using Aspose.Pdf.Tagged;
using Aspose.Pdf.Text;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

Now that everything is set up, let’s jump into the step-by-step guide!

We’re going to create a table in a PDF document and style its cells. Each step will explain the process in detail.

Step 1: Create a New PDF Document

The first step is to create a new PDF document. In Aspose.PDF, you can initialize a new Document object, which represents your PDF file.

// The path to the documents directory.
string dataDir = "YOUR DOCUMENT DIRECTORY";

// Create a new PDF document
Document document = new Document();
ITaggedContent taggedContent = document.TaggedContent;
taggedContent.SetTitle("Example table cell style");
taggedContent.SetLanguage("en-US");

Here, we initialize a PDF document and set its title and language. This gives your document a proper structure, which is essential for PDF/UA compliance.

Step 2: Set Up the Table Structure

Tables in PDFs are defined within structure elements. Let’s create the table and define the table’s rows and columns.

// Get the root structure element
StructureElement rootElement = taggedContent.RootElement;

// Create a table structure element
TableElement tableElement = taggedContent.CreateTableElement();
rootElement.AppendChild(tableElement);
TableTHeadElement tableTHeadElement = tableElement.CreateTHead();
TableTBodyElement tableTBodyElement = tableElement.CreateTBody();
TableTFootElement tableTFootElement = tableElement.CreateTFoot();

We’ve now defined the table’s head (TableTHeadElement), body (TableTBodyElement), and foot (TableTFootElement) sections. You can think of these as the skeleton of your table.

Step 3: Style the Header Cells

Styling the header cells makes them stand out. Here, we apply background colors, borders, and text alignment.

int colCount = 4;
TableTRElement headTrElement = tableTHeadElement.CreateTR();
headTrElement.AlternativeText = "Head Row";

for (int colIndex = 0; colIndex < colCount; colIndex++)
{
    TableTHElement thElement = headTrElement.CreateTH();
    thElement.SetText($"Head {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;
}

In this step, we loop through each header cell, giving it a green-yellow background, a gray border, and a right-aligned text. You can adjust these properties to match your desired design.

Step 4: Populate and Style the Table Body

The table body contains the actual data. Here’s how you can style each cell with specific margins, borders, and text settings.

int rowCount = 4;

for (int rowIndex = 0; rowIndex < rowCount; rowIndex++)
{
    TableTRElement trElement = tableTBodyElement.CreateTR();
    trElement.AlternativeText = $"Row {rowIndex}";

    for (int colIndex = 0; colIndex < colCount; colIndex++)
    {
        TableTDElement tdElement = trElement.CreateTD();
        tdElement.SetText($"Cell [{rowIndex}, {colIndex}]");
        tdElement.BackgroundColor = Color.Yellow;
        tdElement.Border = new BorderInfo(BorderSide.All, 4.0F, Color.Gray);
        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;
    }
}

In this step, we fill the table body with four rows and style each cell with yellow backgrounds and centered, bold blue text. We also use the MarginInfo class to define the padding around the text.

To give the table a complete structure, we add and style the footer cells, just like we did with the header.

TableTRElement footTrElement = tableTFootElement.CreateTR();
footTrElement.AlternativeText = "Foot Row";

for (int colIndex = 0; colIndex < colCount; colIndex++)
{
    TableTDElement tdElement = footTrElement.CreateTD();
    tdElement.SetText($"Foot {colIndex}");
}

The footer section is styled similarly to the header, making it easy for readers to follow the structure of the table.

Step 6: Save and Validate the PDF Document

Finally, we save the PDF document and check if it’s PDF/UA compliant.

// Save the tagged PDF document
document.Save(dataDir + "StyleTableCell.pdf");

// Checking PDF/UA compliance
document = new Document(dataDir + "StyleTableCell.pdf");
bool isPdfUaCompliance = document.Validate(dataDir + "StyleTableCell.xml", PdfFormat.PDF_UA_1);
Console.WriteLine($"PDF/UA compliance: {isPdfUaCompliance}");

We save the PDF and use the Validate method to ensure it meets accessibility standards (PDF/UA compliance).

Conclusion

Styling tables in a PDF using Aspose.PDF for .NET is both powerful and flexible. With a few lines of code, you can create custom table designs that will make your PDF documents stand out. From customizing cell borders and backgrounds to ensuring accessibility compliance, Aspose.PDF makes it easy to create polished PDF files.

FAQ’s

Can I apply different styles to individual table cells?

Yes, you can style individual cells by customizing the TableTDElement properties.

How can I merge table cells?

You can use the ColSpan and RowSpan properties to merge cells in a table.

Is it possible to create a PDF/UA compliant table?

Yes, as demonstrated in this guide, you can ensure PDF/UA compliance by validating your document using the Validate method.

Can I use different fonts in the table cells?

Absolutely! You can specify different fonts using the TextState object for each cell.

How do I download Aspose.PDF for .NET?

You can download it from the releases page.