Jasper报告 - 当至少一个细节适合页面时,仅打印组标题

时间:2014-12-10 15:24:02

标签: jasper-reports report reporting

我正在制作一份包含一些非常具体要求的碧玉报告。

  1. 该报告包含一个组。
  2. 组标题必须打印在组的开头,也可以打印在新页面上。
  3.   

    这不是问题,因为我只需要告诉它"重新打印每页上的标题"。到目前为止一切都很好。

    1. 不允许在网页上拆分详细信息部分。
    2. 除非至少有一个详细信息部分适合,否则不得在页面底部打印组标题。 (可以改为:组头必须仅在至少一个细节部分适合时打印)
    3.   

      此时我注意到该组有一个名为" Min Height To Start New Page"的属性。这对细节很有用   恒定高度的部分,但是......

      1. 详细信息部分为动态高度。
      2. 我尝试过使用"保持在一起"在组中,但如果第一组很小,则会在页面上留下太多空白,但第二组很大。它被拒绝作为解决方案。

        考虑到这些要求。当页面无法容纳任何细节条目时,我所要做的就是不打印组头。

        我怀疑当它填写报告时,它可能不知道细节部分的高度,直到它填满它,然后为时已晚。我希望自己错了。

        我尝试过以两种方式重新创建此报告:

        1. 一份包含小组和详细信息的报告。
        2. 包含该组子报表的主报表,以及子报表中另一个详细信息的子报表。
        3. 这两种方式都让我得到了同样的结果。

          视觉上,如果这是我的数据:

          Province - Ontario
            City - Ottawa
            City - Toronto
          Province - Nova Scotia
             City - Halifax
             City - New Glasgow
          Province - Quebec
             City - Montreal
             City - Quebec City
          

          我可能会得到这样的结果:

          **Page 1**
          Province - Ontario
            City - Ottawa
            City - Toronto
          Province - Nova Scotia
             City - Halifax
             City - New Glasgow
          Province - Quebec **<- This hanging header is unwanted**
          
          **Page 2**
          Province - Quebec
             City - Montreal
             City - Quebec City
          

          我已经尝试了许多设置的排列,将子报告放在不同的波段,但我还没有发现可行的设置。我希望有人知道设置的组合,将子报告放在不同的频段等等。这将有效。

          知道如何实现这个目标吗?

3 个答案:

答案 0 :(得分:0)

由于您的细节乐队可能超过一页,因此无法真正防止这种情况发生。但是,您可以尝试一些选项。

  1. 转到群组属性并设置&#34;最小高度以启动新页面&#34;等于200或满足您需求的价值。

  2. 其次,您可以检查每页上的&#34;打印组标题&#34;因此,如果您的详细信息部分超过页面,则会重复标题。

  3. 希望这有帮助!

答案 1 :(得分:0)

要回答#4,防止在页面末尾没有详细信息的组头,此解决方案可能有效。你在#5中说细节部分的高度是动态的。如果你指的是细节带的高度,那么我没有一个好的解决方案。如果您指的是组的详细信息部分中的详细信息条目数,则以下解决方案应该有效。

与法提赫所说的类似,设置&#34;最小高度以开始新页面&#34;设置为组标题区域的高度像素数,加上详细信息区域的高度像素数。如果组头和单个细节带没有空间,这将强制组标题仅在下一页打印。

我希望这会有所帮助。

答案 2 :(得分:0)

我的报告中包含很多子报告,情况与此类似。每个子报表都包含一个组标题和详细信息带。

有时我的组标题出现在一页中的问题,然后剩下的空间将是空白,子报表的详细信息将出现在下一页中。我的子报表详细信息是动态调整高度。

我解决的方法如下:

主报告,我以前使用splitType =“ Stretch”,并将其更改为splitType =“ Prevent”

python3 get-pip.py

对于我的子报表,我曾经删除了minHeightToStartNewPage =“ 200”(也使用keepTogether =“ true”对我不起作用)

<detail>
    <band height="20" splitType="Prevent">
       <!-- this part contains all my subreports -->
    </band>
</detail>

对于我的子报表中的详细信息段,splitType仍为“ Stretch”