系列文章目录
第一章:springboot下生成复杂word文档方案 在Word软件里面制作模板
第二章:根据模板导出word,复合格式表格生成、可变列表格生成
第三章:doc和docx插入多图
第四章:web环境下word文档预览
前言
doc和docx格式的word文档的图片标签结构是不一样的,不要试图去找它们的共同点,那是浪费时间,我们需要用完全不同的方式去处理这两代的图片标签。
提示:以下是本篇文章正文内容,下面案例可供参考
准备word文档图片样式
必需使用本身带有图片的word文档来做模板才能正常显示图片
,因为只有本身带有图片的word文档才会引入的图片相关的命名空间标签,不然拿一个本身不带有图片的word文档来做模板插入图片是不会显示的。
所以,用一个调好图片格式、线条之类样式操作之后的word文档,转为模板文档后将原有的图片base64编码用freemarker标签替换即可。
需要图片边框,固定、动态大小等样式,要自己先行调整。
一、doc格式word图片标签
标签解读
下面这个是简化版的三个图片的标签。
第二个、第三个<w:r>标签需要删掉或者注释掉
。
${} freemarker标签有只需要三个。
<w:p>
<#list images as img>
<w:r>
<w:pict>
<w:binData w:name="wordml://03000001${img.index}.png" xml:space="preserve">${img.base64}</w:binData>
<v:shape id="图片 2" o:spid="_x0000_i1025" type="#_x0000_t75"
style="width:324pt;height:185.4pt;visibility:visible;mso-wrap-style:square;mso-position-horizontal:absolute"
o:preferrelative="f">
<v:imagedata src="wordml://03000001${img.index}.png" o:title=""/>
</v:shape>
</w:pict>
</w:r>
</#list>
<w:r>
<w:pict>
...第二张图片
</w:pict>
</w:r>
<w:r>
<w:pict>
...第三张图片
</w:pict>
</w:r>
</w:p>
数据结构
{
"images":[
{
"title": "图片标题",
"base64": "osodfhslkdhflksdkhflsdhjfohwelhlwsejnrrer==",
"index": 101
}
]
}
二、docx格式图片标签
docx格式的标签相对doc的要简单一些。
<#list images as img>
<pkg:part pkg:name="/word/media/image${img.index}.jpeg" pkg:contentType="image/jpeg" pkg:compression="store">
<pkg:binaryData>${img.base64}
</pkg:binaryData>
</pkg:part>
</#list>