java后端生成pdf模板合并單元格表格的案例_第1頁
java后端生成pdf模板合并單元格表格的案例_第2頁
java后端生成pdf模板合并單元格表格的案例_第3頁
java后端生成pdf模板合并單元格表格的案例_第4頁
java后端生成pdf模板合并單元格表格的案例_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

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

主要介紹了java后端生成pdf模板合并單元格表格的案例,具有很好的參考價值,盼望對大家有所關(guān)心。一起跟隨我過來看看吧

這里只放部分片段的代碼

java中使用二維數(shù)組生成表格特別便利,但是每一維的數(shù)組都需要排好序,而且,在java中所謂的二維數(shù)組,三維數(shù)組等,其實都是多個一維數(shù)組組成的

/**

*添加子女訓(xùn)練規(guī)劃表。

*@paramname子女姓名

*@parameducationItems某個孩子的訓(xùn)練規(guī)劃的二維數(shù)組,每列依次是:學(xué)程階段、年數(shù)、費用支出(元)/年、年增長率

*@paramspacing

*@throwsDocumentException

*@throwsIOException

*/

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

{

addParagraphText(name+"的訓(xùn)練支出規(guī)劃如下:",getMainTextFont(),0,SPACING_5,LEADING_MULT);//標(biāo)題字段

//以下是表頭

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

String[]colName={"學(xué)程階段","年數(shù)","規(guī)劃值(首次)","發(fā)生值(首次)","年增長率"};//表頭列的一維數(shù)組

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()};//字體及顏色的設(shè)置

educationItems=swap(educationItems,3,4);//這是排序二維數(shù)組,把第4列換到第3行(從0開頭計數(shù))

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

table.setSpacingAfter(mm2px_height(spacing));

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

}

/**

*@paramitems二維數(shù)組表示的表

*@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);//單元格內(nèi)文字行間距

intTable.getDefaultCell().setBorderColor(COLOR_CELL_BORDER);//邊框顏色

intTable.setHeaderRows(1);//第一行做表頭,跨頁再現(xiàn)表頭

//單元格可以跨頁

intTable.setSplitLate(false);

intTable.setSplitRows(true);

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

/***********************************以下是表頭標(biāo)題欄*******************************************/

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);//單元格內(nèi)文字不確定,不能設(shè)置成固定行高

intTable.getDefaultCell().setBackgroundColor(COLOR_CELL_BACK_WHITE);

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

{

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

{

intTable.getDefaultCell().setColspan(6);//設(shè)置詳細(xì)合并哪一列

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;

}

/*

*二維數(shù)組依據(jù)指定列排序到指定位置的方法,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獵取表頭標(biāo)題欄字體。

*@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獵取標(biāo)題字體。

*@throwsDocumentException

*@throwsIOException

*/

privatestaticFontgetTitleFont()throwsDocumentException,IOException

{

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

}

/**

*@return獵取標(biāo)題字體(?。?/p>

*@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動態(tài)生成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);//創(chuàng)建字體

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};//設(shè)置表格的列寬和列數(shù)默認(rèn)是4列

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

table.setSpacingBefore(20f);

table.setWidthPercentage(100);//設(shè)置表格寬度為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);

//以下代碼的作用是創(chuàng)建100行數(shù)據(jù),其中每行有四列,列依次為編號姓名性別備注

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

//設(shè)置編號單元格

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論