When it comes to generating PDF documents dynamically, iText 8 is a powerful and versatile Java library that provides a wide range of functionalities. One common requirement in PDF generation is the need to include tables to present structured data. In this blog post, we will explore how to create a table in a PDF document using the iText 8 library.
The Table
class in iText 8 is a layout element that represents data in a two-dimensional grid. It allows you to create tables with rows and columns to organize and display data in a structured format.
To create a table using iText 8, we would first need to create an instance of Document
class where the table will be added. We then define a Table
object either by passing the number columns, or an array of float
for the column width as parameter.
Here is how you can create a table with iText 8:
package org.kodejava.itext;
import com.itextpdf.kernel.colors.DeviceGray;
import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.FileNotFoundException;
public class CreateTable {
public static void main(String[] args) throws FileNotFoundException {
String destination = "table_example.pdf";
PdfWriter writer = new PdfWriter(destination);
PdfDocument pdf = new PdfDocument(writer);
try (Document document = new Document(pdf)) {
float[] pointColumnWidths = {150F, 200F, 100F};
Table table = new Table(pointColumnWidths);
// Add header cells to the table
table.addHeaderCell(new Cell().add(new Paragraph("Id"))
.setFontColor(DeviceRgb.WHITE).setBold().setTextAlignment(TextAlignment.CENTER)
.setBackgroundColor(DeviceGray.GRAY));
table.addHeaderCell(new Cell().add(new Paragraph("Name"))
.setFontColor(DeviceRgb.WHITE).setBold().setTextAlignment(TextAlignment.CENTER)
.setBackgroundColor(DeviceGray.GRAY));
table.addHeaderCell(new Cell().add(new Paragraph("Age"))
.setFontColor(DeviceRgb.WHITE).setBold().setTextAlignment(TextAlignment.CENTER)
.setBackgroundColor(DeviceGray.GRAY));
// Add cells to the table
table.addCell(new Cell().add(new Paragraph("1")));
table.addCell(new Cell().add(new Paragraph("Alice")));
table.addCell(new Cell().add(new Paragraph("20")));
table.addCell(new Cell().add(new Paragraph("2")));
table.addCell(new Cell().add(new Paragraph("Bob")));
table.addCell(new Cell().add(new Paragraph("25")));
// Add table to document
document.add(table);
}
}
}
This will create a new document with a table including three columns and three rows. The first row is the table header, we style it with a gray background, set the font weight to bold and center aligned the text.
Maven Dependencies
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-core</artifactId>
<version>8.0.4</version>
<type>pom</type>
</dependency>