zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Requests接口测试(五)
    Requests接口测试(四)
    Requests接口测试(一)
    软件测试杂谈(学习思路、学习方法、面试技巧、后期发展、职业规划等)
    Requests接口测试(三)
    Requests接口测试(二)
    Python基础入门-列表解析式
    Python基础入门-集合
    Jmeter接口测试-完成任务API
    Jmeter接口测试-基于nodejs的to do list项目说明
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3181579.html
Copyright © 2011-2022 走看看