我们项目文书全部是PDF格式,生成的方法是将html文本转换成PDF,使用iText5中的XmlWorker小组件,具体步骤如下:
用着一直都非常顺利,后台自动生成,非常快速、稳定、方便,可是就在去年出现了一个严重问题,当文书页数较多时,比如有10页,只会生成钱2页,后面被截断了。
去年解决了但是没有记录,前两天又出现了,生成一部分文书,后面内容没了,又花了不少时间解决。
经过反复测试html文档,最终确定了这个问题原因,由于XmlWorker对css支持不全,为了让pdf中的表格边框一样粗细,我们给每个td加了0.1mm的边框,这样内部的表格线是0.2mm,又在整个table最外层套了一个td,这样外部表格线也是0.2mm。
问题就出在当一个td跨页显示时,比如跨了1整页以上,里面内容又有自动高度的td,而且到本页结束时没有对齐(比如一行2cm,1cm一半在上一页,1cm在下一页)时,后面的内容有时无法生成。
解决办法就是把外边嵌套的td去掉就好了,这样导致表格线粗细不一致,不过打印出来0.1mm和0.2mm区别不太大,pdf放大才可以发现,暂时能满足需要。
我在网上查到也有人碰到类似问题,刚刚好上一页有本条的一部分数据,刚刚好下一页页头又一部分本条数据,刚刚好设置了不在一页全部显示,刚刚好下一页数据高度有问题,就会这样,也有说因为setSplitRows这个方法确实会丢弃数据,不知道算不算XmlWorker的bug,希望有解决过这个问题的大师给我留言,教教我解决办法。