導出word帶圖片html
若是你須要在word中添加圖片,那你就在第一步製做模板時,加入一張圖片佔位,而後打開xml文檔,能夠看到以下的一片base64編碼後的代碼:
java
<w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0…(很省略很省略)…CC</w:binData>
只要將 base64 的代碼替換成例如: ${image} ,以下: this
<w:binData w:name="wordml://03000001.png" xml:space="preserve">${image}</w:binData>
這裏要注意「>${image}<」這尖括號中間不能加任何其餘的諸如空格,tab,換行等符號。編碼
而後用代碼生成:spa
import freemarker.template.Configuration; import freemarker.template.Template; import sun.misc.BASE64Encoder; import java.io.*; import java.util.HashMap; import java.util.Map; /** * @description freemarker導出word帶圖片 * @author: YHZ * @date 2013-7-9 */ public class CreateDocWithImage { private Configuration configuration = null; public CreateDocWithImage() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } public void create() throws Exception { Map<String, Object> map = new HashMap<String, Object>(); map.put("year", "2011"); map.put("person", "Zhu You Feng"); map.put("image", getImageStr()); configuration.setClassForTemplateLoading(this.getClass(), "/docTemplate/"); Template t = configuration.getTemplate("doc2.ftl"); File outFile = new File("D:/outFile.doc"); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); t.process(map, out); } private String getImageStr() { String imgFile = "d:/test.jpg"; InputStream in = null; byte[] data = null; try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(data); } public static void main(String[] args) throws Exception { new CreateDocWithImage().create(); } }
地址:http://www.cnblogs.com/zhuyoufeng/archive/2011/09/01/2161558.html code