soringjava freemarkere

需求:将网页内容导出为pdf文件其中包含文字,图片echarts图

使用itext将html生成pdf中文换行问题解决方案

本文内容是参考以上地址内容对需求的实现

//获取响应对象输出流并返回

* 将多个canvas畫布组成的图表合成为一个完整的canvas,并获取完整的dataURl //将第一个画布作为基准。 //遍历将后续的画布添加到在第一个上

废话不多说进入正题!

本文重點在于:对富文本图片的导出(基础的freemarker+word模板导出这里不做详细解说哈)

(ps:大神的东西太深奥~~懵逼了

一周才搞定,为了方便后来在更加简单清晰的学习,楼主写下这篇博客感谢大神给了我个完善和进步的机会,也希望后来在继续完善)

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

一、模板制作(这个很重要)

  创建word文件:我这里用第二个content来显示我们要的富文本,然後将我们的word文件另存为mht文件

最后我们就拿到我们要的mht模板了,这仅仅是个开始...各位看官往下看

打开我们的mht文件并处理:在我们的文件里媔找到下面这些东西如果没有找到呢?....这个问题我就只有呵呵了

全文检索gb2312把他改成utf-8,同时需要加上3D前缀,对应着格式来改 一般就这两种:

提示:所有的都要改成utf-8(你不改也是可以的)

然后保存一下再把文件的后缀名改成ftl格式的就ok了(模板处理到此结束)

这个大家不陌生吧?陌生的自己打脸去下面的那三个我依然懵逼

四、导出word(带富文本图的哟)

到此~导出word带富文本图片的功能就借宿了,详细代码我放在附件里面(这里着重讲mht模板的一些改动处理富文本的java代码我就没有单独贴出来了哈,demo里面有哦)

有完整的demo大家放心不会像我一样懵逼┅周了 哈哈

开玩笑的~!话说我从开始到完整的做出来 还是花了5天左右的时间,

最后在再给大家扩展一下:一个word 出现多个富文本并且每个富文本有多个图片的思路:

简单说一下 ,其实就是在处理下一个富文本的时候 要拿到上一个富文本里面处理中的"imagesBase64String" 再把它累加起来

 各位看官!搞懂这个是不是觉得单纯的图片导出太简单了哇 哈哈(话说我还没用过单纯的图片导出)

我要回帖

更多关于 java freemarker 的文章

 

随机推荐