java后端生成pdf模板合并单元格表格的案例_第1页
java后端生成pdf模板合并单元格表格的案例_第2页
java后端生成pdf模板合并单元格表格的案例_第3页
java后端生成pdf模板合并单元格表格的案例_第4页
java后端生成pdf模板合并单元格表格的案例_第5页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

java后端生成pdf模板合并单元格表格的案例

java后端生成pdf模板合并单元格表格的案例

主要介绍了java后端生成pdf模板合并单元格表格的案例,具有很好的参考价值,盼望对大家有所关心。一起跟随我过来看看吧

这里只放部分片段的代码

java中使用二维数组生成表格特别便利,但是每一维的数组都需要排好序,而且,在java中所谓的二维数组,三维数组等,其实都是多个一维数组组成的

/**

*添加子女训练规划表。

*@paramname子女姓名

*@parameducationItems某个孩子的训练规划的二维数组,每列依次是:学程阶段、年数、费用支出(元)/年、年增长率

*@paramspacing

*@throwsDocumentException

*@throwsIOException

*/

privatevoidaddEducationTable(Stringname,String[][]educationItems,floatspacing)throwsDocumentException,IOException

{

addParagraphText(name+"的训练支出规划如下:",getMainTextFont(),0,SPACING_5,LEADING_MULT);//标题字段

//以下是表头

float[]colWidth=newfloat[]{mm2px_width(34f),mm2px_width(34f),mm2px_width(34f),mm2px_width(34f),mm2px_width(34f)};

String[]colName={"学程阶段","年数","规划值(首次)","发生值(首次)","年增长率"};//表头列的一维数组

int[]colAlignment={Element.ALIGN_LEFT,Element.ALIGN_RIGHT,Element.ALIGN_RIGHT,Element.ALIGN_RIGHT,Element.ALIGN_RIGHT};//表头有几列就写几个对齐方式

float[]colPaddingLeft={3f,3f,3f,3f,3f};

float[]colPaddingRight={3f,3f,3f,3f,3f};

Font[]colFont={getTabCellTextFont(),getTabCellTextFont(),getTabCellTextFont(),getTabCellTextFont(),getTabCellTextFont()};//字体及颜色的设置

educationItems=swap(educationItems,3,4);//这是排序二维数组,把第4列换到第3行(从0开头计数)

PdfPTabletable=tableTemplate(educationItems,colWidth,colName,colAlignment,colPaddingLeft,colPaddingRight,colFont);//生成表格

table.setSpacingAfter(mm2px_height(spacing));

this._document.add(table);//生成到PDF去,代码就不贴了

}

/**

*@paramitems二维数组表示的表

*@paramcolWidth各列的宽度(像素)

*@paramcolName各列的名称

*@paramcolAlignment各列的水平对齐方式

*@paramcolPaddingLeft各列的左padding

*@paramcolPaddingRight各列的右padding

*@paramcolFont各列的字体

*@return

*@throwsDocumentException

*@throwsIOException

*/

privatePdfPTabletableTemplates(String[][]items,float[]colWidth,String[]colName,int[]colAlignment,

float[]colPaddingLeft,float[]colPaddingRight,Font[]colFont)throwsDocumentException,IOException

{

PdfPTableintTable=newPdfPTable(colWidth.length);

intTable.setTotalWidth(colWidth);

intTable.setLockedWidth(true);

intTable.getDefaultCell().setLeading(mm2px_height(LEADING_CELL_TEXT),1f);//单元格内文字行间距

intTable.getDefaultCell().setBorderColor(COLOR_CELL_BORDER);//边框颜色

intTable.setHeaderRows(1);//第一行做表头,跨页再现表头

//单元格可以跨页

intTable.setSplitLate(false);

intTable.setSplitRows(true);

/*********************************************************************************************/

/***********************************以下是表头标题栏*******************************************/

floatheaderHeight=mm2px_height(TABLE_HEADER_HEIGHT);

intTable.getDefaultCell().setFixedHeight(headerHeight);//行高

intTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);//无边框

