java开发实战1200例2本书第19-21章内容_第1页
java开发实战1200例2本书第19-21章内容_第2页
java开发实战1200例2本书第19-21章内容_第3页
java开发实战1200例2本书第19-21章内容_第4页
java开发实战1200例2本书第19-21章内容_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Table

级本实例演示如何通过Java应用程序,在PDF文档中使用Table类绘制具有指定列数的表格。运行程序,将创建一个具有5列的表格,效果如图20.1所示。注意:TableiTextiTextTablePdfPTable学习使用iTextPDF表格开发的用户,可以跳过本节内容直接学习后面的PdfPTable类。20.1使用Table创建具有指定列数的表说明:20.1可以看出,表格中的内容与下边线相交,该问题可以通过添加单元格填距来解决,有TableTabletable=new//publicstaticvoidmain(String[]{publicstaticvoidmain(String[]{try=//创建文档对 ,FileOutputStream("C:\\创建具有指定列数的表 //打开文档BaseFont =BaseFont.createFont("STSong-实例化字w //省略了添加单元格内容的部分代//向文档中添加内//将单元格顺次加入到表格,当一行充满时自动换//将单元格顺次加入到表格,当一行充满时自动换//将表格添加到文档}}catch(FileNotFoundException{}catch Exception{}catch(IOException{}}BaseFontBaseFont //定义基本字 Font =newFont(bf,实例化字//添加单元格内

级将创建一个具有33列的表格,效果如图20.2所示。20.2使用Table创建具有指定行列数的表Tabletable=newTable(3,3);Tabletable=newTable(3,3);//将单元格顺次加入到表格,当一行充满时自动换publicstaticvoidmain(String[]{publicstaticvoidmain(String[]{try=//创建文档对 ,new"C:\\创建具有指定行列数的表格 //关联文档对象与输出 BaseFontbf =BaseFont.createFont("STSong-Light",Font =new ,28,实例化字Tabletable=newTable(3,3);//}catch(FileNotFoundException{//}catch Exception{}catch(IOException{}}33列的表格,

级可以看到调整表格边框宽度的效果,如图20.3所示。20.3调整表格边框宽度的效//publicstaticvoidmain(String[]publicstaticvoidmain(String[]{try=//创建文档对 ,newBaseFont//=BaseFont.createFont("STSong-"UniGB-UCS2-H",Fontfont =newFont(bf Tabletable1=newTable(3);省略了部分向表格中添加单元格内容的代码Tabletable2=newTable(3);//////////.add(newParagraph("改变外边框宽度为3的表格",}catch(FileNotFoundException{}catch Exception{}catch(IOException{}}在实际的PDF文档中,还可以根据需要选择设置表格某条边框的宽度,可以使用Table类的Tabletable=newTable(3);Tabletable=newTable(3);//

