当前位置: 首页 > 面试题库 >

如何在报表中插入两页

全飞扬
2023-03-14
问题内容

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

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

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

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

列表页=新的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();

那我该怎么办?


问题答案:

要将多个JRXML添加到一个报表/ PDF中,可以按照以下提到的方式进行:

考虑下面的方法来生成带有2个JRXML的PDF报告,这些报告已添加到“ jrxmlFileNames”列表中

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);

希望能帮助到你!



 类似资料:
  • 我想用jaspersoft Studio创建一个非常简单的jasper报告。我想使用groovy函数来返回一个将包含在我的报告中的字符串。 问题是我真的不知道如何将groovy文件与jrxml文件链接起来。 有什么想法吗? 这是代码,你会注意到我试图调用函数: Blank_A4.jrxml文件: Blank_A4.groovy文件: 这两个文件位于我的项目的同一文件夹中。

  • 我试图在表中插入值,它说的是错误,请告诉我哪里错了,这是我的代码,它说的是请重试 你能指导我吗?我以为问题出在约会上

  • PPT/Excel 中插入动态交互图表,需要使用Office应用商城插件。 1) 使用Office2013或以上版本创建一个PPT文档(Excel也可以) 2) 点击“插入”选项卡,再点击“应用商店”按钮打开商店窗口。 3) 在商店窗口中搜索“图表秀”,找到名为“图表秀-PPT动态展示”的外接程序,点击添加即可。 4) 以后再要使用此插件时只需点击“我的加载项”,即可找到并直接使用此插件了。 5)

  • 本文向大家介绍如何调试报表插件,包括了如何调试报表插件的使用技巧和注意事项,需要的朋友参考一下 在项目开发过程中插件调试非常的麻烦,需要修改里面的代码,编译出class,需要重新打包插件。然后把之前的删除,重新安装最新的。调试过程比较繁琐,而且不能调试,十分的不方便。下面给大家介绍如何调试插件。 需要工具:eclipse,finereport报表工具 具体说明 1、 新建工程 新建java工程,在

  • 问题内容: 做一个学校的项目,所以任何帮助将是巨大的谢谢! 我有两个表-如何插入两个表中?因此,两个表都是链接的。 用自动递增的主键调用第一个表 第二个称为的表具有链接到父表的外键 问题答案: 您需要执行以下操作: SCOPE_IDENTITY : 返回插入到同一作用域的标识列中的最后一个标识值。范围是一个模块:存储过程,触发器,函数或批处理。因此,如果两个语句位于相同的存储过程,函数或批处理中,

  • 问题内容: 条件:请勿修改原始清单;仅JDK,无外部库。一线或JDK 1.3版本的加分点。 有没有比以下更简单的方法: 问题答案: 你可以使用Apache commons-collections库: