Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一页PDF中打印多份jasper报告_Java_Multithreading_Pdf_Jasper Reports_Report - Fatal编程技术网

Java 如何在一页PDF中打印多份jasper报告

Java 如何在一页PDF中打印多份jasper报告,java,multithreading,pdf,jasper-reports,report,Java,Multithreading,Pdf,Jasper Reports,Report,我可以使用下面的代码在单个PDF文件中打印多个报告,但它会为每个报告添加一个新页面 JasperReport jreport1 = JasperCompileManager.compileReport("D:\\FTP\\JRXML\\PatientConsultantReport\\"+checkedReport+".jrxml"); JasperPrint jprint1 = JasperFillManager.fillReport(jreport1, new HashMap(), new

我可以使用下面的代码在单个PDF文件中打印多个报告,但它会为每个报告添加一个新页面

JasperReport jreport1 = JasperCompileManager.compileReport("D:\\FTP\\JRXML\\PatientConsultantReport\\"+checkedReport+".jrxml");
JasperPrint jprint1 = JasperFillManager.fillReport(jreport1, new HashMap(), new JRResultSetDataSource(rs));
jprintlist.add(jprint1);
          .
         So ON
          .
          .
jprintlist.add(jprint5);

    JRExporter exporter = new JRPdfExporter();
                exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jprintlist);
                OutputStream output = new FileOutputStream(new File("D:\\FTP\\PDF\\VisitsSummaryReport.pdf"));
                exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output);
                exporter.exportReport();

所以问题是:我如何在一页PDF上打印所有数据,而不是在每个报表上都有一页新的数据?

为每个表生成一个PDF文件,并使用

更新:

这个stackoverflow post可能有用

这个怎么样

 JRExporter exporter = new JRPdfExporter();

 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, new FileOutputStream("c:/mipdf.pdf"));
 //The following is the important line
 exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, Arrays.asList(jasperPrint, jasperPrint));
 exporter.exportReport(); 
工作很有魅力

List jasperPrintList=newarraylist();
List<JasperPrint> jasperPrintList = new ArrayList<JasperPrint>();

// Create multiple jasper prints and add to a list
HashMap<String, Object> params = new HashMap<String, Object>();
InputStream inputStream1 = this.getClass().getResourceAsStream("template1.jrxml");
JasperDesign jd1 = JRXmlLoader.load(inputStream1);
JasperReport jr1 = JasperCompileManager.compileReport(jd1);
JasperPrint jp1 = JasperFillManager.fillReport(jr1, params);
jasperPrintList.add(jp1);

InputStream inputStream2 = this.getClass().getResourceAsStream("template2.jrxml");
JasperDesign jd2 = JRXmlLoader.load(inputStream2);
JasperReport jr2 = JasperCompileManager.compileReport(jd2);
JasperPrint jp2 = JasperFillManager.fillReport(jr2, params);
jasperPrintList.add(jp2);

// Generating report using List<JasperPrint>
JRPdfExporter exporter = new JRPdfExporter();
exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrintList));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(new ByteArrayOutputStream()));
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setCreatingBatchModeBookmarks(true);
exporter.setConfiguration(configuration);
exporter.exportReport();
//创建多个jasper打印并添加到列表中 HashMap params=新的HashMap(); InputStream inputStream1=this.getClass().getResourceAsStream(“template1.jrxml”); JasperDesign jd1=JRXmlLoader.load(inputStream1); JasperReport jr1=jaspecompilemanager.compileReport(jd1); JasperPrint jp1=JasperFillManager.fillReport(jr1,params); jasperPrintList.add(jp1); InputStream inputStream2=this.getClass().getResourceAsStream(“template2.jrxml”); JasperDesign jd2=JRXmlLoader.load(inputStream2); JasperReport jr2=jaspecompilemanager.compileReport(jd2); JasperPrint jp2=JasperFillManager.fillReport(jr2,params); jasperPrintList.add(jp2); //使用列表生成报告 JRPdfExporter exporter=新的JRPdfExporter(); setExporterInput(SimpleExporterInput.getInstance(jasperPrintList)); exporter.setExporterOutput(新的SimpleOutputStreamExportRoutPut(新的ByteArrayOutputStream()); SimplePDExporterConfiguration配置=新的SimplePDExporterConfiguration(); configuration.setCreatingBatchModeBookmarks(true); exporter.setConfiguration(配置); 出口商。出口报告();
您可以使用这个。首先合并您的报告并导出为pdf

        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
        JasperPrint jasperPrint1 = JasperFillManager.fillReport(jasperReport1, 
        parameters, dataSource1);
        List<JRPrintPage> pages = jasperPrint1.getPages();
        for (int j = 0; j < pages.size(); j++) {
            JRPrintPage object = (JRPrintPage)pages.get(j);
            jasperPrint.addPage(object);
        }
        JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream)
JasperPrint-JasperPrint=JasperFillManager.fillReport(jaspereport,参数,数据源);
JasperPrint jasperPrint1=JasperFillManager.fillReport(jasperReport1,
参数,数据源1);
List pages=jasperPrint1.getPages();
对于(int j=0;j

这是一个很好的解决方案。

你可以在这个示例中这样做:
@Alex K
谢谢你的回复。请浏览我的编辑。谢谢你的回复,但它应该像在单个pdf甚至单个页面中的多个报告一样工作。