使用itext导出多个 数据库中的富文本html标签(带占位符可替换的)的word文档并压缩

首先引入 itext 需要的jar包 

      <dependency>
	      <groupId>com.lowagie</groupId>
	      <artifactId>iText</artifactId>
	      <version>2.1.3</version>
	  </dependency>
	  <dependency>
	      <groupId>com.lowagie</groupId>
	      <artifactId>itext-rtf</artifactId>
	      <version>2.1.3</version>
	  </dependency>

其次是我们的controller 从前端接收到 必要的参数 ,从数据库得到自己想要导出的富文本内容其次导出word

    @RequestMapping("/externalVisitToBeReviewed")
	@ResponseBody
	public ResultBean externalVisitToBeReviewed(HttpServletRequest request, HttpServletResponse response, String casIds,
			String chIds, String paths) throws IOException {
		ResultBean resultBean = new ResultBean();
        //这个是我查询数据库的方法 换成你自己的内容即可
		DocTemplate docTemplate = 
        docTemplateService.selectDocTemplateById(Long.valueOf(paths));
		String content = docTemplate.getTmpHtml();
		String[] casIdArray = casIds.split(",");
		String[] chIdArray = chIds.split(",");
        //这里生成你要导出之后的压缩包名字
		String zipName = new Date().getTime() + ".zip";
        //下面注释掉的这句如果 前段没有设置的话 最好不写 要不然 压缩包可能会打不开
//		response.setContentType("APPLICATION/OCTET-STREAM");
        //设置请求头
		response.setHeader("Content-Disposition", "attachment; filename=" + zipName);
		ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
		try {
			File file = new File(wordTemplate);
            //这里判断下选中的导出的文件夹是否存在 如果不存在 就自己创建
			if(!file.exists()){
				file.mkdirs();
			}
            //循环我上面的条件 如果循环三次 最后导出的压缩包中就有三个word文档
			for (int i = 0; i < casIdArray.length; i++) {
                 //循环里的 是真正导出word的方法 这里调用下
				String path = wordTemplate + new Date().getTime() + ".doc";
				wordService.externalVisitToBeReviewed(request, response, casIdArray[i], chIdArray[i], path, content);
			}
            //这里把刚刚导出word的文件夹压缩 然后返回给前台
			ZipUtils.doCompress(wordTemplate, out);
			response.flushBuffer();
			resultBean.put("msg", "下载成功");
			resultBean.put("code", "1");
		} catch (Exception e) {
			e.printStackTrace();
			resultBean.put("msg", "下载失败");
			resultBean.put("code", "0");
		} finally {
			out.close();
            //这里是对下载到本地的word进行下 删除操作 要不然下次再下载 这次的 也会跟着下载下去
			FileUploadUtils.deleteFileCCDS(wordTemplate);
		}
		return resultBean;
	}

下面这个是itext 导出word的方法

@Override
	public String externalVisitToBeReviewed(HttpServletRequest request,HttpServletResponse response, String casId,String chId,String path,String content) throws Exception {
        //这里是我封装的一个model 用来替换富文本中的占位符用的
		Placeholder placeholder = new Placeholder(Long.valueOf(casId), !"".equals(chId)?Long.valueOf(chId):nul
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值