for(inti=0;icolName.length;i++)

{

intTable.getDefaultCell().setBackgroundColor(COLOR_TAB_HEADER);//表头背景

intTable.getDefaultCell().setHorizontalAlignment(colAlignment[i]);

intTable.getDefaultCell().setPaddingLeft(colPaddingLeft[i]);

intTable.getDefaultCell().setPaddingRight(colPaddingRight[i]);

intTable.addCell(newParagraph(colName[i],getTabHeaderTextFont()));

}

/*********************************************************************************************/

/***********************************以下是表格每行*********************************************/

floatrowHeight=mm2px_height(TABLE_ROW_HEIGHT);

intTable.getDefaultCell().setMinimumHeight(rowHeight);//单元格内文字不确定,不能设置成固定行高

intTable.getDefaultCell().setBackgroundColor(COLOR_CELL_BACK_WHITE);

for(inti=0;iitems.length;i++)

{

if(i==items.length-1)//最终一行有合并单元格

{

intTable.getDefaultCell().setColspan(6);//设置详细合并哪一列

intTable.getDefaultCell().setHorizontalAlignment(colAlignment[0]);

intTable.getDefaultCell().setPaddingLeft(colPaddingLeft[0]);

intTable.getDefaultCell().setPaddingRight(colPaddingRight[0]);

intTable.getDefaultCell().setBorder(Rectangle.LEFT|Rectangle.RIGHT|Rectangle.BOTTOM);

intTable.addCell(newParagraph(items[i][0],colFont[0]));

}else{

for(intj=0;jitems[i].length;j++)

{

if(j==0)intTable.getDefaultCell().setBorder(Rectangle.LEFT|Rectangle.RIGHT|Rectangle.BOTTOM);

elseintTable.getDefaultCell().setBorder(Rectangle.RIGHT|Rectangle.BOTTOM);

if(jcolAlignment.length){

intTable.getDefaultCell().setHorizontalAlignment(colAlignment[j]);

intTable.getDefaultCell().setPaddingLeft(colPaddingLeft[j]);

intTable.getDefaultCell().setPaddingRight(colPaddingRight[j]);

intTable.addCell(newParagraph(items[i][j],colFont[j]));

}

}

}

}

/*********************************************************************************************/

returnintTable;

}

/*

*二维数组依据指定列排序到指定位置的方法,f2要大于f1

*/

publicString[][]swap(String[][]data,intf1,intf2){

for(inti=0;idata.length;i++){

Stringtamp=data[i][f2];

for(intj=f2;jf1;j--){

data[i][j]=data[i][j-1];

}

data[i][f1]=tamp;

}

returndata;

}

/**

*@return猎取表头标题栏字体。

*@throwsDocumentException

*@throwsIOException

*/

privatestaticFontgetTabHeaderTextFont()throwsDocumentException,IOException

{

returngetFont(GDM.getUrlString(GDM.FONT_SIMHEI),FONT_SIZE_TAB_HEADER_TEXT,Font.NORMAL,COLOR_TAB_HEADER_TEXT);

}

/**

*@return猎取单元格文字字体。

*@throwsDocumentException

*@throwsIOException

*/

privatestaticFontgetTabCellTextFont()throwsDocumentException,IOException

{

returngetFont(GDM.getUrlString(GDM.FONT_SIMHEI),FONT_SIZE_TAB_CELL_TEXT,Font.NORMAL,GDM.COLOR_666666);

}

/**

*@return猎取标题字体。

*@throwsDocumentException

*@throwsIOException

*/

privatestaticFontgetTitleFont()throwsDocumentException,IOException

{

returngetFont(GDM.getUrlString(GDM.FONT_HEADER_CH),FONT_SIZE_TITLE,Font.NORMAL,GDM.COLOR_333333);

}

/**

*@return猎取标题字体(小)。

*@throwsDocumentException

*@throwsIOException

*/

