本示例说明如何在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>