首页>代码>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;
    }
}
最近下载更多
crosa_Don  LV18 2023年5月22日
快乐的程序员  LV25 2023年1月25日
最代码官方  LV167 2023年1月15日
最近浏览更多
泓鼎168  LV19 2023年6月30日
szf123  LV12 2023年5月31日
陆程江  LV2 2023年5月28日
crosa_Don  LV18 2023年5月22日
做你的景天  LV7 2023年4月12日
master_guo  LV7 2023年4月12日
xuyongff  LV24 2023年3月29日
hihhhh  LV6 2023年3月24日
ssmtest  LV5 2023年3月11日
dixiu000  LV4 2023年2月28日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友