环境介绍:
itext目前已经发展到itext7版本,目前系统里面使用的itext2版本;
使用spring的freemaker结合itext,完成pdf的导出
需要进行pdf导出的html文件,可能包含下面这几种情况,导致pdf导出失败:
- 含有不闭合的html标签,比如<br>
- html标签中,含有非法的属性,比如 v:data="xxx"
- img标签不是引用的http,而是base64之类的
- 设置了特殊字体的,pdf导出虽然不失败,但是内容看不到
- img图片过大的时候,pdf导出会出现截图的现象
针对上面的几个问题,解决思路:
1,研究itext代码,重写html解析相关的类
2,使用html处理工具,对html文件进行合法性处理(比如:jsoup)
选第二种方案(第一个费时间,没有太多的精力研究)
结合jsoup,对html文件进行处理,核心代码:
对html文件进行合法性处理
/**
* 1,html标签对齐
* 2,检查所有的img标签,如果为base64编码就去掉该图片
* 3,过滤所有的html标签,仅保留styles和class两个属性,其他的属性去掉
* 4,检查字体设置,如果