Java 多个Jasper repports页码处理程序,带密钥
嗨,各位飞越者 我有两份jasper报告。两者都以零页码开始。我希望我的第二份报告从第一份jasper报告的总页数+1开始。我已经在这个问题上看到了很好的解决方案,但这不是我想要的。例如,我想用一个id处理类似jasper report的html标记,然后感谢这个id,获取我的文本字段并更改java代码中的页码值 例如,我的文本字段类似于:Java 多个Jasper repports页码处理程序,带密钥,java,jasper-reports,Java,Jasper Reports,嗨,各位飞越者 我有两份jasper报告。两者都以零页码开始。我希望我的第二份报告从第一份jasper报告的总页数+1开始。我已经在这个问题上看到了很好的解决方案,但这不是我想要的。例如,我想用一个id处理类似jasper report的html标记,然后感谢这个id,获取我的文本字段并更改java代码中的页码值 例如,我的文本字段类似于: <textField> <reportElement x="520" y="1" width="40" height="48"
<textField>
<reportElement x="520" y="1" width="40" height="48" uuid="5df12c06-9c58-4b26-99c1-02b1d8e86456"/>
<box>
<topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
我也有同样的问题,我就是这样解决的。在您的文本文件中,您需要一个密钥。它将是您的id。你应该有这样的东西:
<textField>
<reportElement key="textFieldCurrentPage" x="520" y="1" width="40" height="48" uuid="5df12c06-9c58-4b26-99c1-02b1d8e86456"/>
<box>
<topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
在java代码中,可以有如下内容:
// create your second jasper print
JasperPrint jasperPrint = JasperFillManager.fillReport(..., ..., ...);
List<JRPrintPage> listPages = jasperPrint.getPages();
int numberOfPages = listPages.size();
int currentPageIndex = 1;
for (JRPrintPage currentPage : listPages) {
List listElements = currentPage.getElements();
for (Object element : listElements) {
if (element instanceof JRTemplatePrintText) {
JRTemplatePrintText templatePrintText = (JRTemplatePrintText) element;
// set currrent page
if (templatePrintText.getKey() != null
&& templatePrintText.getKey().equalsIgnoreCase("textFieldCurrentPage")) {
templatePrintText.setText(String.valueOf(lastPageNumber + currentPageIndex));
}
}
}
currentPageIndex++;
}
//创建第二张jasper打印
JasperPrint JasperPrint=JasperFillManager.fillReport(…,…,…);
List listPages=jasperPrint.getPages();
int numberOfPages=listPages.size();
int currentPageIndex=1;
用于(JRPrintPage当前页面:listPages){
List listElements=currentPage.getElements();
for(对象元素:列表元素){
if(JRTemplatePrintText的元素实例){
JRTemplatePrintText templatePrintText=(JRTemplatePrintText)元素;
//设置当前页面
如果(templatePrintText.getKey()!=null
&&templatePrintText.getKey().equalsIgnoreCase(“textFieldCurrentPage”)){
templatePrintText.setText(String.valueOf(lastPageNumber+currentPageIndex));
}
}
}
currentPageIndex++;
}
我希望这能帮助你