package com.wechat.common.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import com.deepoove.poi.XWPFTemplate;
import com.wechat.global.CustomException;
import com.wechat.global.message.InfoMsg;

/**
 * word 文档生成工具类
 * 
 * @author Administrator
 *
 */
// @SuppressWarnings("deprecation")
public class WordUtils {
	/*
	 * //配置信息,代码本身写的还是很可读的,就不过多注解了 private static Configuration configuration =
	 * null; //这里注意的是利用WordUtils的类加载器动态获得模板文件的位置 private static final String
	 * templateFolder = WordUtils.class.getClassLoader().getResource("/").getPath()
	 * + "template/"; static { configuration = new Configuration();
	 * configuration.setDefaultEncoding("utf-8"); try {
	 * configuration.setDirectoryForTemplateLoading(new File(templateFolder)); }
	 * catch (IOException e) { e.printStackTrace(); } }
	 */

	private WordUtils() {
		throw new AssertionError();
	}

	/*
	 * public static void exportMillCertificateWord(HttpServletRequest request,
	 * HttpServletResponse response, Map<String,Object> map) throws IOException {
	 * Template freemarkerTemplate = configuration.getTemplate("tempWord.ftl"); File
	 * file = null; InputStream fin = null; ServletOutputStream out = null; try { //
	 * 调用工具类的createDoc方法生成Word文档 file = createDoc(map,freemarkerTemplate); fin = new
	 * FileInputStream(file);
	 * 
	 * response.setCharacterEncoding("utf-8");
	 * response.setContentType("application/msword"); // 设置浏览器以下载的方式处理该文件名 String
	 * fileName = "简历附件"+System.currentTimeMillis()+ ".doc";
	 * response.setHeader("Content-Disposition", "attachment;filename="
	 * .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
	 * 
	 * out = response.getOutputStream(); byte[] buffer = new byte[512]; // 缓冲区 int
	 * bytesToRead = -1; // 通过循环将读入的Word文件的内容输出到浏览器中 while((bytesToRead =
	 * fin.read(buffer)) != -1) { out.write(buffer, 0, bytesToRead); } }catch
	 * (Exception e) { throw new CustomException(InfoMsg.ERROR_DOWNLOAD_WORD); }
	 * finally { if(fin != null) fin.close(); if(out != null) out.close(); if(file
	 * != null) file.delete(); // 删除临时文件 } }
	 */
	/**
	 * 使用poi-tl 生成word
	 * 
	 * @param response
	 * @param map
	 * @param basePackagePath
	 *            根路径
	 * @param fileTemplate
	 *            模板路径
	 * @param templateFilenName
	 *            文件名
	 * @return
	 */
	public static String poiTlWord(HttpServletResponse response, Map<String, Object> map, String basePackagePath,
			String fileTemplate, String templateFilenName) {
		String tempWordPath = WordUtils.class.getClassLoader().getResource("/").getPath()
				+ "template/TemplateWord.docx";
		XWPFTemplate template = XWPFTemplate.compile(tempWordPath).render(map);
		try {
			// String fileName =
			// ""+System.currentTimeMillis()+StringsUtils.getRandomString(5)+ ".docx";
			File saveDir = new File(basePackagePath + fileTemplate);
			if (!saveDir.exists()) {
				saveDir.mkdir();
			}
			File file = new File(saveDir + File.separator + templateFilenName);
			template.write(new FileOutputStream(file));
			template.close();
			return fileTemplate + templateFilenName;
		} catch (Exception e) {
			throw new CustomException(InfoMsg.ERROR_DOWNLOAD_WORD);
		}
	}

	/*
	 * private static File createDoc(Map<String,Object> dataMap, Template template)
	 * { String name = "test.doc"; File f = new File(name); Template t = template;
	 * try { // 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开 Writer w =
	 * new OutputStreamWriter(new FileOutputStream(f), "utf-8"); t.process(dataMap,
	 * w); w.close(); } catch (Exception ex) { ex.printStackTrace(); throw new
	 * RuntimeException(ex); } return f; }
	 */
}
