Java如何在PDF文档中创建表格?

本示例说明如何在PDF文档中创建表格。使用iText PDF库,我们可以使用PdfPTable和PdfPCell类在PDF文档中创建表格和单元格。在下面的示例中,我们使用字符串数组定义表的数据。

让我们看下面的完整代码片段:

package org.nhooo.example.itextpdf;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class TableDemo {
    public static void main(String[] args) {
        String[] headers = new String[]{ "No", "Username", "First Name", "Last Name" };
        String[][] rows = new String[][]{
                {"1", "jdow", "John", "Dow"},
                {"2", "stiger", "Scott", "Tiger"},
                {"3", "fbar", "Foo", "Bar"}
        };

        // 创建一个新文档。
        Document document = new Document(PageSize.LETTER.rotate());

        try {
            // 获取PdfWriter的实例并创建Table.pdf文件
            // 作为输出。
            PdfWriter.getInstance(document,
                    new FileOutputStream(new File("TableDemo.pdf")));
            document.open();

            //创建一个PdfPTable实例。之后我们转型
            //将标头和行数组转换为PdfPCell对象。什么时候
            // 每个表格行都是完整的,我们必须调用
            // table.completeRow()方法。
            //
            // 为了更好地呈现,我们还设置了单元字体名称,
            //大小和重量。我们还定义了背景填充
            // 为细胞。
            Font fontHeader = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD);
            Font fontRow = new Font(Font.FontFamily.TIMES_ROMAN, 10, Font.NORMAL);

            PdfPTable table = new PdfPTable(headers.length);
            for (String header : headers) {
                PdfPCell cell = new PdfPCell();
                cell.setGrayFill(0.9f);
                cell.setPhrase(new Phrase(header.toUpperCase(), fontHeader));
                table.addCell(cell);
            }
            table.completeRow();

            for (String[] row : rows) {
                for (String data : row) {
                    Phrase phrase = new Phrase(data, fontRow);
                    table.addCell(new PdfPCell(phrase));
                }
                table.completeRow();
            }

            document.addTitle("PDF Table Demo");
            document.add(table);
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
    }
}

Maven依赖

<!-- http://repo1.maven.org/maven2/com/itextpdf/itextpdf/5.5.10/itextpdf-5.5.10.jar -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.10</version>
</dependency>