Eclipse Java生成时,Jaspersoft Studio无法显示超过100页的页码

时间:2018-07-06 04:16:01

标签: java jasper-reports

问题是,当我使用Eclipse IDE完成生成pdf报告时,pdf报告将仅显示当前页码,但由于总页数超过100页而无法显示总页数(将显示少于100页)。在jaspersoft studio上预览显示。我使用表达式来显示总页面为$ V {PAGE_NUMBER},并将评估时间设置为“报告”。我使用表达式来显示当前页码为$ V {PAGE_NUMBER} +“ OF”,并将评估时间设置为“ Now”。我使用TIBCOJaspersoft®Studio 6.6.0。有谁能够帮助我。谢谢

//generate pdf report code
File reportFile = new File(jrxml_path + criteria.getReportCode() + ".jrxml");
FileInputStream inputStream = new FileInputStream(reportFile); 
JasperPrint jasperPrint = JasperFillManager.fillReport(JasperCompileManager.compileReport(inputStream), params, connection);

 //in pom.xml file
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.6.0</version>
    </dependency>

1 个答案:

答案 0 :(得分:0)

我找到了问题的原因,因为我在Java代码中使用了JRSwapFileVirtualizer。虚拟机会将碧玉打印成不同的文件,以避免内存不足异常,并将它们保存在硬盘驱动器上和/或压缩它,因此总页数无法计算,因为我将maxSize参数设置为100页。

Integer virtualPage         = 100; 
Integer virtualBlockSize    = 2048;     
File virtualizePath = new File(report_path + "virtual");

JRSwapFile swapFile = new JRSwapFile(virtualizePath.getAbsolutePath(), virtualBlockSize, 100);
virtualizer = new JRSwapFileVirtualizer(virtualPage, swapFile);
virtualizer.setReadOnly(true);
JRVirtualizationHelper.setThreadVirtualizer(virtualizer);
params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);

如果您想在JasperReports中阅读更多关于虚拟化器的信息,可以转到以下链接:virtualizers-jasperreports