iText学习笔记之PdfPTable
iText学习笔记之PdfPTable Email: QQ:27236220
PdfPTable
PdfPTable
当你想使用iText制作账单、发票、清单、报表等电子表单时,你很可能需
要将数据放置在表格当中,这就是下面要介绍的PdfPTable对象和PdfPCell对象。
这两个类使用起来都非常方便:构建一张指定列数的表,然后添加单元格: PdfPTable table = new PdfPTable(3);
PdfPCell cell = new PdfPCell(new Paragraph("header with colspan 3"));
cell.tColspan(3);
table.addCell(cell);
table.addCell("1.1");
table.addCell("2.1");
table.addCell("3.1");
table.addCell("1.2");
table.addCell("2.2");
挥洒自如
table.addCell("3.2");
document.add(table);
PdfPTable是一个强大而灵活的对象,但PdfPTable只用于生成PDF,如果你需要生成HTML或RTF文档,那么只能使用Table对象了(Table对象现在已不被支持)。
洁面仪通过Document.add()方法添加PdfPTable对象,其默认宽度是页面可编辑空
间的80%并居中对齐,要想改变这些默认值,可使用tWidthPercentage和tHorizontal
Alignment方法。
iText学习笔记之PdfPTable Email: QQ:27236220
// step1
Document document = new Document(PageSize.A4);
try {
// step2
Instance(document,
new FileOutputStream("TableWidthAlignment.pdf"));
// step3
document.open();
// step4
PdfPTable table = new PdfPTable(3);
工作类型PdfPCell cell = new PdfPCell(new Paragraph("header with colspan 3"));
cell.tColspan(3);
table.addCell(cell);
table.addCell("1.1");
table.addCell("2.1");
table.addCell("3.1");
table.addCell("1.2");
table.addCell("2.2");
音乐老师
table.addCell("3.2");
cell = new PdfPCell(new Paragraph("cell test1"));
cell.tBorderColor(new Color(255, 0, 0));
table.addCell(cell);
cell = new PdfPCell(new Paragraph("cell test2"));
cell.tColspan(2);
cell.tBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
table.addCell(cell);
document.add(table);
table.tWidthPercentage(100);
document.add(table);
table.tWidthPercentage(50);
table.tHorizontalAlignment(Element.ALIGN_RIGHT);
document.add(table);
以勤补拙
table.tHorizontalAlignment(Element.ALIGN_LEFT);
document.add(table);
} catch (Exception de) {
de.printStackTrace();
}
// step5
document.clo();
淘宝新风尚上面的例子运行效果如下:
iText学习笔记之PdfPTable Email: QQ:27236220
革命英雄手抄报
我们在表格中定义了很多列,iText自动计算各列的绝对宽度,每个单元格
的默认宽度是:表格的绝对宽度/列数,同一表格中的所有列的宽度相同。当然
你可能需要改变列的宽度,方法有如下的几种:
1)使用另外一个构造器函数:PdfPTable(float[] relativeWidths)。例如,如果你想构造的表中,前两个采用默认的宽度,第三列是默认宽度的两倍,可以使用
float数组{1f,1f,2f}作为相对宽度relativeWidths参数,iText会自动为你计算绝对宽度。
你可以通过tWidths方法来改变已经构建的PdfPTable中各列的宽度。在下例中,百分比从(10%,10%,5%75%)变为(20%,20%,10%,50%),因而第二张表的样式完全不同。
2)如果你想指定各列的绝对宽度,那么你首先得让iText计算表格宽度在页面中占用的百分比。这种情况下,你应该使用tWidthPercentage(float[] columnWidths, Rectancle pageSize)。在下例中可以看到,你需要先做些计算来获
取正确的pageSize。
如果将表格的宽度锁定为“total width”,使用绝对宽度其实更加方便,需要
用到的方法是tTotalWidths和tLockedWidth。下例中,各列的宽度仍然是10%、10%、5%、75%,因而各列的实际宽度分别是30pt、30pt、15pt、225pt。 // step1