首页>代码>SpringBoot Freemarker定制word文档下载,支持文档内图文导出>/springboot-doc/src/main/java/com/simon/springbootdoc/controller/DocController.java
package com.simon.springbootdoc.controller; import com.simon.springbootdoc.util.FreeMarkerUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; /** * @author Simon */ @Controller @RequestMapping(value = "/doc") public class DocController { private static final String PIC_PATH = "D:\\test\\head.jpg"; @RequestMapping(value = "/generate", method = RequestMethod.GET) public void getWord(HttpServletRequest request, HttpServletResponse response) { File file = null; FileInputStream fis = null; ServletOutputStream out = null; try { String fileName = String.valueOf(System.currentTimeMillis()); response.setCharacterEncoding("utf-8"); response.setContentType("application/msword"); response.setHeader("Content-Disposition", "attachment;filename=" .concat(String.valueOf(URLEncoder.encode(fileName + ".doc", "UTF-8")))); Map<String, Object> map = new HashMap<>(); map.put("name", "simon"); map.put("image", FreeMarkerUtils.getImgFileToBase64(PIC_PATH)); file = FreeMarkerUtils.exportWord(fileName, map, "info.ftl"); fis = new FileInputStream(file); out = response.getOutputStream(); byte[] buffer = new byte[512]; int bytesToRead = -1; while ((bytesToRead = fis.read(buffer)) != -1) { out.write(buffer, 0, bytesToRead); } return; } catch (Exception ex) { System.out.println("创建word文件异常: " + ex); } finally { file.delete(); try { if (fis != null) { fis.close(); } if (out != null) { out.flush(); out.close(); } } catch (Exception ex) { ex.printStackTrace(); } } return; } }