当由Eclipse java生成时,Jaspersoft Studio无法显示超过100页的页码
问题是,当我使用EclipseIDEFinished生成pdf报告时,pdf报告将只显示当前页码,但不显示总页码,因为它超过100页(将显示少于100页)。它仅在jaspersoft studio中预览时显示。我使用表达式来显示总页面是$V{page_NUMBER},并将计算时间设置为“Report”。我使用表达式来显示当前页码是$V{page_number}+“OF”,并将计算时间设置为“Now”。我使用TIBCO Jaspersoft®Studio 6.6.0。有人能帮我吗。多谢各位当由Eclipse java生成时,Jaspersoft Studio无法显示超过100页的页码,java,jasper-reports,Java,Jasper Reports,问题是,当我使用EclipseIDEFinished生成pdf报告时,pdf报告将只显示当前页码,但不显示总页码,因为它超过100页(将显示少于100页)。它仅在jaspersoft studio中预览时显示。我使用表达式来显示总页面是$V{page_NUMBER},并将计算时间设置为“Report”。我使用表达式来显示当前页码是$V{page_number}+“OF”,并将计算时间设置为“Now”。我使用TIBCO Jaspersoft®Studio 6.6.0。有人能帮我吗。多谢各位 //g
//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>
//生成pdf报告代码
File reportFile=新文件(jrxml_path+criteria.getReportCode()+“.jrxml”);
FileInputStream inputStream=新的FileInputStream(reportFile);
JasperPrint JasperPrint=JasperFillManager.fillReport(JasperCompileManager.compileReport(inputStream),参数,连接);
//在pom.xml文件中
net.sf.jasperreports
jasperreports
6.6.0
我找到了问题的原因,因为我在java代码中使用了JRSwapFileVirtualizer。虚拟机会将jasper print剪切成不同的文件,以避免内存不足异常,并将其保存在硬盘上和/或压缩,因此无法计算总页面,因为我将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中阅读更多关于virtulizers的信息,可以访问以下链接: