一、前言
在日常开发中,经常需要生成动态word文件。通过编译模板,然后动态修改单词内容以组合成新文件。报告、请假、发票页面等都可以使用动态生成的单词来解决。
作者总结了一般技术点,尽可能降低开发者的技术门槛。
二、制作和渲染模板(一)总体流程1、准备数据
通过查询数据库获取需要修改的数据,或者调用远程API接口获取数据。数据准备好后,进入下一步。
2、制作word模板
新建一个并设计一个想要效果的word文档样式,包括字体、字体大小、段落样式布局等,先制作一个静态word文件。
3、制作模板
在生词模板的基础上,使用语法,结合已经准备好填充的数据结构,需要动态变化的内容用变量来表示。
用变量替换的常见情况是对象属性和循环。
模板创建后,保存为ftl后缀文件。
4、渲染字符串
结合数据和模板,替换预先生成的变量占位符,形成最终的word文件
(二)编码实践
按照作者提供的流程和SDK编码实践,还是比较简单的。
1、引入依赖
p>
以下依赖于包括封装在内的工具和方法,大大降低了使用门槛。
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);
从流程到编码实践都比较简单。
至此,你可以快速体验造词技术了。
三、内容扩展
如果上面分析的词生成的页面结构比较简单,实现起来也不难。如果涉及到以下几种情况,实施起来会比较困难。
增加的难度主要是由于页面布局复杂,各种组件和控件的使用,多媒体资源的引入。解决方法还是参照上面的流程。
(一)复杂模板1、多媒体资源布局
模板中需要多媒体(图片)内容,数量动态变化,位置不固定时难以实现。
2、复杂的内容布局
当模板包含文本、选择框、水平合并单元格、垂直合并单元格时,很难实现。
3、表格的动态呈现
在动态渲染合并单元格较大时,很难实现。
以上复杂的模板制作,作者有实践。
(二)文件格式
对于wo的rd文件格式有两种,一种是.doc后缀的文件,另一种是.docx后缀的文件。以上讨论属于前者。后者比前者复杂,后续版本会提供API操作接口。
.docx 后缀文件的 Word 在转换为 PDF 时具有更好的兼容性。
(三)使用建议
开发前尽可能确认模板布局,复杂的页面结构修改需要加大投入
熟悉语法和word文件结构有利于word模板开发
更多的使用和练习将有助于制作精美的文档。
暂无评论内容