freemarker导出word带图片

导出word带图片

如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码:

 

<w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0…(很省略很省略)…CC</w:binData>


只要将 base64 的代码替换成例如: ${image} ,如下:

 

 

<w:binData w:name="wordml://03000001.png" xml:space="preserve">${image}</w:binData>

 


这里要注意>${image}<这尖括号中间不能加任何其他的诸如空格,tab,换行等符号。

然后用代码生成:

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

你可能感兴趣的:(freemarker)