java生成PDF表格的一次优化

本文针对PDF发票打印过程中遇到的效率问题进行了详细分析。当发票明细超过1000行时,打印耗时显著增加。通过排查发现itext在处理大量行合并时效率低下。提出了一种将合同明细作为整体处理的优化方案,并调整了样式设置,有效提高了打印速度。

在优化一个pdf的发票打印的时候如果发票的发票明细超过1000行的时候就会变得很慢.需要20分钟才能把数据加载出来.之后就开始查询耗时的原因,在打印了每个方法的执行时间之后,发现在打印方法执行的时候sql取数据的时候很快,那么就是itext的转换PDF的时候导致很慢.

最后找到原因是因为发票明细行中的行合并导致效率低下,比如一个合同下有1000条明细数据,那么合同名称这一列就需要合同1000行,这个合并会导致打印效率低下(cell.setColspan(colspan);)方法;

优化思路:因为每个发票只有一个合同我们可以把整个明细行看成一个整体.(思路如下图)


这样在调一下样式就可以了

相关的方法:

        float[] widths = {110, 110, 330};
        PdfPTable contractTable = new PdfPTable(widths);//这个表格三列的长度
        contractTable.setTotalWidth(width);//这个属性要加上

        contractTable.setLockedWidth(true);//这个属性要加上

        cellDetail.setPadding(0f);

        cellDetail.setBorderWidth(0f);//去除表格的边框

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值