首先引入 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