从前台获取数据,并导出PDF文件
Jsp页面:
<div style="width:30%;height:100%;float:left;" id="gzbddiv">
请选择变动原因: <input id="bdyy" name="bdyy" type="text" class="easyui-combobox combo"/>
<a href="javascript:;" id="save" class="easyui-linkbutton" data-options="iconCls:'icon-save',size:'normal'" plain="true"><span class="button-text">保存</span></a>
</div>
<div id="dcpdf" style="float:left;">
<a href="javascript:;" id="exportPdfBd" class="easyui-linkbutton" data-options="iconCls:'icon-export-excel',size:'normal'" plain="true"><span class="button-text">pdf数据导出</span></a>
</div>
js代码
//工资变动 导出pdf
$("#exportPdfBd").click(function(){
if(num == 3){
//房帖变动导出pdf
var rows = $("#bd").datagrid('getData').rows;
for(var i = 0;i < rows.length;i++){
var row = $("#bd").datagrid('getData').rows[i];
fttzlist.push({"COLLEGE_ID":row.COLLEGE_ID,"STAFF_ID":row.STAFF_ID,
"NAME":row.NAME,"XNFTSJ":row.XNFTSJ,"JFT":row.JFT,"XFT":row.XFT,
"BFFT":row.BFFT,"BFYS":row.BFYS,"BZ":row.BZ});
}
var fttzstr = JSON.stringify(fttzlist);
$.ajax({
"url":"<%=basePath%>/ftbdPdf.action",
"type":"post",
datatype:"json",
data:{
'fttzstr':fttzstr
},
success:function(filedownloadpath){
StandardPost('<%=basePath%>/fileDownload',{'path':filedownloadpath});
top.$.messager.alert("系统提示","导出成功!","info");
fttzlist.length= 0;
}
});
}
});
Struts.Xml
<!-- 房帖变动信息 导出pdf --><action name="ftbdPdf" class="salaryManagementAction" method="ftbdPdf">
<result type="json">
<param name="root">filedownloadpath</param>
</result>
</action>
Action代码
private String fttzstr;//get-set方法
* 房帖调整 生成PDF
*/
public String ftbdPdf(){
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String nowtime = sdf.format(now);
List<GZ_FTTZ_2017> fttzlist = new ArrayList<GZ_FTTZ_2017>();//房帖变动信息
try {
fttzlist = JSONArray.parseArray(fttzstr,GZ_FTTZ_2017.class);
//fttzlist = salaryManagementService.searchFTTZ();//查找房帖变动信息
Object[][] data2 = new Object[fttzlist.size()][];
for (int i = 0; i < fttzlist.size(); i++) {
Object[] obj2 = new Object[8];//给pdf的
obj2[0] = fttzlist.get(i).getSTAFF_ID();
obj2[1] = fttzlist.get(i).getNAME();
obj2[2] = fttzlist.get(i).getCOLLEGE_ID();
obj2[3] = fttzlist.get(i).getXNFTSJ();
obj2[4] = fttzlist.get(i).getJFT();
obj2[5] = fttzlist.get(i).getXFT();
obj2[6] = fttzlist.get(i).getBFFT();
obj2[7] = fttzlist.get(i).getBZ();
data2[i] = obj2;
}
String path = "D:/房帖变动/房帖变动生成PDF/";
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
String filename = "高贴"+nowtime+".pdf";
path = path+filename;
fttzPdfFile(data2,path);
filedownloadpath = path;
return "success";
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
* 房帖调整 ,生成pdf文件
*/
public static void fttzPdfFile(Object[][] data,String path){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
Date date = new Date();
String nowtime = sdf.format(date);
String year = nowtime.substring(0,4);
String month = nowtime.substring(4,6);
try {
//创建文件
Document document=new Document(new RectangleReadOnly(842F,595F));
//建立一个书写器
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path));
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
Font fontChinese = new Font(bfChinese,10, Font.NORMAL);
//打开文件
document.open();
//添加内容
Paragraph par = new Paragraph("住房补贴调整通知单--"+year+"年"+month+"月",fontChinese);
par.setAlignment(Element.ALIGN_CENTER);
document.add(par);
// 8列的表.
PdfPTable table = new PdfPTable(10);
float[] columnWidths = { 1f, 1f, 1f , 1f, 1f , 1f , 1f , 1f ,1f ,1f};
table.setWidths(columnWidths);
//table.setTotalWidth(500f);//设置表格的总宽度
table.setWidthPercentage(105); // 宽度100%填充
table.setSpacingBefore(1f); // 前间距
table.setSpacingAfter(1f); // 后间距
List<PdfPRow> listRow = table.getRows();
//行1
PdfPCell cells1[]= new PdfPCell[10];
PdfPRow row1 = new PdfPRow(cells1);
//单元格
cells1[0] = new PdfPCell(new Paragraph("人员编号",fontChinese));//单元格内容
/*cells1[0].setPaddingLeft(20);//左填充20
cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中
cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中
*/
cells1[1] = new PdfPCell(new Paragraph("姓名",fontChinese));
cells1[2] = new PdfPCell(new Paragraph("单位",fontChinese));
cells1[3] = new PdfPCell(new Paragraph("校内房帖时间",fontChinese));
cells1[4] = new PdfPCell(new Paragraph("原房帖",fontChinese));
cells1[5] = new PdfPCell(new Paragraph("现房贴",fontChinese));
cells1[6] = new PdfPCell(new Paragraph("补发",fontChinese));
cells1[7] = new PdfPCell(new Paragraph("备注",fontChinese));
cells1[8] = new PdfPCell(new Paragraph("",fontChinese));
cells1[9] = new PdfPCell(new Paragraph("",fontChinese));
cells1[7].setColspan(3); //合并列
for (int j = 0; j < 10; j++) {
cells1[j].setMinimumHeight(20);//设置表格行高
cells1[j].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中
cells1[j].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中
}
//把第一行添加到集合
listRow.add(row1);
for(int i =0;i<data.length;i++){
PdfPCell cells[]= new PdfPCell[10];
PdfPRow row = new PdfPRow(cells);
for(int j = 0;j<8;j++){
cells[j] = new PdfPCell(new Paragraph(String.valueOf(data[i][j]),fontChinese));//单元格内容
cells[j].setMinimumHeight(20);//设置表格行高
cells[j].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中
cells[j].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中
if (j==7) {
cells[7].setColspan(3); //合并列
}
}
listRow.add(row);
}
//把表格添加到文件中
document.add(table);
//关闭文档
document.close();
//关闭书写器
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}