freemarker输出图片或文字到word
Posted 宇宙磅礴而冷漠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了freemarker输出图片或文字到word相关的知识,希望对你有一定的参考价值。
需要用到word模板,在模板上调好样式,然后保存生成word 2003 XML文件,然后保存为.ftl后缀,找到关键需要替换的文本或图片位置用${name}替换就行,name是map<key,value>里的key,如果有list,用<#list names as name></#list>
依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
package com.example;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.Version;
import sun.misc.BASE64Encoder;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
//加载要用到的图片
File file=new File("C:/Users/xx/Pictures/c3e36b65910d34877813b3922265d79.jpg");
FileInputStream in=new FileInputStream(file);
byte[] b=new byte[in.available()];
in.read(b);
in.close();
//图片需要base64加密成字符串
BASE64Encoder encoder=new BASE64Encoder();
//第一种list
List<Person> list=new ArrayList<>();
list.add(new Person().setImage(encoder.encode(b))); //可把图片封装到实体类里
list.add(new Person().setImage(encoder.encode(b)));
list.add(new Person().setImage(encoder.encode(b)));
//第二种list
List<String> list2=new ArrayList<>();
String is=encoder.encode(b); //可直接用图片字符串
list2.add(is);
list2.add(is);
list2.add(is);
Map<String,Object> map=new HashMap<>();
//map.put("images",list);
map.put("images","haha");
//list2的话在模板使用<#list names as name></#list>中的name.image
//list的话直接用
Configuration configuration=new Configuration(new Version("2.3.0"));//版本一致
configuration.setDirectoryForTemplateLoading(new File("D:\\\\xx\\\\model\\\\"));//需要的.ftl文件目录
Template template=configuration.getTemplate("foot.ftl");//.ftl文件名
File file2=new File("D:\\\\xx\\\\model\\\\"+"out.doc");//输出.doc位置
BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter(file2));
template.process(map, bufferedWriter);
bufferedWriter.close();
}
}
以上是关于freemarker输出图片或文字到word的主要内容,如果未能解决你的问题,请参考以下文章
java用freemarker导出数据到word(含多图片)