前言
用户需要预览word的功能,word里面带了很多图片,本文选择生成html格式的word来提供该功能。
一、制作freemarker模板
首先,新建一个docx,然后往word里粘贴一个图片,再将word另存为html文件。
新建一个freemarker文件,如 word.ftl,将xml内容拷贝到word.ftl中。
二、修改模板
找到html的body标签
修改为以下格式
<body style="tab-interval:21pt;text-justify-trim:punctuation;"><!--StartFragment-->
<div class="Section0" style="layout-grid:15.6000pt;">
<#list pictList as pict>
<p><h1>${pict.title}</h1></p>
<p class=MsoNormal><img width="831" height="433" src="${pict.path}"><span
style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:宋体;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;"><o:p> </o:p></span></p>
</#list>
</div><!--EndFragment--></body>
从后台数据获取对应的标题、图片路径等内容,放入对应位置。
三、后台代码
参见上一篇博客,
唯一不同的就是xml格式的需要图片的二进制,html格式的需要图片的路径,这里引用两张百度远程的图片
private static Map getData() {
Map data = new HashMap();
List<Map> pictList = new ArrayList<>();
Map pict1 = new HashMap();
pict1.put("title", "图片1");
pict1.put("path", "https://img1.baidu.com/it/u=2496571732,442429806&fm=26&fmt=auto&gp=0.jpg");
Map pict2 = new HashMap();
pict2.put("title", "图片2");
pict2.put("path", "https://img0.baidu.com/it/u=1986451467,394304688&fm=26&fmt=auto&gp=0.jpg");
pictList.add(pict1);
pictList.add(pict2);
data.put("pictList", pictList);
return data;
}
四、结果
总结
。
本文介绍了以html的方式往word里插入图片。