1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java生成word文档 图片_java根据模板生成word文档 兼容富文本 图片

java生成word文档 图片_java根据模板生成word文档 兼容富文本 图片

时间:2019-07-24 11:40:38

相关推荐

java生成word文档 图片_java根据模板生成word文档 兼容富文本 图片

Java自动生成带图片、富文本、表格等的word文档

使用技术freemark+jsoup生成mht格式的伪word文档,已经应用项目中,确实是可行的,无论是富文本中是图片还是表格,都能在word中展现出来

使用jsoup解析富文本框,将其中的图片进行Base64位转码,

使用freemark替换模板的占位符,将变量以及图片资源放入模板中在输出文件

maven地址

org.freemarker

freemarker

2.3.23

org.jsoup

jsoup

1.10.2

制作word的freemark模板

先将wrod的格式内容定义好,如果需要插入参数的地方以${xxx}为表示,例:${product}

模板例子:

2.将模板另存为mht格式的文件,打开该文件检查每个变量(${product})是否完整,有可能在${}中出现其他代码,需要删除。

3.将mht文件变更文件类型,改成ftl为结尾的文件,引入到项目中

4.修改ftl模板文件,在文件中加上图片资源占位符${imagesBase64String},${imagesXmlHrefString}

具体位置如下图所示:

5.ftl文件中由几个关键配置需要引入到代码中:

docSrcParent=word.files

docSrcLocationPrex=file:///C:/268D4AA4

nextPartId=01D2C8DD.BC13AF60

上面三个参数,在模板文件中可以找到,需要进行配置,如果配置错误,图片文件将不会显示

下面这三个参数固定,切换模板也不会改变

shapeidPrex=_x56fe__x7247__x0020

typeid=#_x0000_t75

spidPrex=_x0000_i

6.模板引入之后进行代码编辑

下载源码后需要进行调整下内容:

录入步骤5中的6个参数

修改freemark获取模板方式

下面这种方式能获取模板,但是在项目打包之后无法获取jar包内的文件

Configurationconfiguration=newConfiguration(Configuration.getVersion());

configuration.setDefaultEncoding(StandardCharsets.UTF_8.toString());

configuration.setDirectoryForTemplateLoading(newFile(templatePath));

Templatetemplate=configuration.getTemplate("xxx.ftl");

通过流的形式直接创建模板对象

Configurationconfiguration=newConfiguration(Configuration.getVersion());

configuration.setDefaultEncoding(StandardCharsets.UTF_8.toString());

configuration.setDirectoryForTemplateLoading(newFile(templatePath));

InputStreaminputStream=newFileInputStream(newFile(templatePath+"/"+templateName));

InputStreamReaderinputStreamReader=newInputStreamReader(inputStream,StandardCharsets.UTF_8);

Templatetemplate=newTemplate(templateName,inputStreamReader,configuration);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。