• 下载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("
    "));
            // 通过 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租赁有限公司
    
    
    ", textfont));
            Paragraph title = new Paragraph(taskExt.getProcInstanceName()+"
    ", headfont);
            title.setAlignment(Element.ALIGN_CENTER);
            document.add(title);
            document.add(new Paragraph("
    ",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("
    ",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("
    ",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("
    ",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("
    ",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("
    ",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("
    "));
            // 通过 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租赁有限公司
    
    
    ", textfont));
            Paragraph title = new Paragraph(taskExt.getProcInstanceName()+"
    ", headfont);
            title.setAlignment(Element.ALIGN_CENTER);
            document.add(title);
            document.add(new Paragraph("
    ",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("
    ",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("
    ",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("
    ",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("
    ",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("
    ",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;
        }
  • 相关阅读:
    修改Tomcat可支持get形式url长度
    UTF-8 带签名和不带签名的区别
    注册asp.net 4.0版本到IIS服务器中
    C#计算字符串长度,汉字算两个字符
    高德地图Javascript API设置域名白名单
    金三银四招聘季,这些BAT以及独角兽互联网公司官方招聘网站值得关注。(个人梳理备用:附BAT以及独角兽公司官方招聘网址)
    【转载】 C#工具类:Csv文件转换类
    【转载】ASP.NET生成图片的缩略图
    【转载】IIS报错不是有效的Win32应用程序
    【转载】C#工具类:FTP操作辅助类FTPHelper
  • 原文地址:https://www.cnblogs.com/mingforyou/p/6038422.html
Copyright © 2020-2023  润新知