iText学习笔记之PdfPTable
iText学习笔记之PdfPTable Email:cmliu2004@163 QQ:27236220
PdfPTable
PdfPTable
当你想使用iText制作账单、发票、清单、报表等电子表单时,你很可能需
要将数据放置在表格当中,这就是下面要介绍的PdfPTable对象和PdfPCell对象。
这两个类使用起来都非常方便:构建一张指定列数的表,然后添加单元格: PdfPTable table = new PdfPTable(3);
PdfPCell cell = new PdfPCell(new Paragraph("header with colspan 3"));
cell.setColspan(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%并居中对齐,要想改变这些默认值,可使用setWidthPercentage和setHorizontalAli
gnment方法。
iText学习笔记之PdfPTable Email:cmliu2004@163 QQ:27236220
// step1
Document document = new Document(PageSize.A4);
try {
// step2
Instance(document,
new FileOutputStream("TableWidthAlignment.pdf"));
// step3
tabletotal函数document.open();
// step4
PdfPTable table = new PdfPTable(3);
PdfPCell cell = new PdfPCell(new Paragraph("header with colspan 3"));
cell.setColspan(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.setBorderColor(new Color(255, 0, 0));
table.addCell(cell);
cell = new PdfPCell(new Paragraph("cell test2"));
cell.setColspan(2);
cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
table.addCell(cell);
document.add(table);
table.setWidthPercentage(100);
document.add(table);
table.setWidthPercentage(50);
table.setHorizontalAlignment(Element.ALIGN_RIGHT);
document.add(table);
table.setHorizontalAlignment(Element.ALIGN_LEFT);
document.add(table);
} catch (Exception de) {
de.printStackTrace();
}
// step5
document.close();
上面的例子运行效果如下:
iText学习笔记之PdfPTable Email:cmliu2004@163 QQ:27236220
我们在表格中定义了很多列,iText自动计算各列的绝对宽度,每个单元格
的默认宽度是:表格的绝对宽度/列数,同一表格中的所有列的宽度相同。当然
你可能需要改变列的宽度,方法有如下的几种:
1)使用另外一个构造器函数:PdfPTable(float[] relativeWidths)。例如,如果你想构造的表中,前两个采用默认的宽度,第三列是默认宽度的两倍,可以使用
float数组{1f,1f,2f}作为相对宽度relativeWidths参数,iText会自动为你计算绝对宽度。
你可以通过setWidths方法来改变已经构建的PdfPTable中各列的宽度。在下例中,百分比从(10%,10%,5%75%)变为(20%,20%,10%,50%),因而第二张表的样式完全不同。
2)如果你想指定各列的绝对宽度,那么你首先得让iText计算表格宽度在页面中占用的百分比。这种情况下,你应该使用setWidthPercentage(float[] columnWidths, Rectancle pageSize)。在下例中可以看到,你需要先做些计算来获
取正确的pageSize。
如果将表格的宽度锁定为“total width”,使用绝对宽度其实更加方便,需要
用到的方法是setTotalWidths和setLockedWidth。下例中,各列的宽度仍然是10%、10%、5%、75%,因而各列的实际宽度分别是30pt、30pt、15pt、225pt。 // step1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。