package com.bcxin.survey.utils; import java.io.BufferedInputStream; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; import sun.misc.BASE64Encoder; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; @SuppressWarnings("unchecked") public class DocumentHandler { private Configuration configuration = null; @SuppressWarnings("deprecation") public DocumentHandler() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } public void createDoc(String template,String docPath,Map dataMap) { try{ // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载, // 这里我们的模板是放在com.havenliu.document.template包下面 configuration.setClassForTemplateLoading(this.getClass(), "/com/bcxin/risk/report/draft/template"); Template t = configuration.getTemplate(template); // 输出文档路径及名称 File outFile = new File(docPath); Writer out = null; out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(outFile))); t.process(dataMap, out); } catch (Exception e) { e.printStackTrace(); } } public static String getImageString(String filename) throws IOException { InputStream in = null; byte[] data = null; try { in = new FileInputStream(filename); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { throw e; } finally { if(in != null) in.close(); } BASE64Encoder encoder = new BASE64Encoder(); return data != null ? encoder.encode(data) : ""; } }