iText - 将列表添加到表格
在本章中,我们将了解如何使用 iText 库将列表添加到 PDF 文档中的表格。
将列表添加到 PDF 中的表格
您可以通过实例化 Document 类来创建一个空的 PDF 文档。在实例化此类时,您需要将 PdfDocument 对象作为参数传递给其构造函数。然后,要将表格添加到文档中,您需要实例化 Table 类,并使用 add() 方法将此对象添加到文档中。
要将 list 添加到表格中,您需要实例化 com.itextpdf.layout.element 包中的 List 类,并使用 Cell 类中的 add() 方法将其插入到 cell 对象中。
以下是将列表添加到表格单元格的步骤。
步骤 1:创建 PdfWriter 对象
PdfWriter 类表示 PDF 的 Doc Writer。此类属于 com.itextpdf.kernel.pdf 包。此类的构造函数接受一个字符串,表示要创建 PDF 的文件的路径。
通过将字符串值(表示需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示
// 创建 PdfWriter String dest = "C:/itextExamples/addingObjects.pdf"; PdfWriter writer = new PdfWriter(dest);
当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。
步骤 2:创建 PdfDocument 对象
PdfDocument 类是 iText 中表示 PDF 文档的类。此类属于包 com.itextpdf.kernel.pdf。要实例化此类(在写入模式下),您需要将类 PdfWriter 的对象传递给其构造函数。
通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。
// 创建 PdfDocument PdfDocument pdfDoc = new PdfDocument(writer);
一旦创建了 PdfDocument 对象,您就可以使用其类提供的相应方法添加各种元素,如页面、字体、文件附件和事件处理程序。
步骤 3:创建 Document 对象
包 com.itextpdf.layout 的 Document 类是创建自给自足 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。
通过传递在前面的步骤中创建的 PdfDocument 类的对象来实例化 Document 类,如下所示。
// 创建文档 Document document = new Document(pdfDoc);
步骤 4:创建 Table 对象
Table 类表示一个二维网格,其中填充了按行和列排序的单元格。它属于 com.itextpdf.layout.element 包。
实例化 Table 类,如下所示。
// 创建表格 float [] pointColumnWidths = {200F, 200F}; Table table = new Table(pointColumnWidths);
步骤 5:创建单元格
通过实例化 com.itextpdf.layout 包的 Cell 类来创建 cell 对象,如下所示。
// 将单元格添加到表格中 Cell listCell = new Cell(); // 创建单元格
步骤 6:创建 List 对象
创建单元格后,通过实例化 com.itextpdf.layout.element 包中的 List 类来创建 list 对象。通过实例化 ListItem 类来创建列表项,并使用 List 类的 add() 方法添加创建的项目,如下所示。
List list = new List(); ListItem item1 = new ListItem("JavaFX"); ListItem item2 = new ListItem("Java"); ListItem item3 = new ListItem("Java Servlets"); list.add(item1); list.add(item2); list.add(item3);
步骤 7:将列表添加到表格单元格中
现在,使用 Cell 类的 add() 方法将上面创建的列表添加到表格单元格中。然后,使用 Table 类的 addCell() 方法将此单元格添加到表格中,如下所示。
listCell.add(list); table.addCell(listCell);
步骤 8:将表格添加到文档中
使用 Document 类的 add() 方法添加上一步中创建的 table 对象,如下所示。
// 将列表添加到文档中 document.add(table);
步骤 9:关闭文档
使用 Document 类的 close() 方法关闭文档,如下所示。
// 关闭文档 document.close();
示例
以下 Java 程序演示如何使用 iText 库将列表添加到 PDF 文档中表格的单元格。它创建一个名为 addingObjects.pdf 的 PDF 文档,向其中添加一个表格,将列表插入其中一个单元格,并将其保存在路径 C:/itextExamples/
中将此代码保存在名为 AddingListsToTable.java 的文件中。
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.List; import com.itextpdf.layout.element.ListItem; import com.itextpdf.layout.element.Table; import com.itextpdf.layout.property.TextAlignment; public class AddingListsToTable { public static void main(String args[]) throws Exception { // 创建 PdfWriter 对象 String file = "C:/itextExamples/addingObjects.pdf"; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(file)); // 创建 Document 对象 Document doc = new Document(pdfDoc); // 创建表格 float [] pointColumnWidths = {300F, 300F}; Table table = new Table(pointColumnWidths); // 将第 1 行添加到表格中 Cell c1 = new Cell(); c1.add("Java Related Tutorials"); c1.setTextAlignment(TextAlignment.LEFT); table.addCell(c1); List list1 = new List(); ListItem item1 = new ListItem("JavaFX"); ListItem item2 = new ListItem("Java"); ListItem item3 = new ListItem("Java Servlets"); list1.add(item1); list1.add(item2); list1.add(item3); Cell c2 = new Cell(); c2.add(list1); c2.setTextAlignment(TextAlignment.LEFT); table.addCell(c2); // 将第 2 行添加到表中 Cell c3 = new Cell(); c3.add("无 SQL 数据库"); c3.setTextAlignment(TextAlignment.LEFT); table.addCell(c3); List list2 = new List(); list2.add(new ListItem("HBase")); list2.add(new ListItem("Neo4j")); list2.add(new ListItem("MongoDB")); Cell c4 = new Cell(); c4.add(list2); c4.setTextAlignment(TextAlignment.LEFT); table.addCell(c4); // 将表格添加到文档 doc.add(table); // 关闭文档 doc.close(); System.out.println("列表已成功添加到表格.."); } }
使用以下命令从命令提示符编译并执行保存的 Java 文件 −
javac AddingListsToTable.java java AddingListsToTable
执行后,上述程序将创建一个 PDF 文档,并显示以下消息。
列表已成功添加到表格..
验证指定的路径,可以找到创建的PDF文档,如下所示。