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