如何使用freeMarker生成doc、docx、pdf文件
freeMarker是什么
doc和docx有什么区别
如何生成doc文档(带图片)
如何生成docx文档,以及将其生成pdf文档
freeMarker是什么
doc和docx有什么区别
格式不同
DOCX是WORD2007及以上版的格式,是一种基于XML的压缩格式。
DOC是WORD2003及以下版的格式。
体积不同,docx远大于doc
doc是单个文件,而docx其实是由一个zip压缩文件更改后缀而来如何生成doc文档
由1可以明白freemarker可以输出文本信息, 而我们的doc其实就是一个文本,所以可以直接使用freemarker可以doc文件,将doc文件,另存为xml文件,修改成动态数据模板,如果带有图片,可直接由图片转成base64格式,再按照普通属性进行替换(此处我们重点说生成docx文档,因为生成pdf文档,poi对freemark生成的doc文档转成pdf无法辨识)如何生成docx文档,以及将其生成pdf文档
docx是一个zip压缩文件,解压后的内容如下:
主要关注:document.xml (文档结构),document.xml.rels(图片引用关系配置),以及media(存放图片的目录)目录
还是直接上代码吧
首先写一个要生成的docx样式,修改后缀为zip,然后将其解压,设置动态数据,修改document.xml 和document.xml.rels文件按照freeMarker数据格式编写
document.xml (文档结构,橘色部分freemarker需要设置的动态数据):
文档结构,橘色部分freemarker引用document.xml.rels中的id:
document.xml.rels(图片引用关系配置,橘色部分freemarker需要动态生成的图片引用id)
依赖jar
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<dependency>
<groupId>com.artofsolving</groupId>
<artifactId>jodconverter-maven-plugin</artifactId>
<version>2.2.1</version>
</dependency
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>org.apache.poi.xwpf.converter.core</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</