首页>代码>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;
}
}

最近下载
最近浏览