java 富文本 word_Java导出富文本到word

源码地址:

背景

最近用java开发一个中车项目管理系统,里面有一个维修单word导出功能。

可用方案

在网上查找资料,总结出两种比较可行的方案。

(1) 制作word模板,导出成mht文件(单页面网页格式),然后往模板里渲染数据,最终生成word文档。

(2) 制作word模板,导出成xml文件,然后往模板里渲染数据,最终生成word文档。

两种都是采用模板的思想,比用poi去组织word格式简单的很多很多。不同点在于导出文件的格式不同,一个是mht文件,一个是xml文件。考虑到本项目中的维修单个别字段采用了富文本编辑器实现,保存进数据库中是html格式的字符串,所以采用第一种方案,即通过mht文件来实现。

实现思路

由于我们是要用word来解析带图片的富文本(说白了就是解析一段html,当然这段html代码是包含img标签:图片),so...传统的word模板导出(word另存为xml,在修改后缀为ftl)是行不通的,因为他解析不了html代码(至少我目前没有找到这方便的解决方案,大神勿喷~),这样的话我就要换用一种模板来处理这个模板:word模板另存为mht格式,再修改后缀为ftl。剩下的就是后台操作了,找到你存富文本的字段(html代码)获取里面的img标签,找到图片,并把图片解析为base64字符串,填充到我们只做的模板上就ok了。

实现步骤及注意事项

创建mht模板

根据模板引擎的语法规则填入占位符制作word模板,保存为mht文件。eg:

然后打开mht文件,在mht文件中插入图片资源的base64及xml 的href引用的占位。如下图:

${imagesBase64String} 和 ${imagesXmlHrefString}这两个是我们手动加进去的,这也是解析富文本的关键所在。

由于mht文件是采用的是“us-ascii”编

你可能感兴趣的:(java,富文本,word)