版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 定制生產(chǎn)人用膳食補充劑行業(yè)營銷策略方案
- 便攜式空調(diào)器產(chǎn)品供應(yīng)鏈分析
- 廣告設(shè)計專業(yè)實習(xí)報告
- 電動滑板車電動車輛項目運營指導(dǎo)方案
- 典當(dāng)行業(yè)相關(guān)項目經(jīng)營管理報告
- 工業(yè)廢氣污染控制用催化焚燒爐產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 幼兒和嬰兒用次性游泳尿褲產(chǎn)品供應(yīng)鏈分析
- 血液分析儀器市場分析及投資價值研究報告
- 女士香水產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 倉庫出租行業(yè)經(jīng)營分析報告
- 藥物動力學(xué)課件:生物藥劑學(xué)與藥物動力學(xué)
- 廣東省揭陽榕城區(qū)2023-2024學(xué)年八年級上學(xué)期期中數(shù)學(xué)試題
- 申辦營業(yè)執(zhí)照承諾書范文三篇
- 《醫(yī)院績效考核》課件
- 蘇州市2023-2024學(xué)年高一上學(xué)期期中考試化學(xué)試題 試卷及答案
- 江蘇省昆山、太倉、常熟、張家港四市2023-2024學(xué)年八年級上學(xué)期期中陽光測試物理試題
- 充電樁電表申請
- 稅收經(jīng)濟(jì)學(xué)第2講稅收的宏觀經(jīng)濟(jì)效應(yīng)
- 股骨干骨折業(yè)務(wù)護(hù)理查房
- GB/T 9439-2023灰鑄鐵件
- 多屬性效用函數(shù)的理論多目標(biāo)決策問題的非劣解課件
評論
0/150
提交評論