报表管理中设计报表后,设计页面和excel下载结果相同,但与预览页面,打印页面不同

Blade 未结 2 224
白菜
白菜 2025-03-07 11:41

一、该问题的重现步骤是什么?

1. 在报表配置绘制8行,8列数据

2. 在表格中按照图片所示填写,单元格类型为普通文本的数据 

3.选中所有行列,添加所有框线

3. 保存 

image.png

二、你期待的结果是什么?实际看到的又是什么?

期待的结果: 设计页面,excel下载结果,预览页面,打印页面应保持一致

实际看到:设计页面:image.png

预览页面

image.png

打印页面

image.png

execl下载结果

image.png

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

当前使用为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''::bytea, '2025-03-07 11:31:05.317', '2025-03-07 11:31:28.307', 0);



2条回答
  •  2811364957@qq.c
    2025-03-26 16:54

    你的问题应该和我一样,缓冲区问题,源码里用了

    PrintWriter writer = resp.getWriter();
    template.merge(context, writer);
    writer.close();

    这个代码本身没有问题,但是没有分块传输的策略,报表的样式和数据都是一次性写入响应里的,而你的Undertow缓冲区应该是默认的1K,而你的样式文本数据量超过了1K,导致样式文本被截断,也就出现了上面那种情况。
    要解决这个问题不一定要修改源码,有个简单的方法,就是修改缓冲区大小,application.yml下

    server: 
      undertow:
        buffer-size: 1024

    找到上面的配置,把1024改大一些。

代码语言
提交回复