JasperReports: Как вызвать отчет на странице JSP

Я сделал один отчет о яшме, используяiReport 3.7.4 versionТеперь я должен использовать это или вызвать этот отчет в моем Java-приложении, где я использую сервлеты, JSP и Struts Framework, Apache Tomcat в качестве сервера.

Я хочу шаги относительно того, как вызвать отчет о яшме с некоторым примером.

Ответы на вопрос(6)

как это сделать

JasperReport jr=JasperCompileManager.compileReport("yourJRXMLFilePath");
JasperPrint jrPrint = JasperFillManager.fillReport(jr,mapWithParameters,aJRDataSource);
JasperExportManager.chooseYourFavoriteMethod(jrPrint,"destinationFile");

В противном случае проверьтеапи Первая строка может быть опущена, если вы уже скомпилировали файл с помощью iReport. Проверьте API для правильного метода на JasperFillManager в этом случае.

ответ сейчас (v5 и v6) содержитосуждается код в пункте 5JRExporterParameter.OUTPUT_STREAM, но я постараюсь улучшить другие моменты, пока я в этом

Загрузить отчет

скомпилированный версия.jasper

JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);

илине скомпилировано версия.jrxml (медленнее, так как нужно компилировать, но выполнимо)

JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml");

Заполните отчет

сничего такого (источник данных, сгенерированный внутри отчета или просто статический текст)

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params);

систочник данных:

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);

с базой данныхсоединение (может быть наиболее распространенным, sql выполняется внутри отчета)

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);

Экспорт отчета

JRPdfExporter exporter = new JRPdfExporter()
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setMetadataAuthor("Petter"); //Set your pdf configurations, 
exporter.setConfiguration(configuration);
exporter.exportReport();

Если вам нравитсяпоток отчета прямо на веб-страницу, это какcontentType а такжеContent-disposition и как вы получаетеoutputStream

response.setContentType("application/x-pdf");
response.setHeader("Content-disposition", "inline; filename=myReport.pdf");
OutputStream outputStream = response.getOutputStream();

рованный отчет.

Вы можете увидеть пример ниже

import java.io.IOException;
import java.util.HashMap;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;

public class PdfFromJasperFile {
  public static void main(String[] args) throws JRException, IOException {

    JasperPrint jasperPrint = JasperFillManager.fillReport("report.jasper",  new HashMap<String, Object>(), 
    new JREmptyDataSource());
    JasperExportManager.exportReportToPdfFile(jasperPrint, "sample.pdf");

  }
}
Скомпилируйте отчет в iReportПоместите скомпилированный отчет в путь к классам

загрузить его

JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);

Заполните его данными.dataSource этоDataSource Например, у вас есть - например,BeanCollectionDataSource

JasperPrint jasperPrint = 
     JasperFillManager.fillReport(jasperReport, params, dataSource);

Экспортируйте это

JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
exporter.exportReport();

outputStream выше может быть либоresponse.getOutputStream() илиFileOutputStream()в зависимости от того, хотите ли вы отправить его клиенту или сохранить как файл. Если вы хотите отправить его клиенту, вам нужно будет отправитьContent-Disposition заголовок и некоторые другие, но это зависит от формата, который вы хотите сохранить. В случае, если вы хотитеРаспечатать на клиенте это совсем другой вопрос - вам понадобится код на стороне клиента, например, апплет.

 Petter Friberg29 февр. 2016 г., 12:28
Через 6 лет после публикацииJRExporterParameter.OUTPUT_STREAM устарела, я разместилответ чтобы показать, как этот ответ достигается в текущей версии.

Это другой способ сделать то же самое.

    JasperReport jasperReport;
    JasperPrint jasperPrint;
    Map<String, Object> param = new HashMap<String, Object>();
    try{
        String sourceFileName = ".jrxml";
        jasperReport = JasperCompileManager.compileReport(sourceFileName);
        jasperPrint = JasperFillManager.fillReport(jasperReport,param,new JRBeanCollectionDataSource(getDetails()));
        JasperExportManager.exportReportToPdfFile(jasperPrint, ".pdf");
    }
    catch(Exception e){
    }

JRPdfExporter exporter= new JRPdfExporter();

добавлять

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

Ваш ответ на вопрос