iText中Table和PdfTable的区别
2016-08-20 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
1.iTextSharp.text.Table的Rowspan方法可以合并行,缺点是,每行的高度是根据内容自动调整的.
2.PdfPTable的MinimumHeight方法可以设置行的高度,但是不能合并行.
3.现在的问题是既要能合并行,又要能设置行的高度.
PdfPTable的PdfPCell有个方法disableBorderSide(1);
disableBorderSide();方法有一个参数,有四个值1,2,4,8 分别对应每行的上,下,左,右四个边框.
PdfPTable每行的四个边框默认是显示的.要想隐藏上边框,disableBorderSide();方法的参数设置为1就行了.
这样就PdfPTable就可以变相地实现合并行.唯一不足的是合并行里面的内容要动态实现就不好调整了.
例子1:(PdfPtable的用法)
String option2= "1,选择题测试题目选择题测试题目选择题测试题目选择题测试题目选择题测试题目选择题测试题目选择题测试题目";
Paragraph options2 = newParagraph(option2,new Font(bfChinese,
12));
options1.setAlignment(Element.ALIGN_LEFT);
doc.add(options2);
PdfPTable table1 = newPdfPTable(4);
table1.setHorizontalAlignment(Element.ALIGN_MIDDLE); int hws1[] = {15, 30, 15, 30,};
table1.setWidths(hws1);
table1.setTotalWidth(100);
image.scaleAbsolute(100, 100);
Phrase content = new Phrase("A 选择题选项测试,加图片的的。选择题选项测试,加图片的的。选择题选项测试,加图片的的。",font);
PdfPCell cellleft1= newPdfPCell(content);
cellleft1.setColspan(2);
cellleft1.setHorizontalAlignment(Element.ALIGN_LEFT); cellleft1.disableBorderSide(1);
cellleft1.disableBorderSide(2);
cellleft1.disableBorderSide(4);
cellleft1.disableBorderSide(8);
table1.addCell(cellleft1);
PdfPCell cellright1= newPdfPCell(image);
cellright1.setColspan(2);
cellright1.setHorizontalAlignment(Element.ALIGN_CENTER); cellright1.disableBorderSide(1);
cellright1.disableBorderSide(2);
cellright1.disableBorderSide(4);
cellright1.disableBorderSide(8);
table1.addCell(cellright1);
例子2:(Table的用法)
PdfPTable table = newPdfPTable(2);//两列
35 table.setWidthPercentage(100);
36 //传入的对象信息
37 count = list.size();
//避免因为最后一行数据由于不能满足总列数而导致itext自动将其去掉,38 而生成一些多余的数
39 intcolumn = 2;
40 intpersons = count;
41 intyushu = persons % 2;
42 inttmppersons = persons + (column - yushu);
43 String barCodeString = "";
44 String barCode = "";
45 //对象信息输入pdf文件
46 for(inti = 0; i<tmppersons; i++) {
47 if(i< persons) {
48 //构造个两列一行的表格
49 PdfPTablemytable = newPdfPTable(2);
50 //插入图片
51 Image image = Image.getInstance("image路径");
52 mytable.addCell(image);
53 mytable.setWidthPercentage(80);
54 String cntext = "测试";
55 mess = newParagraph(cntext, newcom.lowagie.text.Font(bfChinese,11)); 56 //第二列放文字信息
57 mytable.addCell(mess);
58 //在单元格中放置构造好的一个表格 59 table.addCell(mytable);
2.PdfPTable的MinimumHeight方法可以设置行的高度,但是不能合并行.
3.现在的问题是既要能合并行,又要能设置行的高度.
PdfPTable的PdfPCell有个方法disableBorderSide(1);
disableBorderSide();方法有一个参数,有四个值1,2,4,8 分别对应每行的上,下,左,右四个边框.
PdfPTable每行的四个边框默认是显示的.要想隐藏上边框,disableBorderSide();方法的参数设置为1就行了.
这样就PdfPTable就可以变相地实现合并行.唯一不足的是合并行里面的内容要动态实现就不好调整了.
例子1:(PdfPtable的用法)
String option2= "1,选择题测试题目选择题测试题目选择题测试题目选择题测试题目选择题测试题目选择题测试题目选择题测试题目";
Paragraph options2 = newParagraph(option2,new Font(bfChinese,
12));
options1.setAlignment(Element.ALIGN_LEFT);
doc.add(options2);
PdfPTable table1 = newPdfPTable(4);
table1.setHorizontalAlignment(Element.ALIGN_MIDDLE); int hws1[] = {15, 30, 15, 30,};
table1.setWidths(hws1);
table1.setTotalWidth(100);
image.scaleAbsolute(100, 100);
Phrase content = new Phrase("A 选择题选项测试,加图片的的。选择题选项测试,加图片的的。选择题选项测试,加图片的的。",font);
PdfPCell cellleft1= newPdfPCell(content);
cellleft1.setColspan(2);
cellleft1.setHorizontalAlignment(Element.ALIGN_LEFT); cellleft1.disableBorderSide(1);
cellleft1.disableBorderSide(2);
cellleft1.disableBorderSide(4);
cellleft1.disableBorderSide(8);
table1.addCell(cellleft1);
PdfPCell cellright1= newPdfPCell(image);
cellright1.setColspan(2);
cellright1.setHorizontalAlignment(Element.ALIGN_CENTER); cellright1.disableBorderSide(1);
cellright1.disableBorderSide(2);
cellright1.disableBorderSide(4);
cellright1.disableBorderSide(8);
table1.addCell(cellright1);
例子2:(Table的用法)
PdfPTable table = newPdfPTable(2);//两列
35 table.setWidthPercentage(100);
36 //传入的对象信息
37 count = list.size();
//避免因为最后一行数据由于不能满足总列数而导致itext自动将其去掉,38 而生成一些多余的数
39 intcolumn = 2;
40 intpersons = count;
41 intyushu = persons % 2;
42 inttmppersons = persons + (column - yushu);
43 String barCodeString = "";
44 String barCode = "";
45 //对象信息输入pdf文件
46 for(inti = 0; i<tmppersons; i++) {
47 if(i< persons) {
48 //构造个两列一行的表格
49 PdfPTablemytable = newPdfPTable(2);
50 //插入图片
51 Image image = Image.getInstance("image路径");
52 mytable.addCell(image);
53 mytable.setWidthPercentage(80);
54 String cntext = "测试";
55 mess = newParagraph(cntext, newcom.lowagie.text.Font(bfChinese,11)); 56 //第二列放文字信息
57 mytable.addCell(mess);
58 //在单元格中放置构造好的一个表格 59 table.addCell(mytable);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询