Skip to main content
Skip table of contents

Render data as table

Examples written in answer to the questions:


arraytotable

JAVA

JAVA
/*
    This file is part of the iText (R) project.
    Copyright (c) 1998-2023 Apryse Group NV
    Authors: Apryse Software.

    For more information, please contact iText Software at this address:
    sales@itextpdf.com
 */
package com.itextpdf.samples.sandbox.tables;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.properties.UnitValue;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayToTable {
    public static final String DEST = "./target/sandbox/tables/array_to_table.pdf";

    public static void main(String[] args) throws Exception {
        File file = new File(DEST);
        file.getParentFile().mkdirs();

        new ArrayToTable().manipulatePdf(DEST);
    }

    protected void manipulatePdf(String dest) throws Exception {
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
        Document doc = new Document(pdfDoc);

        // By default column width is calculated automatically for the best fit.
        // useAllAvailableWidth() method makes table use the whole page's width while placing the content.
        Table table = new Table(UnitValue.createPercentArray(8)).useAllAvailableWidth();

        List<List<String>> dataset = getData();
        for (List<String> record : dataset) {
            for (String field : record) {
                table.addCell(new Cell().add(new Paragraph(field)));
            }
        }

        doc.add(table);

        doc.close();
    }

    private static List<List<String>> getData() {
        List<List<String>> data = new ArrayList<>();
        String[] tableTitleList = {" Title", " (Re)set", " Obs", " Mean", " Std.Dev", " Min", " Max", "Unit"};
        data.add(Arrays.asList(tableTitleList));

        for (int i = 0; i < 10; i++) {
            List<String> dataLine = new ArrayList<>();
            for (int j = 0; j < tableTitleList.length; j++) {
                dataLine.add(tableTitleList[j] + " " + (i + 1));
            }
            data.add(dataLine);
        }

        return data;
    }
}

C#

C#
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;

namespace iText.Samples.Sandbox.Tables
{
    public class ArrayToTable
    {
        public static readonly string DEST = "results/sandbox/tables/array_to_table.pdf";

        public static void Main(String[] args)
        {
            FileInfo file = new FileInfo(DEST);
            file.Directory.Create();

            new ArrayToTable().ManipulatePdf(DEST);
        }

        private void ManipulatePdf(string dest)
        {
            PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
            Document doc = new Document(pdfDoc);

            // By default column width is calculated automatically for the best fit.
            // useAllAvailableWidth() method makes table use the whole page's width while placing the content.
            Table table = new Table(UnitValue.CreatePercentArray(8)).UseAllAvailableWidth();

            List<List<string>> dataset = GetData();
            foreach (List<string> record in dataset)
            {
                foreach (string field in record)
                {
                    table.AddCell(new Cell().Add(new Paragraph(field)));
                }
            }

            doc.Add(table);

            doc.Close();
        }

        private static List<List<string>> GetData()
        {
            List<List<string>> data = new List<List<string>>();
            String[] tableTitleList = {" Title", " (Re)set", " Obs", " Mean", " Std.Dev", " Min", " Max", "Unit"};
            data.Add(tableTitleList.ToList());

            for (int i = 0; i < 10; i++)
            {
                List<string> dataLine = new List<string>();
                for (int j = 0; j < tableTitleList.Length; j++)
                {
                    dataLine.Add(tableTitleList[j] + " " + (i + 1));
                }

                data.Add(dataLine);
            }

            return data;
        }
    }
}


unitedstates

JAVA

JAVA
/*
    This file is part of the iText (R) project.
    Copyright (c) 1998-2023 Apryse Group NV
    Authors: Apryse Software.

    For more information, please contact iText Software at this address:
    sales@itextpdf.com
 */
package com.itextpdf.samples.sandbox.tables;

import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.properties.UnitValue;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.StringTokenizer;

public class UnitedStates {
    public static final String DATA = "./src/main/resources/data/united_states.csv";

    public static final String DEST = "./target/sandbox/tables/united_states.pdf";

    public static void main(String[] args) throws Exception {
        File file = new File(DEST);
        file.getParentFile().mkdirs();

        new UnitedStates().manipulatePdf(DEST);
    }

    protected void manipulatePdf(String dest) throws Exception {
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
        Document doc = new Document(pdfDoc, PageSize.A4.rotate());

        PdfFont font = PdfFontFactory.createFont(StandardFonts.HELVETICA);
        PdfFont bold = PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);

        Table table = new Table(UnitValue.createPercentArray(new float[] {14, 6, 12, 16, 12, 12, 12, 12, 6}));
        try (BufferedReader br = new BufferedReader(new FileReader(DATA))) {
            String line = br.readLine();

            // The last argument defines which cell will be added: a header or the usual one
            addRowToTable(table, line, bold, true);
            while ((line = br.readLine()) != null) {
                addRowToTable(table, line, font, false);
            }
        }

        doc.add(table);

        doc.close();
    }

    private static void addRowToTable(Table table, String line, PdfFont font, boolean isHeader) {

        // Parses string line with specified delimiter
        StringTokenizer tokenizer = new StringTokenizer(line, ";");

        // Creates cells according to parsed csv line
        while (tokenizer.hasMoreTokens()) {
            Cell cell = new Cell().add(new Paragraph(tokenizer.nextToken()).setFont(font));

            if (isHeader) {
                table.addHeaderCell(cell);
            } else {
                table.addCell(cell);
            }
        }
    }
}

C#

C#
using System;
using System.IO;
using iText.Commons.Utils;
using iText.IO.Font.Constants;
using iText.Kernel.Font;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;

namespace iText.Samples.Sandbox.Tables
{
    public class UnitedStates
    {
        public static readonly string DEST = "results/sandbox/tables/united_states.pdf";

        public static readonly String DATA = "../../../resources/data/united_states.csv";

        public static void Main(String[] args)
        {
            FileInfo file = new FileInfo(DEST);
            file.Directory.Create();

            new UnitedStates().ManipulatePdf(DEST);
        }

        private void ManipulatePdf(String dest)
        {
            PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
            Document doc = new Document(pdfDoc, PageSize.A4.Rotate());

            PdfFont helvetica = PdfFontFactory.CreateFont(StandardFonts.HELVETICA);
            PdfFont helveticaBold = PdfFontFactory.CreateFont(StandardFonts.HELVETICA_BOLD);

            Table table = new Table(UnitValue.CreatePercentArray(new float[] {14, 6, 12, 16, 12, 12, 12, 12, 6}));
            using (StreamReader br = new StreamReader(DATA))
            {
                String line = br.ReadLine();

                // The last argument defines which cell will be added: a header or the usual one
                AddRowToTable(table, line, helveticaBold, true);
                while ((line = br.ReadLine()) != null)
                {
                    AddRowToTable(table, line, helvetica, false);
                }
            }

            doc.Add(table);
            
            doc.Close();
        }


        private static void AddRowToTable(Table table, String line, PdfFont font, bool isHeader)
        {
            // Parses string line with specified delimiter 
            StringTokenizer tokenizer = new StringTokenizer(line, ";");

            // Creates cells according to parsed csv line
            while (tokenizer.HasMoreTokens())
            {
                Cell cell = new Cell().Add(new Paragraph(tokenizer.NextToken()).SetFont(font));

                if (isHeader)
                {
                    table.AddHeaderCell(cell);
                }
                else
                {
                    table.AddCell(cell);
                }
            }
        }
    }
}
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.