2010-09-19 13 views
9

Zrobiłem jeden raport jaspisowy używając iReport 3.7.4 version, teraz muszę użyć tego lub zadzwonić do tego raportu w mojej aplikacji java, gdzie używam serwletów, framework jsp i struts, apache tomcat jako serwer .JasperReports: Jak wywołać raport na stronie jsp

Chcę, aby kroki dotyczące sposobu połączenia raportu jaspis z przykładem.

Odpowiedz

1

Ten kawałek kodu powinien dać pewne wyobrażenie o tym, jak to zrobić

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

W przeciwnym razie, należy sprawdzić api Pierwszy wiersz może być, pominięte jeśli już skompilowany plik z iReport. Sprawdź api pod kątem poprawnej metody w JasperFillManager w tym przypadku.

8
  1. Kompilacja raportu w iReport
  2. Umieść skompilowany raportu na ścieżce klasy
  3. załadować go z

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream); 
    
  4. wypełnić ją danymi. dataSource jest instancja DataSource masz - na przykład BeanCollectionDataSource

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

    JRPdfExporter exporter = new JRPdfExporter(); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); 
    exporter.exportReport(); 
    
  6. outputStream powyżej może być albo response.getOutputStream() lub FileOutputStream(), w zależności od tego, czy chcesz wysłać do klienta lub chcesz zapisać go jako plik. Jeśli chcesz wysłać to do klienta, musisz wysłać nagłówek Content-Disposition i kilka innych, ale zależy to od formatu, w którym chcesz zapisać. W przypadku, gdy chcesz wydrukować na kliencie, to jest zupełnie inne pytanie - potrzebujesz na przykład kodu po stronie klienta, apletu.

+0

Po 6 latach od opublikowania tego komunikatu [JRExport erParameter.OUTPUT_STREAM] (http://javadox.com/net.sf.jasperreports/jasperreports/5.1.0/net/sf/jasperreports/engine/JRExporterParameter.html#OUTPUT_STREAM) został uznany za przestarzały, wysłałem [odpowiedź] (http://stackoverflow.com/a/35698286/5292302), aby pokazać, jak można uzyskać tę odpowiedź w aktualnej wersji. –

1

w pierwszej odpowiedzi, punkt 5: Po

JRPdfExporter exporter= new JRPdfExporter();

dodać

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

0

To jest inny sposób robi to samo.

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){ 
    } 
1

Najlepsze rozwiązanie (dla lepszej wydajności), będzie wywoływać skompilowany raport.

można zobaczyć przykład poniżej

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

    } 
} 
4

Po 6 latach @Bozho answer teraz (V5 i V6) zawiera przestarzałej kod w pkt 5 JRExporterParameter.OUTPUT_STREAM, ale postaram się poprawić pozostałe punkty, gdy jestem na nim

  1. Załaduj raport

    skompilowany wersja .jasper

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

    lub non skompilowany wersja .jrxml (wolniej od potrzeby kompilacji, ale wykonalne)

    JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml"); 
    
  2. Wypełnić raport

    z nic (źródła danych generowane wewnątrz raportu lub tekst tylko statyczne)

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

    z źródłem danych:

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

    z bazy związku (może najczęściej, SQL wykonywane wewnątrz raportu)

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection); 
    
  3. Export zgłosić

    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(); 
    
  4. Jeśli chcesz strumienia, sprawozdanie bezpośrednio do strony internetowej, to jak contentType i Content-disposition jest ustawiony i jak odzyskać outputStream

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