Java使用FreeMarker模版技术动态生成word实践

一、前言

在日常开发中,经常需要生成动态word文件。通过编译模板,然后动态修改单词内容以组合成新文件。报告、请假、发票页面等都可以使用动态生成的单词来解决。

作者总结了一般技术点,尽可能降低开发者的技术门槛。

二、制作和渲染模板(一)总体流程1、准备数据

通过查询数据库获取需要修改的数据,或者调用远程API接口获取数据。数据准备好后,进入下一步。

2、制作word模板

新建一个并设计一个想要效果的word文档样式,包括字体、字体大小、段落样式布局等,先制作一个静态word文件。

3、制作模板

在生词模板的基础上,使用语法,结合已经准备好填充的数据结构,需要动态变化的内容用变量来表示。

用变量替换的常见情况是对象属性和循环。

图片[1]-Java使用FreeMarker模版技术动态生成word实践-唐朝资源网

模板创建后,保存为ftl后缀文件。

4、渲染字符串

结合数据和模板,替换预先生成的变量占位符,形成最终的word文件

(二)编码实践

按照作者提供的流程和SDK编码实践,还是比较简单的。

1、引入依赖

p>

以下依赖于包括封装在内的工具和方法,大大降低了使用门槛。

图片[2]-Java使用FreeMarker模版技术动态生成word实践-唐朝资源网


    xin.altitude.cms
    ucode-cms-word
    1.5.6

2、编码

/* 模拟准备数据 */

List data = TempUtils.readJsonList("HumanDemo.json", HumanDemo.class);
/* 将数据填充到模版中并生成word文档 */
DocUtils.fillWord("templates/HumanDemo.ftl", data);

从流程到编码实践都比较简单。

至此,你可以快速体验造词技术了。

三、内容扩展

如果上面分析的词生成的页面结构比较简单,实现起来也不难。如果涉及到以下几种情况,实施起来会比较困难。

图片[3]-Java使用FreeMarker模版技术动态生成word实践-唐朝资源网

增加的难度主要是由于页面布局复杂,各种组件和控件的使用,多媒体资源的引入。解决方法还是参照上面的流程。

(一)复杂模板1、多媒体资源布局

模板中需要多媒体(图片)内容,数量动态变化,位置不固定时难以实现。

2、复杂的内容布局

当模板包含文本、选择框、水平合并单元格、垂直合并单元格时,很难实现。

3、表格的动态呈现

在动态渲染合并单元格较大时,很难实现。

以上复杂的模板制作,作者有实践。

(二)文件格式

对于wo的rd文件格式有两种,一种是.doc后缀的文件,另一种是.docx后缀的文件。以上讨论属于前者。后者比前者复杂,后续版本会提供API操作接口。

.docx 后缀文件的 Word 在转换为 PDF 时具有更好的兼容性。

(三)使用建议

开发前尽可能确认模板布局,复杂的页面结构修改需要加大投入

熟悉语法和word文件结构有利于word模板开发

更多的使用和练习将有助于制作精美的文档。

© 版权声明
THE END
喜欢就支持一下吧
点赞47赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容