下载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); // 流程id String 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<Attachment> attachmentList=this.examTaskService.getFileListByProcessInstanceId(Pid); //查询备注列表 List<Tcontent> 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<Tcontent> 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<Object> 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<String, Object> 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<Tcontent> 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<Object> 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<String, Object> 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; }