【问题标题】:How to set JRXML properties dynamically using Dynamic Jasper如何使用 Dynamic Jasper 动态设置 JRXML 属性
【发布时间】:2017-11-01 15:03:42
【问题描述】:

我有一个现有的动态 jasper 报告,我需要对其进行修改,以便可以动态设置页面方向和大小。我已经能够使用dynamicReportBuilder.setPageSizeAndOrientation(...) 实现这一目标。问题是当我更改页面大小时,标题不再位于页面中间...

我将标题定义为:

<title>
    <band height="20" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="760" height="20"/>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="ConjectSans" size="14" isBold="false"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{title}]]>    
            </textFieldExpression>
        </textField>
    </band>
</title>

有什么办法可以改变上面的内容,使标题文本浮动到页面中间,而不管我设置的页面大小是多少?

根据我的谷歌搜索,我无法在jrxml 中动态设置宽度属性,而是需要执行以下操作:

JRElement element = jasperReport.getTitle().getElementByKey("graphWidthKey");
element.setWidth(100);

但是如何从动态 Jasper 的 DynamicReportBuilder 访问 JasperReport 对象?

【问题讨论】:

    标签: java jasper-reports dynamic-jasper


    【解决方案1】:

    你不能那样做。 JasperReport 对象是只读对象。它是编译 JasperDesign 对象的结果。

    能够以编程方式设置页面大小使其动态化!如果需要再次更改,请重新生成报告。

    【讨论】: