Misitush 发表于 2022-1-20 16:39:44

自动缩成一页,C1会失去响应,如何处理?

有时候一份客户的一份报告,正常超过一页,客户希望我们能够自动缩小字体,好适应一页。
C1有没现成的解决方案?

我们自动做了一个方案:生成好报告后,检查一下页数,如果超过一页,就缩字体,直到缩成一页或者到了最小字体。
理论上这个算法不错,但是实际情况,经常在这个过程中失去响应。不知有何好办法解决?大致代码如下:
report.EndReport += C1ReportRenderCompleted;
                  report.Render();
                   c1RenderCompletedWaiter.WaitOne();
if (report.GetPageCount() > 1)
                  {
   renderTimes++;
   report.Render();
    while ( 没有达到最小字体)


Misitush 发表于 2022-1-20 16:46:25

代码居然显示不全:'(。后面的伪码:
while ( 没有达到最小字体)
    {
      缩小字体;
         report.Render();
         c1RenderCompletedWaiter.WaitOne();
         if (report.GetPageCount() == 1) 返回成功;            
    }
返回失败。

Richard.Ma 发表于 2022-1-20 18:20:08

这个确实没有什么好办法,C1Report没有提供自适应缩放的办法,只能这样子判断

我觉得可能的一个优化也只能是减少循环的次数,
比如说根据数据行数以及分组的数量,其实是可以判断出总行数,进而判断大概的高度,甚至于说计算出总的高度的,以预估出一个对应的字号

另外你提到的“失去响应”这个暂时无法判断具体原因,感觉有可能和你这边用多线程有关系,可以先单线程直接写试试

Misitush 发表于 2022-1-20 18:58:08

跟踪下来,代码在waitone时就没反应了。感觉是多render几次C1就不返回了。但不是每次都死,而是几天挂一次,很是头大……

Richard.Ma 发表于 2022-1-20 23:39:58

建议发我一个demo我帮你看看具体原因

Derrick.Jiao 发表于 2022-2-15 11:00:20

你好,请问问题是否以解决了呢?若仍未解决,请像上面同事所提的,提供一个demo,我们来调研。

Richard.Ma 发表于 2022-3-15 11:06:01

你好,请问问题是否以解决了呢?若仍未解决,麻烦提供一个demo,我们来调研。
页: [1]
查看完整版本: 自动缩成一页,C1会失去响应,如何处理?