版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年张家界人事考试及答案
- 薪酬模式岗位绩效制度
- 2025年延吉事业编教师岗考试题及答案
- 2025年下半年宣城事业单位考试及答案
- 2025年陇东学院人事考试及答案
- 2025年期末线上笔试及答案
- 2025年宜昌下半年事业编考试及答案
- 落实安全生产各项制度
- 编辑制度、校对制度、发行制度
- TZYJX 新能源及综合能源站设计规范
- 宾得全站仪R-422NM使用说明书
- ASTM-D1238中文翻译(熔融流动率、熔融指数、体积流动速率)
- 短视频创作-短视频手机拍摄与剪辑
- 2025年国家公务员考试《申论》真题及答案解析(副省级)
- 车辆挂靠驾校合同协议
- 贵州省遵义市2024届高三第三次质量监测数学试卷(含答案)
- 江苏省劳动合同模式
- 速冻食品安全风险管控清单
- DL∕T 5342-2018 110kV~750kV架空输电线路铁塔组立施工工艺导则
- (正式版)JBT 7248-2024 阀门用低温钢铸件技术规范
- JJG 705-2014液相色谱仪行业标准
评论
0/150
提交评论