gpt4 book ai didi

java - 如何在报表中插入两页

转载 作者:行者123 更新时间:2023-12-03 19:02:19 26 4
gpt4 key购买 nike

我面临一个问题,我有两个 jrmxl 文件。我想加入一个 pdf 文件,但每个文件都在一页中。

我在下面看到了一些提示,但我不知道它们是否是最好的,因为我的第一个文件有 3 个波段:titledetailsummary 。第二个有 detailsummary

所以我想尽可能保留这种格式,因为在摘要中有页面计数器。

我已经试过了,但是我的第二页是空白的,并且有 5 厘米的高度。

列表页面 = new ArrayList<>();

for (String caminhoRelatorio : caminhoRelatorios) {
reportPath = JasperCompileManager.compileReport(caminhoRelatorio);
reportPage = JasperFillManager.fillReport(reportPath, parameters, ds);
pages.add(reportPage);
}

ByteArrayOutputStream baos = new ByteArrayOutputStream();
JRPdfExporter jrPdfExporter = new JRPdfExporter();
jrPdfExporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, pages);
jrPdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
jrPdfExporter.setParameter(JRPdfExporterParameter.IS_CREATING_BATCH_MODE_BOOKMARKS, Boolean.TRUE);
jrPdfExporter.exportReport();

那我需要做什么?

最佳答案

要在一个报告/PDF 中添加多个 JRXML,您可以按照下面提到的方式:

考虑使用下面的方法生成一个 PDF 报告,其中包含已添加到“jrxmlFileNames”列表中的 2 个 JRXML

public static void reportGenerator(String reportType, List<String> jrxmlFileNames, 
Datasource dataSource , String SwapFile)
{

JRConcurrentSwapFile swapFile = new JRConcurrentSwapFile(SwapFile, 102400 , 10);
JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(1000, swapFile, true);
Map<String, JRAbstractLRUVirtualizer> parameters = new HashMap<String, JRAbstractLRUVirtualizer>();
parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
try
{
if (reportType.equalsIgnoreCase("PDF"))
{

try
{
JasperReport jreport1 = JasperCompileManager.compileReport(ReportGenerator.class.getResourceAsStream(jrxmlFileNames.get(0)));
JasperPrint jprint1 = JasperFillManager.fillReport(jreport1, parameters, new JRBeanCollectionDataSource(dataSource.getDataSourceFor1()));

JasperReport jreport2 = JasperCompileManager.compileReport(ReportGenerator.class.getResourceAsStream(jrxmlFileNames.get(1)));
JasperPrint jprint2 = JasperFillManager.fillReport(jreport2, parameters, new JRBeanCollectionDataSource(dataSource.getDataSourceFor2()));


List<JasperPrint> jprintlist = new ArrayList<JasperPrint>();

jprintlist.add(jprint1);
jprintlist.add(jprint2);


String fileName="TESTReport.pdf";
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jprintlist);

exporter.setParameter(JRPdfExporterParameter.OUTPUT_FILE_NAME, fileName);

exporter.exportReport();

}
catch(Exception e)
{
e.printStackTrace();
}
}

swapFile.dispose();

}
catch(Exception e)
{
e.printStackTrace();
}

}

在上面的代码中,以下部分将帮助您添加多个 JRXML

    List<JasperPrint> jprintlist = new ArrayList<JasperPrint>();    
jprintlist.add(jprint1);
jprintlist.add(jprint2);
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jprintlist);

希望对您有所帮助!

关于java - 如何在报表中插入两页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23164089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com