一、该问题的重现步骤是什么?
1. 在报表配置绘制8行,8列数据
2. 在表格中按照图片所示填写,单元格类型为普通文本的数据
3.选中所有行列,添加所有框线
3. 保存
二、你期待的结果是什么?实际看到的又是什么?
期待的结果: 设计页面,excel下载结果,预览页面,打印页面应保持一致
实际看到:设计页面:
预览页面
打印页面
execl下载结果
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
当前使用为bladex 4.3.0.RELEASE,在Ubuntu 22.04.2 LTS系统上
四、请提供详细的错误堆栈信息,这很重要。
预览页面无报错,设计页面无报错信息
五、若有更多详细信息,请在下面提供。
如下为blade_report_file 表中的数据存储信息
INSERT INTO "public"."blade_report_file" ("id", "name", "content", "create_time", "update_time", "is_deleted") VALUES (1897852475949043713, 'test.ureport.xml', E'
你的问题应该和我一样,缓冲区问题,源码里用了
PrintWriter writer = resp.getWriter(); template.merge(context, writer); writer.close();
这个代码本身没有问题,但是没有分块传输的策略,报表的样式和数据都是一次性写入响应里的,而你的Undertow缓冲区应该是默认的1K,而你的样式文本数据量超过了1K,导致样式文本被截断,也就出现了上面那种情况。
要解决这个问题不一定要修改源码,有个简单的方法,就是修改缓冲区大小,application.yml下
server: undertow: buffer-size: 1024
找到上面的配置,把1024改大一些。
扫一扫访问 Blade技术社区 移动端