privatestaticFontgetTitleFont_Small()throwsDocumentException,IOException

{

returngetFont(GDM.getUrlString(GDM.FONT_HEADER_CH),FONT_SIZE_TITLE-1f,Font.NORMAL,GDM.COLOR_333333);

}

/**

*@return猎取正文字体。

*@throwsDocumentException

*@throwsIOException

*/

privatestaticFontgetMainTextFont()throwsDocumentException,IOException

{

returngetFont(GDM.getUrlString(GDM.FONT_NORMAL),FONT_SIZE_MAINTEXT,Font.NORMAL,GDM.COLOR_666666);

}

补充:java动态生成pdf含表格table和合并两个pdf文件功能

1.首先一样需要maven依靠包:

!--/artifact/com.itextpdf/itextpdf--

dependency

groupIdcom.itextpdf/groupId

artifactIditextpdf/artifactId

version5.5.10/version

/dependency

!--/artifact/com.itextpdf/itext-asian--

dependency

groupIdcom.itextpdf/groupId

artifactIditext-asian/artifactId

version5.2.0/version

/dependency

2.废话不多说,上代码,直接拿去运行测试:

publicstaticvoidtest1(){//生成pdf

BaseFontbf;

Fontfont=null;

try{

bf=BaseFont.createFont("STSong-Light","UniGB-UCS2-H",

BaseFont.NOT_EMBEDDED);//创建字体

font=newFont(bf,12);//使用字体

}catch(Exceptione){

e.printStackTrace();

}

Documentdocument=newDocument();

try{

PdfWriter.getInstance(document,newFileOutputStream("E:/测试.pdf"));

document.open();

document.add(newParagraph("就是测试下",font));//引用字体

document.add(newParagraph("真的测试下",font));//引用字体

float[]widths={25f,25f,25f};//设置表格的列宽和列数默认是4列

PdfPTabletable=newPdfPTable(widths);//建立一个pdf表格

table.setSpacingBefore(20f);

table.setWidthPercentage(100);//设置表格宽度为100%

PdfPCellcell=null;

cell=newPdfPCell(newParagraph("姓名",font));//

cell.setBackgroundColor(BaseColor.LIGHT_GRAY);

cell.setHorizontalAlignment(Element.ALIGN_CENTER);

table.addCell(cell);

cell=newPdfPCell(newParagraph("性别",font));//

cell.setBackgroundColor(BaseColor.LIGHT_GRAY);

cell.setHorizontalAlignment(Element.ALIGN_CENTER);

table.addCell(cell);

cell=newPdfPCell(newParagraph("身份证号",font));//

cell.setBackgroundColor(BaseColor.LIGHT_GRAY);

cell.setHorizontalAlignment(Element.ALIGN_CENTER);

table.addCell(cell);

//以下代码的作用是创建100行数据,其中每行有四列,列依次为编号姓名性别备注

for(inti=1;i=10;i++){

//设置编号单元格

PdfPCellcell11=newPdfPCell(newParagraph("aa名媛",font));

PdfPCellcell22=newPdfPCell(newParagraph("bb女",font));

PdfPCellcell33=newPdfPCell(newParagraph("cc花姑娘",font));

//单元格水平对齐方式

cell11.setHorizontalAlignment(Element.ALIGN_CENTER);

//单元格垂直对齐方式

cell11.setVerticalAlignment(Element.ALIGN_CENTER);

cell22.setHorizontalAlignment(Element.ALIGN_CENTER);

cell22.setVerticalAlignment(Element.ALIGN_CENTER);

cell33.setHorizontalAlignment(Element.ALIGN_CENTER);

cell33.setVerticalAlignment(Element.ALIGN_CENTER);

table.addCell(cell11);

table.addCell(cell22);

table.addCell(cell33);

}

document.add(table);

document.close();

}catch(Exceptione){

System.out.println("filecreateexception"

温馨提示

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

评论

0/150

提交评论