Style Table Row

Introduction

When it comes to creating well-structured and beautifully formatted PDF documents, Aspose.PDF for .NET is a go-to solution. Whether you’re automating reports, invoices, or creating dynamic tables, formatting tables with various styles is key to a polished document. In this tutorial, we’ll dive deep into styling a table row using Aspose.PDF for .NET. And don’t worry, I’ll guide you step-by-step, just like a good conversation over coffee!

Prerequisites

Before we jump into the nitty-gritty, let’s make sure you’ve got all your ducks in a row. You’ll need:

  1. Aspose.PDF for .NET Library
    If you don’t have it already, you can grab it from here. You can also get a free trial to get started.
  2. Development Environment
    Set up Visual Studio or any C# IDE of your choice. You’ll also need .NET installed, but I’m guessing you’re familiar with that already.
  3. Basic Knowledge of C# and .NET
    A good understanding of C# will make this tutorial a breeze. But don’t worry, I’ll explain each step in detail!

Import Packages

Before we can start working with Aspose.PDF, we need to import the necessary namespaces. In your C# project, make sure you include the following:

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

These are essential to create and style the table, and of course, to work with tagged content for compliance.

Now let’s break down the task step by step, so you can style your table rows like a pro!

Step 1: Create a New PDF Document

First things first: let’s create a brand-new PDF document. This document will hold all the styled table rows.

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

// Create document
Document document = new Document();

Here, we’re simply initializing a new Document object that will represent our PDF file. Make sure to set the directory path where you’ll save your output files.

Step 2: Work with Tagged Content

To structure your PDF for accessibility, we’ll work with tagged content. This helps in creating structured elements like tables, ensuring they are compliant with accessibility standards such as PDF/UA.

ITaggedContent taggedContent = document.TaggedContent;
taggedContent.SetTitle("Example table row style");
taggedContent.SetLanguage("en-US");

Here, we’re setting the title and language for the PDF’s tagged content. It’s like giving your PDF a name and telling it what language it should speak!

Step 3: Define the Table Structure

Next, let’s define the structure of the table we’re about to create. Every table needs a header, body, and footer – much like a well-organized blog post!

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

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

What we’re doing here is creating a table with a header (THead), body (TBody), and footer (TFoot). These elements are going to hold our rows.

Step 4: Add the Table Header Row

Tables without headers are like books without titles. Let’s create the header row first to provide context for the data.

TableTRElement headTrElement = tableTHeadElement.CreateTR();
headTrElement.AlternativeText = "Head Row";
for (int colIndex = 0; colIndex < 3; colIndex++)
{
    TableTHElement thElement = headTrElement.CreateTH();
    thElement.SetText(String.Format("Head {0}", colIndex));
}

Here, we loop through and add three header cells (TableTHElement), giving each one a descriptive text. Simple, right?

Step 5: Add Styled Body Rows

Now comes the fun part – styling the rows! Let’s create seven rows with custom styles. We’ll set background colors, borders, padding, and text alignment.

for (int rowIndex = 0; rowIndex < 7; rowIndex++)
{
    TableTRElement trElement = tableTBodyElement.CreateTR();
    trElement.AlternativeText = String.Format("Row {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;

    for (int colIndex = 0; colIndex < 3; colIndex++)
    {
        TableTDElement tdElement = trElement.CreateTD();
        tdElement.SetText(String.Format("Cell [{0}, {1}]", rowIndex, colIndex));
    }
}
  • Background Color: We used a light goldenrod yellow for that professional yet warm touch.
  • Borders: Each row gets a dark gray outer border and blue cell borders for a sharp look.
  • Height and Padding: The row heights are set, and padding is added for a clean appearance.
  • Page Breaks: To make the table more readable, every second row starts on a new page.

Much like the header, the footer anchors the table. Let’s create one.

TableTRElement footTrElement = tableTFootElement.CreateTR();
footTrElement.AlternativeText = "Foot Row";
for (int colIndex = 0; colIndex < 3; colIndex++)
{
    TableTDElement tdElement = footTrElement.CreateTD();
    tdElement.SetText(String.Format("Foot {0}", colIndex));
}

We simply loop through three footer cells and add a bit of text. The alternative text for the footer is “Foot Row” to make it accessible.

Step 7: Save the PDF Document

Now that the table’s all set up, it’s time to save your masterpiece!

document.Save(dataDir + "StyleTableRow.pdf");

Just like that, your PDF is saved with all the beautiful table rows we just styled.

Step 8: Validate PDF/UA Compliance

To ensure our PDF adheres to accessibility standards, we’ll validate it for PDF/UA compliance.

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

This ensures that your PDF meets the PDF/UA standard, making it accessible to everyone. Accessibility is the name of the game!

Conclusion

And there you have it! With just a few lines of code, you’ve created a fully styled table in a PDF using Aspose.PDF for .NET. From headers to footers, we’ve styled each row, added accessibility elements, and even validated the document for compliance. Whether you’re working on corporate reports, presentations, or just having fun with PDFs, this guide has you covered. Now, go ahead and start styling your tables like a pro!

FAQ’s

Can I change the table’s font style as well?

Yes! You can modify the font style using the TextState object for each cell, allowing for full customization.

How do I add more columns to my table?

Just adjust the colCount variable and add more cells in the loops for headers, body, and footers.

What happens if I don’t set the row height?

If you don’t set the row height, the table will automatically adjust based on content.

Can I use this for a dynamic number of rows?

Absolutely! You can fetch data from a database or any other source and dynamically adjust row and column counts.

Is Aspose.PDF for .NET free to use?

Aspose.PDF for .NET is a licensed product, but you can try it out with a free trial or get a temporary license.