如何防止JasperReports中的详细信息区域之间的页面拆分

问题描述 投票:0回答:3

我有一份包含两个细节区域的报告。第一个带显示图像,第二个带显示其文件名。然而,有时,图像会以这样的方式适合页面,以致下面的文本行没有空间。文件名将转到下一页,这看起来很愚蠢:

  some other contents

     +-------------------+
     |                   |
     |                   |       Page 1
     |                   |
     |                   |
     +-------------------+

  ----------------------------------------------

     foto.jpg                    Page 2

JR有没有办法防止这种分裂? IE。我希望页面分割发生在记录之间,而不是同一记录的不同细节带之间。在上面的用例中,图像及其文件名都应该转到下一页:

  some other contents            Page 1

  ----------------------------------------------

     +-------------------+
     |                   |
     |                   |
     |                   |       Page 2
     |                   |
     +-------------------+
     foto.jpg

在第二个细节带上将分割类型设置为“阻止”似乎没有帮助...

jasper-reports
3个回答
7
投票

您可以在报告中添加“虚拟”组。

添加一个带有常量表达式的组(如

true
)。

取消勾选选项

Add the group header
Add the group footer
。你可能不需要那些。

现在有两种方法可以防止分裂:

  1. 在组选项下,勾选名为
    Keep Together
    的属性。它在早期版本的 Jasper Reports 中并不总是能正常工作。也许现在好多了。
  2. 在组选项下,有一个名为
    Min Height To Start New Page
    的属性。将其值设置为两个细节带的高度之和。然后,每当打印该组时,Jasper Reports 都会检查页面中的剩余空间是否大于或等于该属性。如果没有,它将在新页面上打印该组。

3
投票

更新: 使用新的 细节带 并设置 splitType=Prevent 对对象进行分组要容易得多。忘记下面的答案了。

__

brunobastosg
答案翻译为 XML,您只需将其添加到报告中即可:

<group name="DummyGroup" keepTogether="true">
    <groupExpression><![CDATA[true]]></groupExpression>
</group>

请注意,元素

group
必须按特定顺序排列,如下所示:

<jasperReport ... >
    ....
    <field ... />
    <group name="DummyGroup" keepTogether="true">
        <groupExpression><![CDATA[true]]></groupExpression>
    </group>
    <detail>
        ...
</jasperReport>
  • 问:如何指定哪些项目属于组?
  • 答:你不能。此报告(或子报告)中的所有项目都将属于同一组。因此,也许您需要将子报告拆分为多个(我的情况,顺便说一句)

0
投票

您可以将它们放在一个细节带中,这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.