java判断标签闭合_html转PDF(java)非常奇怪的错误,标签没闭合

最近工作中要使用到HTML转 PDF。使用的技术是比较流行的 IText  + flying-saucer 。思路就是将模板文件导入数据,然后将这个模板文件转换为PDF,然后碰到一个非常无语的问题。

The element type "ul" must be terminated by the matching end-tag "

真的,字面上看不就是一个标签没闭合吗。没那么简单。

报错信息:

28a13217bf9a8d4bbd01ad2380dc67b9.png

要说到这个错误,有必要说一点 IText自身的一个很严重的问题就是解析CSS有很大的问题。

而且要注意:

输入的HTML页面必须是标准的XHTML页面。页面的顶上必须是这样的格式:

否则会报一些奇怪的错误。

并且HTML页面的语法必须是非常严谨的,所有标签都必须闭合等等(由于flying-Saucer做了XML解析的工作,不严谨会报错的。),这是对页面的第一个要求 。

也就是说一些在HTML中非常宽松的语法,比如 br  没加 /  ,也会报错,必须写成

所有的标签必须闭合,因为它使用的是xml解析。

上面说的这么多,其实并不是我报的这个错误的解决方案,也许真的标签没闭合,也是报这个错误,但如果你找完所有标签,检查发现都闭合了的时候,这时候可能就要考虑是不是这个工具的问题。

我一行一行的检查,最终确定出问题的地方。

74ebe8331a4121b59221192321d817d0.png

与报错信息完全没有任何关联吧,解析完table后解析这里就报错了,什么原因?

大概是table里面的元素遍历后由于li标签没检测到它的父标签而报错。这里

如果使用的父标签是
  1. 就会ol没闭合报错,UL就会报UL没闭合。(这个应该是特例)

在其他位置也会出现子标签中有子标签没闭合可能也是报父标签的闭合错误,

我替换如下:

8e94a08a4a714def8562c10ba918a94d.png

问题解决

最终效果:

a82bba48a3c82f87f02a7e8724277308.png

如上所有的,都应该是你的后台代码没有问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值