下载java生成PDF

/*** 下载打印PDF* @param request* @param response* @throws ServletException* @throws IOException* @throws DocumentException * @throws com.itextpdf.text.DocumentException * @throws com.itextpdf.text.DocumentException */@RequestMapping(value="/downPrintPDF")public void downPrintPDF(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException, DocumentException, com.itextpdf.text.DocumentException { SessionUserPojo user=CommonController.getUserInfo(request);// 禁止数据缓存。response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);// 流程idString procInstanceId=request.getParameter("procInstanceId");request.setCharacterEncoding("UTF-8"); 
//        boolean checkPermissions=this.examTaskService.checkPermissions(user.getLoginCode(), procInstanceId);ExternalCuringParam taskExt=(ExternalCuringParam)this.examTaskService.getTaskDetail(procInstanceId,user);//查询附件列表
//                List attachmentList=this.examTaskService.getFileListByProcessInstanceId(Pid);//查询备注列表List tontentList=this.examTaskService.getListByPid(procInstanceId);String filePath = request.getSession().getServletContext().getRealPath(STATIC_FILE_PATH);File file_floder =new File(filePath);    //如果文件夹不存在则创建    if  (!file_floder .exists()  && !file_floder .isDirectory()) { file_floder .mkdir();    } File file = null;//创建file对象 if(ProcessType.RCBXSQ.getType().equals(taskExt.getProcInstanceType())){file = createPrintRcbxPdf(filePath+"\\MOLBASE_办公管理系统_"+user.getLoginCode().trim()+".pdf",taskExt,tontentList,user);}else if(ProcessType.CCBXSQ.getType().equals(taskExt.getProcInstanceType())){file = createPrintCcbxPdf(filePath+"\\MOLBASE_办公管理系统_"+user.getLoginCode().trim()+".pdf",taskExt,tontentList,user);}//设置response的编码方式 response.setContentType("application/x-msdownload");// 文件尺寸 response.setContentLength((int)file.length()); String filename = new String(file.getName().getBytes("GB2312"), "ISO_8859_1");response.setHeader("Content-Disposition","attachment;filename=" + filename); response.setHeader("Pragma","no-cache");OutputStream myout = response.getOutputStream(); if(file.exists()){FileInputStream fis = new FileInputStream(file); BufferedInputStream buff = new BufferedInputStream(fis); byte [] b = new byte[1024];long k = 0;while(k < file.length()){ int j = buff.read(b,0,1024); k += j; myout.write(b,0,j); myout.flush(); } buff.close();}myout.close();}@SuppressWarnings("static-access")private File createPrintCcbxPdf(String filepath,ExternalCuringParam taskExt,List tontentList,SessionUserPojo user) throws DocumentException, com.itextpdf.text.DocumentException, IOException{BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font headfont = new Font(bfChinese, 13, Font.BOLD);// 设置字体大小
//        Font keyfont = new Font(bfChinese, 10, Font.BOLD);// 设置字体大小Font textfont = new Font(bfChinese, 10, Font.NORMAL);// 设置字体大小
//        Font textfont_underline = new Font(bfChinese, 10, Font.UNDERLINE);// 设置字体大小
//        Font textfont1 = new Font(bfChinese, 12, Font.ITALIC);// 设置字体大小// 1.新建document对象// 第一个参数是页面大小。接下来的参数分别是左、右、上和下页边距。//Document document = new Document(PageSize.A4, 50, 50, 50, 50);com.itextpdf.text.Document document = new com.itextpdf.text.Document();//add Chinese font//BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);//Font headfont=new Font(bfChinese,10,Font.BOLD);//Font keyfont=new Font(bfChinese,8,Font.BOLD);//Font textfont=new Font(bfChinese,8,Font.NORMAL);// 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。// 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
//        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D:\\MOLBASE 办公管理系统_"+user.getLoginCode()+".pdf"));//Create Writer associated with document
        File file = new File(filepath);if(file.exists()){file.delete();}file.createNewFile();com.itextpdf.text.pdf.PdfWriter writer = com.itextpdf.text.pdf.PdfWriter.getInstance(document, new FileOutputStream(file));writer.setViewerPreferences(writer.HideToolbar);// 3.打开文档
        document.open();// 4.向文档中添加内容// 标题
//        document.addTitle("Hello mingri example");// 作者
//        document.addAuthor("wolf");// 主题
//        document.addSubject("This exam/ple explains how to add metadata.");
//        document.addKeywords("iText, Hello mingri");
//        document.addCreator("My program using iText");// document.newPage();// 向文档中添加内容
//        document.add(new Paragraph("\n"));// 通过 com.lowagie.text.Paragraph 来添加文本。可以用文本及其默认的字体、颜色、大小等等设置来创建一个默认段落
//        document.add(new Paragraph("First page of the document."));
//        document.add(new Paragraph("Some more text on the  first page with different color and font type.", FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD)));//        document.add(new Paragraph("Some more text on the first page with different color and font type.", FontFactory.getFont(FontFactory.defaultEncoding, 10, Font.BOLD)));
//        document.add(new Paragraph("xx租赁有限公司\n\n\n", textfont));Paragraph title = new Paragraph(taskExt.getProcInstanceName()+"\n", headfont);title.setAlignment(Element.ALIGN_CENTER);document.add(title);document.add(new Paragraph("\n",new Font(bfChinese, 8, Font.NORMAL)));// 增加表格PdfPTable table1 = createTable(new float[]{15,35,15,35}, true, null);table1.completeRow();table1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1.addCell(createCell("发起人", textfont, Element.ALIGN_CENTER, 1, 1, true));table1.addCell(createCell(taskExt.getOwnerName()+"/"+taskExt.getDeptName()+"_"+taskExt.getStartTime().split(" ")[0], textfont, Element.ALIGN_CENTER, 1, 1, true));table1.addCell(createCell("流程编号", textfont, Element.ALIGN_CENTER, 1, 1, true));table1.addCell(createCell(taskExt.getProcInstanceCode(), textfont, Element.ALIGN_CENTER, 1, 1, true));document.add(table1);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));PdfPTable table1_1 = createTable(new float[]{15,85}, true, null);table1_1.completeRow();table1_1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1_1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1_1.addCell(createCell("备注", textfont, Element.ALIGN_CENTER, 1, 1, true));table1_1.addCell(createCell(taskExt.getStartContent(), textfont, Element.ALIGN_LEFT, 1, 1, true));document.add(table1_1);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));String process_param = taskExt.getProcess_param();JSONObject obj=JSONObject.parseObject(process_param);PdfPTable table2 = createTable(new float[]{15,35,15,35}, true, null);table2.completeRow();table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table2.addCell(createCell("报销人", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_person_name"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("报销人部门", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_person_dept_name"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("费用公司", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_company"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("费用部门", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_dept_name"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("出发日期", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("startOutDate"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("返回日期", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("endOutDate"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("费用合计", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_money_total"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, true));document.add(table2);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));// 增加表格PdfPTable table = createTable(new float[]{14,10,10,22,10,34}, true, null);table.completeRow();//出差城市    出差天数    单据数    费用项目    单据金额    费用说明table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("出差城市", textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell("出差天数", textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell("单据数", textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell("费用项目", textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell("单据金额", textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell("费用说明", textfont, Element.ALIGN_CENTER, 1, 1, true));JSONArray arr1=obj.getJSONArray("trip_expense_message");Iterator ite=arr1.iterator();while(ite.hasNext()){JSONObject objx=JSONObject.parseObject(ite.next().toString());table.addCell(createCell(objx.get("tripCity").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell(objx.get("tripDays").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell(objx.get("invoiceAmounte").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell(objx.get("expenseItem").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell(objx.get("invoiceMoney").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell(objx.get("expenseExplanation").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));}document.add(table);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));PdfPTable table3 = createTable(new float[]{6,17,17,60}, true, null);table3.completeRow();table3.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table3.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table3.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table3.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table3.addCell(createCell("序号", textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell("审批角色", textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell("审批人/审核人", textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell("审批意见", textfont, Element.ALIGN_CENTER, 1, 1, true));String assignee_1 = obj.getString("assignee_1");String assignee_2 = obj.getString("assignee_2"); String address_assignee = obj.getString("address_assignee"); int i_num = 1;for(int i=0;i<6;i++){boolean exam_boo = false;int size = tontentList.size();if(i==0){if(size>=1){exam_boo = true;}}else if(i==1){if(!("chang").equals(assignee_2)){if(size>=2){exam_boo = true;}}}else if(i==2){if(("chang").equals(assignee_2)){if(size>=2){exam_boo = true;}}else{if(size>=3){exam_boo = true;}}}else if(i==3){if(("chang").equals(assignee_2)){if(size>=3){exam_boo = true;}}else{if(size>=4){exam_boo = true;}}}else if(i==4){if(("chang").equals(assignee_2)){if(size>=4){exam_boo = true;}}else{if(size>=5){exam_boo = true;}}}else if(i==5){if(("chang").equals(assignee_2)){if(size>=5){exam_boo = true;}}else{if(size>=6){exam_boo = true;}}}if(exam_boo){int content_type = 0;String content_type_str = "";String content = "";String content_time = "";if(tontentList.size()>=i_num && tontentList.get(i_num-1)!=null){content_type = tontentList.get(i_num-1).getContentType();content_time = "审核时间: "+tontentList.get(i_num-1).getStrCreateTime();if(tontentList.get(i_num-1).getContent()!=null){content = tontentList.get(i_num-1).getContent();}}if(content_type == 1){content_type_str = "审批意见: 同意";}else if(content_type == 2){content_type_str = "审批意见: 不同意";}else if(content_type == 3){content_type_str = "审批意见: 不同意且继续";}String exam_role = "";if(i==0){exam_role = "部门负责人";}else if(i==1){exam_role = "分管合伙人";}else if(i==2){exam_role = "财务岗1";}else if(i==3){exam_role = "财务岗2";}else if(i==4){exam_role = "公司CEO";}else if(i==5){exam_role = "收文人";}String exam_assignee = "";if(i==0){exam_assignee = assignee_1;}else if(i==1){exam_assignee = assignee_2;}else if(i==2){exam_assignee = "张瑞平";}else if(i==3){exam_assignee = "蒋中杰";}else if(i==4){exam_assignee = "常东亮";}else if(i==5){exam_assignee = address_assignee;}if(i==0||i==1||i==5){Map userMap=this.userService.getUserByLoginCode(exam_assignee);exam_assignee = userMap.get("user_name").toString();//userMap.get("dept_name").toString();
                }table3.addCell(createCell(i_num+"", textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell(exam_role, textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell(exam_assignee, textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell(content_type_str+"    "+content+"    "+content_time, textfont, Element.ALIGN_CENTER, 1, 1, true));i_num +=1;}}document.add(table3);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));// 5.关闭文档
        document.close();return new File(filepath);}@SuppressWarnings("static-access")private File createPrintRcbxPdf(String filepath,ExternalCuringParam taskExt,List tontentList,SessionUserPojo user) throws DocumentException, com.itextpdf.text.DocumentException, IOException{BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font headfont = new Font(bfChinese, 13, Font.BOLD);// 设置字体大小
//        Font keyfont = new Font(bfChinese, 10, Font.BOLD);// 设置字体大小Font textfont = new Font(bfChinese, 10, Font.NORMAL);// 设置字体大小
//        Font textfont_underline = new Font(bfChinese, 10, Font.UNDERLINE);// 设置字体大小
//        Font textfont1 = new Font(bfChinese, 12, Font.ITALIC);// 设置字体大小// 1.新建document对象// 第一个参数是页面大小。接下来的参数分别是左、右、上和下页边距。//Document document = new Document(PageSize.A4, 50, 50, 50, 50);com.itextpdf.text.Document document = new com.itextpdf.text.Document();//add Chinese font//BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);//Font headfont=new Font(bfChinese,10,Font.BOLD);//Font keyfont=new Font(bfChinese,8,Font.BOLD);//Font textfont=new Font(bfChinese,8,Font.NORMAL);// 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。// 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
//        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D:\\MOLBASE 办公管理系统_"+user.getLoginCode()+".pdf"));//Create Writer associated with document
        File file = new File(filepath);if(file.exists()){file.delete();}file.createNewFile();com.itextpdf.text.pdf.PdfWriter writer = com.itextpdf.text.pdf.PdfWriter.getInstance(document, new FileOutputStream(file));writer.setViewerPreferences(writer.HideToolbar);// 3.打开文档
        document.open();// 4.向文档中添加内容// 标题
//        document.addTitle("Hello mingri example");// 作者
//        document.addAuthor("wolf");// 主题
//        document.addSubject("This exam/ple explains how to add metadata.");
//        document.addKeywords("iText, Hello mingri");
//        document.addCreator("My program using iText");// document.newPage();// 向文档中添加内容
//        document.add(new Paragraph("\n"));// 通过 com.lowagie.text.Paragraph 来添加文本。可以用文本及其默认的字体、颜色、大小等等设置来创建一个默认段落
//        document.add(new Paragraph("First page of the document."));
//        document.add(new Paragraph("Some more text on the  first page with different color and font type.", FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD)));//        document.add(new Paragraph("Some more text on the first page with different color and font type.", FontFactory.getFont(FontFactory.defaultEncoding, 10, Font.BOLD)));
//        document.add(new Paragraph("xx租赁有限公司\n\n\n", textfont));Paragraph title = new Paragraph(taskExt.getProcInstanceName()+"\n", headfont);title.setAlignment(Element.ALIGN_CENTER);document.add(title);document.add(new Paragraph("\n",new Font(bfChinese, 8, Font.NORMAL)));// 增加表格PdfPTable table1 = createTable(new float[]{15,35,15,35}, true, null);table1.completeRow();table1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1.addCell(createCell("发起人", textfont, Element.ALIGN_CENTER, 1, 1, true));table1.addCell(createCell(taskExt.getOwnerName()+"/"+taskExt.getDeptName()+"_"+taskExt.getStartTime().split(" ")[0], textfont, Element.ALIGN_CENTER, 1, 1, true));table1.addCell(createCell("流程编号", textfont, Element.ALIGN_CENTER, 1, 1, true));table1.addCell(createCell(taskExt.getProcInstanceCode(), textfont, Element.ALIGN_CENTER, 1, 1, true));document.add(table1);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));PdfPTable table1_1 = createTable(new float[]{15,85}, true, null);table1_1.completeRow();table1_1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1_1.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table1_1.addCell(createCell("备注", textfont, Element.ALIGN_CENTER, 1, 1, true));table1_1.addCell(createCell(taskExt.getStartContent(), textfont, Element.ALIGN_LEFT, 1, 1, true));document.add(table1_1);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));String process_param = taskExt.getProcess_param();JSONObject obj=JSONObject.parseObject(process_param);PdfPTable table2 = createTable(new float[]{15,35,15,35}, true, null);table2.completeRow();table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table2.addCell(createCell("报销人", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_person_name"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("报销人部门", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_person_dept_name"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("费用公司", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_company"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("费用部门", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_dept_name"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("费用合计", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell(obj.getString("expense_money_total"), textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, true));table2.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, true));document.add(table2);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));// 增加表格PdfPTable table = createTable(new float[]{15,35,15,35}, true, null);table.completeRow();//单据数    费用项目    单据金额    费用说明table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table.addCell(createCell("单据数", textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell("费用项目", textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell("单据金额", textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell("费用说明", textfont, Element.ALIGN_CENTER, 1, 1, true));JSONArray arr1=obj.getJSONArray("daily_expense_message");Iterator ite=arr1.iterator();while(ite.hasNext()){JSONObject objx=JSONObject.parseObject(ite.next().toString());table.addCell(createCell(objx.get("invoiceAmounte").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell(objx.get("expenseItem").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell(objx.get("invoiceMoney").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));table.addCell(createCell(objx.get("expenseExplanation").toString(), textfont, Element.ALIGN_CENTER, 1, 1, true));}document.add(table);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));PdfPTable table3 = createTable(new float[]{6,17,17,60}, true, null);table3.completeRow();table3.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table3.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table3.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table3.addCell(createCell("", textfont, Element.ALIGN_CENTER, 1, 1, false));table3.addCell(createCell("序号", textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell("审批角色", textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell("审批人/审核人", textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell("审批意见", textfont, Element.ALIGN_CENTER, 1, 1, true));String assignee_1 = obj.getString("assignee_1");String assignee_2 = obj.getString("assignee_2"); String address_assignee = obj.getString("address_assignee"); int i_num = 1;for(int i=0;i<6;i++){boolean exam_boo = false;int size = tontentList.size();if(i==0){if(size>=1){exam_boo = true;}}else if(i==1){if(!("chang").equals(assignee_2)){if(size>=2){exam_boo = true;}}}else if(i==2){if(("chang").equals(assignee_2)){if(size>=2){exam_boo = true;}}else{if(size>=3){exam_boo = true;}}}else if(i==3){if(("chang").equals(assignee_2)){if(size>=3){exam_boo = true;}}else{if(size>=4){exam_boo = true;}}}else if(i==4){if(("chang").equals(assignee_2)){if(size>=4){exam_boo = true;}}else{if(size>=5){exam_boo = true;}}}else if(i==5){if(("chang").equals(assignee_2)){if(size>=5){exam_boo = true;}}else{if(size>=6){exam_boo = true;}}}if(exam_boo){int content_type = 0;String content_type_str = "";String content = "";String content_time = "";if(tontentList.size()>=i_num && tontentList.get(i_num-1)!=null){content_type = tontentList.get(i_num-1).getContentType();content_time = "审核时间: "+tontentList.get(i_num-1).getStrCreateTime();if(tontentList.get(i_num-1).getContent()!=null){content = tontentList.get(i_num-1).getContent();}}if(content_type == 1){content_type_str = "审批意见: 同意";}else if(content_type == 2){content_type_str = "审批意见: 不同意";}else if(content_type == 3){content_type_str = "审批意见: 不同意且继续";}String exam_role = "";if(i==0){exam_role = "部门负责人";}else if(i==1){exam_role = "分管合伙人";}else if(i==2){exam_role = "财务岗1";}else if(i==3){exam_role = "财务岗2";}else if(i==4){exam_role = "公司CEO";}else if(i==5){exam_role = "收文人";}String exam_assignee = "";if(i==0){exam_assignee = assignee_1;}else if(i==1){exam_assignee = assignee_2;}else if(i==2){exam_assignee = "张瑞平";}else if(i==3){exam_assignee = "蒋中杰";}else if(i==4){exam_assignee = "常东亮";}else if(i==5){exam_assignee = address_assignee;}if(i==0||i==1||i==5){Map userMap=this.userService.getUserByLoginCode(exam_assignee);exam_assignee = userMap.get("user_name").toString();}table3.addCell(createCell(i_num+"", textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell(exam_role, textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell(exam_assignee, textfont, Element.ALIGN_CENTER, 1, 1, true));table3.addCell(createCell(content_type_str+"    "+content+"    "+content_time, textfont, Element.ALIGN_CENTER, 1, 1, true));i_num +=1;}}document.add(table3);document.add(new Paragraph("\n",new Font(bfChinese, 4, Font.NORMAL)));// 5.关闭文档
        document.close();return new File(filepath);}@SuppressWarnings("unused")private PdfPTable createTable(int colNumber, boolean borderflg, Integer totalWidth) {int maxWidth = 520;PdfPTable table = new PdfPTable(colNumber);try {if (totalWidth != null) {table.setTotalWidth(totalWidth);} else {table.setTotalWidth(maxWidth);}table.setLockedWidth(true);table.setHorizontalAlignment(Element.ALIGN_CENTER);if (borderflg) {table.getDefaultCell().setBorder(1);} else {table.getDefaultCell().setBorder(0);}} catch (Exception e) {e.printStackTrace();}return table;}private PdfPTable createTable(float[] widths, boolean borderflg, Integer totalWidth) {int maxWidth = 520;PdfPTable table = new PdfPTable(widths);try {if (totalWidth != null) {table.setTotalWidth(totalWidth);} else {table.setTotalWidth(maxWidth);}table.setLockedWidth(true);table.setHorizontalAlignment(Element.ALIGN_CENTER);if (borderflg) {table.getDefaultCell().setBorder(1);} else {table.getDefaultCell().setBorder(0);}} catch (Exception e) {e.printStackTrace();}return table;}private PdfPCell createCell(String value, com.itextpdf.text.Font font, int align, int colspan, int rowspan,boolean boderFlag) {BaseColor tabBorderColor = new BaseColor(222,222,222);PdfPCell cell = new PdfPCell();cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(align);cell.setColspan(colspan);cell.setRowspan(rowspan);cell.setPhrase(new Phrase(value, font));cell.setPadding(3f);cell.setBorderColor(tabBorderColor);if (!boderFlag) {cell.setBorder(0);// cell.setPaddingTop(15.0f);// cell.setPaddingBottom(8.0f);
        }return cell;}  

 

转载于:https://www.cnblogs.com/mingforyou/p/6038422.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright www.122dh.com Rights Reserved.