博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用itest生成word的文档
阅读量:4697 次
发布时间:2019-06-09

本文共 6151 字,大约阅读时间需要 20 分钟。

 

最近项目中需要根据商户提交的资料生成申诉文件进行下载,比较了一圈觉得用itest还是蛮方便的

 参考:http://noknower.iteye.com/blog/272011

 

pom.xml中的配置

<dependency>

          <groupId>itext</groupId>
          <artifactId>itext</artifactId>
          <version>2.1.7</version>
        </dependency>
        <dependency>
          <groupId>itext</groupId>
          <artifactId>itextasian</artifactId>
          <version>1.5.2</version>
        </dependency>
        <dependency>
          <groupId>itext</groupId>
          <artifactId>itext-rtf</artifactId>
          <version>2.1.7</version>
        </dependency>

Controller中的代码

@RequestMapping(value = "/appealModelDownload.htm", method = RequestMethod.POST)

    public String appealModelDownload(HttpServletResponse response, String proId, String handleType,String instCode,ModelMap model) throws Exception {
        PortestAppealModelDTO portestAppeal  =   null;
        portestAppeal =  protestAppealModelDomain.selectByProId(proId);
        if(portestAppeal!=null){
            Document  doc =  new Document(PageSize.A4);
            ByteArrayOutputStream bos  =  new ByteArrayOutputStream();
            RtfWriter2.getInstance(doc, bos);
            //开始写入
            doc.open();
            //设置标题
            Paragraph p  = new Paragraph("Transaction Receipt",new Font(Font.NORMAL,18,Font.BOLD,new Color(0,0,0)));
            p.setAlignment(Element.ALIGN_CENTER);
            doc.add(p);
            doc.add(new Paragraph("订单号(Order Number): "+portestAppeal.getMerchantOrderNo(),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            String bankAccountNO;
            if("MLTP011".equals(instCode)){
                bankAccountNO=portestAppeal.getBankAccountNo();
            }else{
                bankAccountNO =pCIDomain.aesDecrypt(portestAppeal.getBankAccountNo());
            }
            doc.add(new Paragraph("卡号(Account Number): "+bankAccountNO,new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("交易日期(Transaction Date): "+DateUtil.format(portestAppeal.getDealTime(), "yy/MM/dd"),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("交易金额(Transaction Amount): "+portestAppeal.getTradeAmount()+portestAppeal.getTradeCurrency(),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("授权号(Authorization Code): "+(portestAppeal.getAuthCode()!=null?portestAppeal.getAuthCode():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("商户英文名称(Merchant Name): "+(portestAppeal.getEnName()!=null?portestAppeal.getEnName():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            
            doc.add(new Paragraph("商户名称(Merchant Name): "+(portestAppeal.getZhName()!=null?portestAppeal.getZhName():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            
            String bgurl = portestAppeal.getBgUrl();
                if(StringUtil.isNotBlank(bgurl) && bgurl.indexOf("/", 10) >= 0){
                    bgurl = bgurl.substring(0, bgurl.indexOf("/", 10)).replace("https://", "").replace("http://", "");
                }
            
            doc.add(new Paragraph("商户网址(Merchant Location): "+(bgurl!=null?bgurl:""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("购买者(Purchaser): "+(portestAppeal.getBillName()!=null?portestAppeal.getBillName():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("购买者电话(Purchaser's Telephone): "+(portestAppeal.getBillPhoneNumer()!=null?portestAppeal.getBillPhoneNumer():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("购买者地址(Purchaser's Address): "+(portestAppeal.getBillAdderess()!=null?portestAppeal.getBillAdderess():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("购买者email(Purchaser's E-mail): "+(portestAppeal.getBillEmail()!=null?portestAppeal.getBillEmail():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("收货人(Recipient): "+(portestAppeal.getReceiveName()!=null?portestAppeal.getReceiveName():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("收货人电话(Recipient's Telephone): "+(portestAppeal.getReceiveTel()!=null?portestAppeal.getReceiveTel():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("收货地址(Shipping Address): "+(portestAppeal.getReceiveAddress()!=null?portestAppeal.getReceiveAddress():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("收货人email(Recipient's E-mail): "+portestAppeal.getReceiveEmail(),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("快递公司(Carrier): "+(portestAppeal.getExpressCompany()!=null?portestAppeal.getExpressCompany():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("快递追踪号(Tracking Number): "+(portestAppeal.getExpressNumber()!=null?portestAppeal.getExpressNumber():""),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            doc.add(new Paragraph("商品/服务(Merchandise/Services): "+portestAppeal.getBizType().getDescription(),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
            
            if(!"0".equals(handleType)){
                doc.add(new Paragraph("Merchant Letter",new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
                doc.add(new Paragraph("To whom might concern,",new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
                doc.add(new Paragraph(portestAppeal.getRemark(),new Font(Font.NORMAL, 10, Font.COURIER, new Color(0, 0, 0))));
                
                //遍历上传的截图
                List<PortestAppealImageDTO> imageList = new ArrayList<PortestAppealImageDTO>();
                imageList = protestAppealImageDomain.queryAppealImageByAppealId(portestAppeal.getId());
                if(imageList.size()>0){
                    for(PortestAppealImageDTO imageDto:imageList){
                        Image img=Image.getInstance(imageDto.getImage());   
                        img.setAbsolutePosition(0, 0);   
                        img.setAlignment(Image.LEFT);//设置图片显示位置   
                        img.scaleAbsolute(12,35);//直接设定显示尺寸   
                        img.scalePercent(50);//表示显示的大小为原尺寸的50%   
                        img.scalePercent(25, 12);//图像高宽的显示比例   
                        img.setRotation(30);//图像旋转一定角度   
                        doc.add(img);
                        //doc.add(new Paragraph("/n"));
                    }
                }
            }
            
            doc.close();// 关闭写入
            byte[] exByte = bos.toByteArray();
            // 设置文件类型
            response.setContentType("application/msword");
            response.setCharacterEncoding("utf-8");
            response.setContentLength(exByte.length);
            response.setHeader("Content-Disposition", "attachment;filename=" + portestAppeal.getMerchantCode() + ".doc");
            OutputStream out = response.getOutputStream();
            out.write(exByte);
            out.flush();
            out.close();
            
        }
        return null;
    }

转载于:https://www.cnblogs.com/susanqing/p/4705157.html

你可能感兴趣的文章
fatal: remote origin already exists.
查看>>
gridview 自定义value值
查看>>
2018二月实现计划成果及其三月规划
查看>>
类名.class和getClass()区别
查看>>
12/17面试题
查看>>
LeetCode 242. Valid Anagram
查看>>
JSP表单提交乱码
查看>>
如何适应现代雇佣关系
查看>>
团队项目(第五周)
查看>>
SQL 优化经验总结34条
查看>>
开源 视频会议 收藏
查看>>
核心J2EE模式 - 截取过滤器
查看>>
.net开源CMS
查看>>
JdbcTemplate
查看>>
第一次使用maven记录
查看>>
SharePoint服务器端对象模型 之 使用CAML进展数据查询
查看>>
Building Tablet PC Applications ROB JARRETT
查看>>
Adobe® Reader®.插件开发
查看>>
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>