当前位置: 代码迷 >> 综合 >> java itext 生成word文档
  详细解决方案

java itext 生成word文档

热度:0   发布时间:2023-12-11 16:04:38.0

/**
      *  创建word文档 步骤:   
      * 1,建立文档   
      * 2,创建一个书写器   
      * 3,打开文档   
      * 4,向文档中写入数据   
      * 5,关闭文档  
      * @Date 2020年3月18日 下午3:21:40
      * tag@param fileName word文件名
      * tag@param data 需要展示的数据
      * tag@return
      */
        public InputStream  creatAndUploadTongHangWord(String fileName,Map<String, Object> data) {
            //新建文档
            InputStream bis=null;
            Document document = new Document(PageSize.A4,80,80,80,80);
            String projectType=String.valueOf(data.get("projecttype"));
            try {
                SFTPClientUtils sftpUtils=new SFTPClientUtils();
                sftpUtils.makeConnection();
                InputStream streams= sftpUtils.download(upload_tonghang_pic_path);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int len;
                byte[] dataBytes;
                while ((len = streams.read(buffer)) != -1) {
                    baos.write(buffer, 0, len);
                }
                baos.flush();
                dataBytes = baos.toByteArray();
                Image img = Image.getInstance(dataBytes);
                //创建读写器,在本地生成word文档
                ByteArrayOutputStream baoss = null;
                baoss = new ByteArrayOutputStream();
                RtfWriter2.getInstance(document, baoss);
                //打开文档
                document.open();
                Font shuomingfont=new Font(BaseFont.createFont(), 12, Font.NORMAL);
                Font shuomingt=new Font(BaseFont.createFont(), 12, Font.UNDERLINE);
                //大标题图片
                if(img!=null){
                    img.scalePercent(32);//设置图片为原图片大小的100%
                }
                int jinju=5;
                int jinju2=20;
                //大标题
                String bigtitle=this.getTongHangTitle(projectType);
                Paragraph titleParagraph = new Paragraph();
                titleParagraph.setAlignment(Image.ALIGN_CENTER);
                titleParagraph.setSpacingAfter(8);
                titleParagraph.add(img);
                titleParagraph.add(new Paragraph( bigtitle,FontFactory.getFont(Constants.FONTTYPE, 22, Font.BOLD)));
                document.add(titleParagraph);
                //项目名称
                Paragraph p1 = new Paragraph("项目名称: ", FontFactory.getFont(Constants.FONTTYPE, 12,Font.BOLD));
                p1.setAlignment(Element.ALIGN_LEFT);
                p1.setFont(shuomingfont);
                Chunk chunk1 = new Chunk(String.valueOf(data.get("projectName")) , FontFactory.getFont(Constants.FONTTYPE, 12));
                chunk1.setFont(shuomingt);
                p1.add(chunk1);
                document.add(p1);
                //申请人姓名
                Paragraph p2= new Paragraph("申请人姓名: ", FontFactory.getFont(Constants.FONTTYPE, 12,Font.BOLD));
                p2.setSpacingAfter(jinju);  
                p2.setSpacingBefore(jinju); 
                p2.setAlignment(Element.ALIGN_LEFT);
                p2.setFont(shuomingfont);
                Chunk chunk2=new Chunk(String.valueOf(data.get("name")), FontFactory.getFont(Constants.FONTTYPE, 12));
                chunk2.setFont(shuomingt);
                p2.add(chunk2);
                document.add(p2);
                //申请人单位
                Paragraph p3= new Paragraph("申请人单位: ", FontFactory.getFont(Constants.FONTTYPE, 12,Font.BOLD));
                p3.setSpacingAfter(jinju);  
                p3.setSpacingBefore(jinju); 
                p3.setAlignment(Element.ALIGN_LEFT);
                p3.setFont(shuomingfont);
                Chunk chunk3=new Chunk(String.valueOf(data.get("completeunit")), FontFactory.getFont(Constants.FONTTYPE, 12));
                chunk3.setFont(shuomingt);
                p3.add(chunk3);
                document.add(p3);
                //推荐单位/推荐专家
                Paragraph p4= new Paragraph("推荐单位/推荐专家: ", FontFactory.getFont(Constants.FONTTYPE, 12,Font.BOLD));
                p4.setSpacingBefore(jinju); 
                p4.setAlignment(Element.ALIGN_LEFT);
                p4.setFont(shuomingfont);
                Chunk chunk4=new Chunk(String.valueOf(data.get("unitName")), FontFactory.getFont(Constants.FONTTYPE, 12));
                chunk4.setFont(shuomingt);
                p4.add(chunk4);
                document.add(p4);
                //建议授奖类型 科普奖无授奖类型
                if(!projectType.equals(Constants.PROJECTTYPE_KP)){
                    Paragraph p55= new Paragraph("                                                                         ", FontFactory.getFont(Constants.FONTTYPE, 12,Font.UNDERLINE));
                    document.add(p55);
                    Paragraph p5= new Paragraph("建议授奖类型: ", FontFactory.getFont(Constants.FONTTYPE, 12,Font.BOLD));
                    p5.setAlignment(Element.ALIGN_LEFT);
                    p5.setFont(shuomingfont);
                    Chunk chunk5=new Chunk(String.valueOf(data.get("votetypename")), FontFactory.getFont(Constants.FONTTYPE, 12));
                    chunk5.setFont(shuomingt);
                    p5.add(chunk5);
                    document.add(p5);
                    Paragraph p56= new Paragraph("                                                                         ", FontFactory.getFont(Constants.FONTTYPE, 12,Font.UNDERLINE));
                    document.add(p56);
                }
                //具体评审意见
                Table table = new Table(1);  
                table.setBorderWidth(1);  
                table.setBorderColor(Color.BLACK);  
                table.setPadding(0);  
                table.setSpacing(0); 
                table.setWidth(100f);
                Paragraph juti = new Paragraph("具体评审意见:\n ",FontFactory.getFont(Constants.FONTTYPE, 12));
                juti.setSpacingAfter(10);
                juti.setAlignment(Element.ALIGN_LEFT);
                juti.setFont(shuomingfont);
                juti.setKeepTogether(true);
                Paragraph conten=new Paragraph(String.valueOf(data.get("opinion")), FontFactory.getFont(Constants.FONTTYPE, 12));
                conten.setAlignment(Element.ALIGN_LEFT);
                conten.setKeepTogether(true);
                conten.setSpacingAfter(300);
                Paragraph gfda=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda.setSpacingAfter(100);
                gfda.setKeepTogether(true);
                Paragraph gfda2=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda2.setKeepTogether(true);
                Paragraph gfda3=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda3.setKeepTogether(true);
                Paragraph gfda4=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda4.setKeepTogether(true);
                Paragraph gfda5=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda5.setKeepTogether(true);
                Paragraph gfda6=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda6.setKeepTogether(true);
                Paragraph gfda7=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda7.setKeepTogether(true);
                Paragraph gfda8=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda8.setKeepTogether(true);
                Paragraph gfda9=new Paragraph("", FontFactory.getFont(Constants.FONTTYPE, 12));
                gfda9.setKeepTogether(true);
                juti.add(conten);
                juti.add(gfda);
                juti.add(gfda2);
                juti.add(gfda3);
                juti.add(gfda4);
                juti.add(gfda5);
                juti.add(gfda6);
                juti.add(gfda7);
                juti.add(gfda8);
                juti.add(gfda9);
                Cell juticell1 = new Cell(juti);//单元格  
                table.addCell(juticell1); 
                document.add(table);
                //关闭文档
                document.close();
                byte[] byteArray = baoss.toByteArray();
                bis = new ByteArrayInputStream(byteArray);
            } catch (Exception e) {
                logger.error("creatAndUploadTongHangWord with error:"+e);
            }
            return bis;
        }

  相关解决方案