级可以看到调整表格边框颜色的效果,如图20.4所示。20.4设置表格边框颜色的效Tabletable=newTable(3);Tabletable=newTable(3);publicstaticvoidmain(String[]{publicstaticvoidmain(String[]{try=//创建文档对 , //关联文档对象与输出色 =BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//定义基础字Font =new ,12,Tabletable=new省略了部分向表格中添加单元格内容的代码Tabletable1=newTable(3);//省略了部分向表格中添加单元格内容的代.add(newParagraph("设置边框颜色后的表格",}catch(FileNotFoundException{实例化字////将单元格顺次加入到表格,当一行充满时自动换//设置表格边框颜//将单元格顺次加入到表格,当一行充满时自动换////}catch Exception{}catch(IOException{}}在实PDF文档中,还可以根据需要选择设置表格某条边框的颜色,这可以先使TablesetBorder()方TablesetBorderColor()方法设置颜色,例如,要设置表格上边框Tabletable=newtable.setBorder(Table.TOP|

//对表格上边框和下边框进行设

级20.5设置表格单元格间距的效//publicstaticvoidmain(String[]publicstaticvoidmain(String[] =//创建文档对();try , BaseFontbf =BaseFont.createFont("STSong-Light",Font =new ,12,Tabletable=new.add(newParagraph("默认的表格",font 省略了部分向表格中添加单元格内容的代码Tabletable1=newTable(3);//省略了部分向表格中添加单元格内容的代实例化字////将单元格顺次加入到表格,当一行充满时自动换//设置表格边框与单元格的间////将单元格顺次加入到表格,当一行充满时自动换//}catch(FileNotFoundException{//}catch Exception{}catch(IOException{}}Tabletable1newTabletable1new //

级效果,如图20.6所示,这时单元格中的内容与单元格的边框不再相交。20.6设置表格中单元格填距的效TableTabletable1=newTable(3);//publicstaticvoidmain(String[]publicstaticvoidmain(String[] =//创建文档对();try , BaseFontbf Font =new ,12,Tabletable=new省略了部分向表格中添加单元格内容的代码Tabletable1=newTable(3);//省略了部分向表格中添加单元格内容的代实例化字////将单元格顺次加入到表格,当一行充满时自动换//设置表格边框与单元格的填//将单元格顺次加入到表格,当一行充满时自动换",////关闭文}}catch(FileNotFoundException{}catch Exception{}catch(IOException{}}Tabletable=newTable(3);Tabletable=newTable(3);//设置单元格灰度显

级头的功能。运行程序,将在PDF文档中添加一个有表头的表格,效果如图20.7所示。20.7为表格设置表头的效Tabletable1=newTabletable1=newTable(4);//将单元格设置为表//向表格添加单元=,new=,new//创建文档对//关联文档对象与输出 =BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOTEMBEDDED);Font =new ,12,Tabletable=new实例化字cell0cell0newCell(newParagraph("编号cell1=newCell(newParagraph(" ",Font cell1.setVerticalAlignment(Element.ALIGNCENTER);cell2=newCell(newParagraph(" ",Font cell3=newCell(newParagraph(" ",Font for(inti=1;i<=3;i++)table.addCell(newParagraph("95**0"+////////////////////table.addCell(newParagraph("李*辉", table.addCell(newtable.addCell(newParagraph("0431-}etaer(和endaerTabletable1=new//省略了向表格中添加单元格的其他代

//将单元格设置为表//向表格添加单元//使每一页显示表

级的效果,如图20.8所示。20.8设置表格中单元格所占列数CellcellnewCell(newCellcellnewCell(newParagraph("我占2列//定义一个表格单元格对//设置表格列跨度(合并两个单元格=//创建文档=//创建文档对,new//关联文档对象与输出 =BaseFont.createFont("STSong-"UniGB-UCS2-H",Font =new ,10,Font.NORMAL,Tabletable=newTable(5);CellcellnewCell(newParagraph("我占2列Font//省略了部分向表格中添加单元格内容的代Cellcell2newCell(newParagraph("我占4Font//省略了部分向表格中添加单元格内容的代Cellcell3newCell(newParagraph("我占3Font实例化字//将单元格顺次加入到表格,当一行充满时自动换////设置表格列跨度(合并两个单元格//将单元加入到表//将单元格顺次加入到表格,当一行充满时自动换////将单元加入到表//将单元格顺次加入到表格,当一行充满时自动换////将单元加入到表//Tabletable=newCellcell=newCell(newParagraph("我占据2列",Font

//定义一个表格单元格对//将单元格加入到表

级效果,如图20.9所示。20.9设置表格中单元格所占行数CellcellnewCell(newCellcellnewCell(newParagraph("我占4行//法的代码,完成在PDF文档中设置表格的单元格所占行数的操作,主要代码如下:= =BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);FontFont =newFont( Tabletable=newTable(5);Cellcell=newCell(newParagraph("我占据4行",Font //省略了部分向表格中添加单元格内容的代Cellcell2=newCell(newParagraph("我占据3行",Font //省略了部分向表格中添加单元格内容的代

//创建文档对//关联文档对象与输出实例化字//将单元格顺次加入到表格,当一行充满时自动换////将单元格加入到表//将单元格顺次加入到表格,当一行充满时自动换////将单元格加入到表//将单元格顺次加入到表格,当一行充满时自动换//4行,则实现合并整列单元格Tabletable=newCellcell=newCell(newParagraph("我占据4行",Font

////将单元格加入到表

级PDF文档中创建表格时,有时需要设置单元格的背景色,以改变表格中某些单元格的视觉效果。本实例20.10设置表格中单元格背景色的效Cellcell=newCell();//创建Cellcell=newCell();//创建单元//为单元格填充背景=,new=,new//创建文档对//关联文档对象与输出 =BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);Font =new ,12,实例化字",cell//将单元格顺次加入到表格,当一行充满时自动换//创建单元//为单元格填充背景Cellcell2=newCell();//省略了部分向表格中添加单元格内容的代

//将单元格填入到//为单元格填充背景

行程序,可以看到在表格中嵌套了两个表格,效果如图20.11所示。20.11在表格中嵌套表格的效Tabletable1=newTable(3);Tabletable2=newCelltableCell=newCell(newParagraph("使用Cell嵌入的表二",Font Tabletable3=newTable(5,5);

//将表格添加到单55列的原//1个表格嵌入到原表中第1//添加单元格,实现第2代码,完成在PDF文档表格中嵌套表格的操作,主要代码如下:==,// =BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOTEMBEDDED);Font =new //Fontfont=newFont( ,10,Font.NORMAL);Tabletable1=newTable(3);CellcellnewCell(newParagraph("嵌入的表一Font//table1.addCell(newParagraph("0.0Fonttable1.addCell(newParagraph("0.1Fonttable1.addCell(newParagraph("0.2Fonttable1.addCell(newParagraph("1.0Fonttable1.addCell(newParagraph("1.1Fonttable1.addCell(newParagraph("1.2FontTabletable2=newTable(2);////table2.addCell(newParagraph("表二0.0", table2.addCell(newParagraph("表二0.1",Font table2.addCell(newParagraph("表二1.0",Font CelltableCellnewCell(newParagraph("Cell嵌入的表二FontTabletable3=newTable(5,5);单元格添入到表格,行满自动换行//551个表格嵌入到原表中第1//添加单元格,实现第2Table类的insertTable()方法嵌套表格时不能设置填距,而使用Cell类的方法时是可以设置填距的。

设置表格偏移值为20.12设置表格偏移的效法的代码,完成在PDF文档中偏移表格的操作,主要代码如下:= =BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);FontFont =newFont( Tabletable=newTable(3);.add(newParagraph("原表格。", .add(newParagraph("默认的距离。", .add(newParagraph("设置表格偏移值为0的距离。",Font .add(newParagraph("设置表格偏移值为-15的距离。",Font

//创建文档对//关联文档对象与输出实例化字//设置表格边框宽////设置表格与单元格的间//设置单元格与内容的间//添加单元//////设置表格偏移数//设置表格偏移数

级20.13使用PdfPTable类创建经找不到Table类了。PdfPTablePdfPTabletable=newPdfPTable(3);//==,//关联文档对象与输出 =BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOTEMBEDDED);Font =new PdfPTabletable=newPdfPTable(3);//省略了部分向表格中添加单元格内容的代.add(newParagraph("这是一个33列的表格实例化字//将单元格顺次加入到表格,当一行充满时自动换 // // //使用已有的表格对象table创建新的表格对象//

级示如何设置表格的宽度。运行程序,可以看到设置表格宽度后的效果,如图20.14所示。20.14设置表格宽度的效float[]widths={0.05f,0.10f,0.30f,055f};PdfPTabletable=newPdfPTable(widths);

//设置列宽相关比率为5%、10%、30%、//为表格设置百分比宽=,new=,newfloat[]widths={0.05f,0.10f,0.30f,0.55f};PdfPTabletable=newPdfPTable(widths);//将单元格顺次加入到表格,当一行充满时自动换//省略了部分向表格中添加单元格内容的代//关联文档对象与输出//设置列宽相关比率为5%、10%、30%、////为表格设置百分比宽//PdfPTabletablePdfPTabletable=newPdfPTable(3);PdfPCellcell=newPdfPCell();//创建单元//设置单元格的行跨////

级何设置表格的对齐方式。运行程序,可以看到表格左对齐、居中对齐和右对齐的效果,如图20.15所示。20.15设置表格对齐方式的效PdfPTabletable=newPdfPTable(3);//设PdfPTabletable=newPdfPTable(3);//设置水平左=,new=,new//创建文档对//关联文档对象与输出 =BaseFont.createFont("STSong-"UniGB-UCS2-H",Font =new ,10,PdfPTabletable=newPdfPTable(3);PdfPCellcell=newPdfPCell(newParagraph("newtablecolspan3"));//将单元格顺次加入到表格,当一行充满时自动换PdfPTabletable1=newPdfPTable(3);实例化字//定义一个表格单//设置表格跨//将单元格加入到表//PdfPCellPdfPCellcell2=newPdfPCell(newParagraph("newtablecolspan3"));//table1.addCell("31");PdfPTabletable2=newPdfPTable(3);PdfPCellcell3=newPdfPCell(newParagraph("newtablecolspan3"));//table2.addCell("31");table2.setHorizontalAlignment(Element.ALIGNRIGHT);////////Paragraphp=newParagraph("表格居左对齐\n\n",p.setAlignment(Element.ALIGNParagraphp2newParagraph("表格居中对齐\n\nFontp2.setAlignment(Element.ALIGNCENTER);Paragraphp3newParagraph("表格居右对齐\n\nFontp3.setAlignment(Element.ALIGNRIGHT);后使用setColspan()方法设置单元格的列跨度。例如:PdfPTabletable=newPdfPCellcell=newPdfPCell(newParagraph("newtablecolspan3"));

//定义一个表格单元格对//设置单元格的列跨//将单元格添加到表

级可以通过本的方法实现。运行程序,可以看到对表格列宽进行设置后的效果,如图20.16所示。20.16设置表格列宽的效float[]widths={0.05f,0.10f,0.30f,float[]widths={0.05f,0.10f,0.30f,055f};PdfPTabletable=newPdfPTable(widths);//设置列宽相对比例为5%、10%、30%、//=,new=,new//关联文档对象与输出 =BaseFont.createFont("STSong-"UniGB-UCS2-HBaseFont.NOTEMBEDDED);//定义基Font=newnewBaseColor(90,90,,10,float[]widths={0.05f,0.10f,0.30f,0.55f};PdfPTabletable=newPdfPTable(widths);table.addCell(newParagraph("列宽5%",Font%",%",table.addCell(newParagraph("列宽55Font//省略了部分向表格中添加单元格内容的代实例化字//设置列宽相对比例为5%、10%、30%、////将单元格顺次加入到表格,当一行充满时自动换//float[]widths={0.05f,0.10f,0.30f,055fPdfPTabletable=newPdfPTable(4);

//设置列宽相对比例为5%、10%、30%、//设置表格的

级运行程序,可以看到默认表格宽度和设置表格绝对宽度的效果,如图20.17所示。PdfPTablePdfPTabletable=newPdfPTable(3);20.17默认表格与设置表格绝对宽度后的效=,new=,new//创建文档对//关联文档对象与输出 =BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);Font =new ,10,PdfPTabletable1=newPdfPCellcell1=newPdfPCell(newParagraph("newtablecolspan3"));//省略了部分向表格中添加单元格内容的代PdfPTabletable2=newPdfPCellcell2=newPdfPCell(newParagraph("newtablecolspan3"));实例化字//定义一个表格单//设置表格跨//将单元格加入到表//将单元格顺次加入到表格,当一行充满时自动换//定义一个表格单//设置表格跨//将单元格加入到表//将单元格顺次加入到表格,当一行充满时自动换",.add(newParagraph("设置表格宽度200",////在PdfPTabletable=newPdfPTable(3);

////锁定宽度,使所设置的宽度有级级可以看到嵌套表格的效果,如图20.18所示。20.18使用PdfPTable类嵌套表格的效= ,= ,newFileOutputStream("c:\\Pdf嵌套表格 打开文PdfPTabletablenew //创建表格对PdfPTabletable1new // //PdfPTabletable2new // // //添加单元格 //添加单元格 // // //添加嵌套的 //添加嵌套的 //添加单元格 //添加单元格 //将表格添加到文档 关闭文的功能。运行程序,可以看到表格中添加的效果,如图20.19所示。图20.19在表格中添加的效 Imageimage=PdfPTabletable=new

//创建图像对//向单元格中添加图像对= ,newImageimage=Image.getInstance("image/picture.jpg");PdfPTabletable=newPdfPTable(3);

//创建文档对//关联文档对象与输出//创建图像对//添加单元格//添加单元格//添加单元格//添加单元格//向单元格中添加图像对//添加单元格////设置单元格的行跨//设置单元格的列跨//在单元格中//将单元格添加到表//设置单元格的行跨//设置单元格的列跨//在单元格中//将单元格添加到表方法实现。运行程序,可以看到设置表格中单元格高度后的效果,如图20.20所示。20.20设置单元格高度的显PdfPCellcell1=newPdfPCell(newPdfPCellcell2=newPdfPCell(newParagraph("MinimumHeight"));

定义单元定义单元Fontfont=FontFactory.getFont("COURIER",10,FontBOLD);Fontfont=FontFactory.getFont("COURIER",10,FontBOLD);=,new//创建文档对PdfPTabletable=newPdfPTable(2);table.addCell(newParagraph("defaultheight",xfont));PdfPCellcell=newPdfPCell(newParagraph("AAA",font));table.addCell(newParagraph("setheight",PdfPCellcell2=newPdfPCell(newParagraph("ABC",font));table.addCell(newParagraph("minimumheight",xfont));PdfPCellcell3=newPdfPCell(newParagraph("Acatmaylookataking.",font));//关联文档对象与输出////定义一个表格单//向表格添加单元定义单元//将单元格加入到表//定义单元//将单元格加入到表//PdfPCellsetFixedHeight()方法设置单元格的高度后,单元格的高度是固定的,当单元格中的内容

级方式。运行程序,可以看到设置表格中单元格对齐方式后的效果,如图20.21所示。20.21设置单元格对齐方式PdfPCellsetHorizontalAlignment()方法实现了设置单元格对齐方式的功能。设置单Paragraphp=newParagraph("IthinkBalewillPdfPCellcell=newPdfPCell(p);

//定义段落对//定义单元//设置单元格水平向右对=,new=,newPdfPTabletable=newParagraphp=newParagraph("IthinkBalewillwin");table.addCell("alignmentleft");PdfPCellcell=newPdfPCell(p);table.addCell("alignmentright");table.addCell("alignmentjustified");PdfPCellcell2=newPdfPCell(p);//关联文档对象与输出//定义段落和//向单元格添加内定义单元//设置单元格水平向左对//向单元格添加内定义单元//设置单元格水平向右对//定义单元//设置单元格为合理的对齐方PdfPCellcell3=new

//向单元格添加内//定义单元//设置单元格水平居//向单元格添加内//PdfPCellsetHorizontalAlignment()方法,设置了单元格中内容的水平对齐方式,如果需要Paragraphp=newParagraph("IthinkBalewillPdfPCellcell=newPdfPCell(p);

//定义段落对//定义单元//设置单元格垂直居中对

级设置表格中单元格的填充和行间距的效果,如图20.22所示。20.22设置单元格填充和行间距的效本实例主要是通过PdfPTable类的getDefaultCell()方法获得PdfPCell对象,然后使用PdfPCell类的PdfPTabletable=newPdfPTabletable1=newPdfPTable(2);

//添加行间= ,newPdfPTabletable=newtable.addCell("no table.addCell("SetPadding"); table1.addCell("noLeading"); table1.addCell("SetLeading");

//创建文档对//关联文档对象与输出//向单元格添加内//单元格填充前内//向单元格添加内//单元格填充后内//将表格添加到文//向单元格添加内//添加行间距前内//添加行间//向单元格添加内//添加行间距后内//577:PdfPCellPdfPTable的getDefaultCell()方法获得的单元格对象的区别。使用PdfPCell类创建的单元格对象,使用setPadding()方法设置的填充只对一个单元格起作用,同样使用

如果PdfPTable表格中某一行的内容较多,而无法在当前页完全显示一整行内容,将自动按照行优先的方==,newString[]data={"C033010","MX","980","350","800","655","800","23","860"PdfPTabletable=newintcolumnwidths[]={8,3,11,10,8,6,8,12,3,6};////设置单元格填充为table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);////for(inti=1;i<100;i++)if(i%2==1)HTGRAY);}else}for(intx=0;x<10;{Stringvar=for(inty=0;y<i;{var+="\n"+}}}//////////20.23表格按行优先分页的显示效PdfPTablePdfPTabletable=newPdfPTable(10);//

20.24所示。20.24表格按页优先分页的显示效PdfPTabletable=newPdfPTable(10);//设置表格页优先分页方PdfPTabletable=newPdfPTable(10);//设置表格页优先分页方=,new=,new//创建文档对String[]data={"C033010","MX","980","350","800","655","800","23","860"PdfPTabletable=newintcolumnwidths[]={8,3,11,10,8,6,8,12,3,6};//关联文档对象与输出//向表格添加//省略了添加表格标题的部分for(inti=1;i<100;i++)if(i%2==1)HTGRAY);

//向表格添加绝对设置单元格填充为//设置单元格居//将单元格内容顺次加入到表格,当一行充满时自动换//为表格每一页设置表//}else

}for(intx=0;x<10;{Stringvar=for(inty=0;y<i;{var+="\n"+}}}table

//获得数组中的数//连接字符串生成单//为单元格添加内//设置表格页优先分

20.25强行在一页显示表格单元格PdfPTablePdfPTabletable=newPdfPTable(10);//=,new//创建文档对String[]data=,new//创建文档对String[]data={"C033010","MX","980","350","800","655","800","23","860"PdfPTabletable=newintcolumnwidths[]={8,3,11,10,8,6,8,12,3,6};//省略了添加表格标题的部分代for(inti=1;i<100;i++)if(i%2==1)HTGRAY);}else}for(intx=0;x<10;{Stringvar=for(inty=0;y<i;{var+="\n"+}}}table//关联文档对象与输出//向表格添加//向表格添加绝对宽//设置单元格居中对//将单元格内容顺次加入到表格,当一行充满时自动换//为表格每一页设置表//获得数组中的数//连接字符串生成单元格内//为单元格添加内//使行强行在一页显示,但是可能会丢失数//

以看到默认表格位置和绝对定位表格后的效果,如图20.26所示。20.26默认表格位置和绝对定位表格后的效tabletable=newtable.writeSelectedRows(0,2,50,750,//=//创建文=//创建文档对tryPdfWriterwriter=,newFileOutputStream("c:\\绝对定位表格float[]columnSize={21F,21F,21F};PdfPTabletable=null;PdfPCellcell=table=newPdfPTable(columnSize);cel

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论