2010-09-19 37 views
9

Hice un informe de jaspe usando iReport 3.7.4 version, ahora tengo que usar eso o llamar a ese informe en mi aplicación java donde estoy usando servlets, jsp y struts framework, apache tomcat como servidor .JasperReports: Cómo llamar al informe en la página jsp

Quiero pasos con respecto a cómo llamar al informe de jaspe con algunos ejemplos.

Respuesta

1

Este trozo de código que debe dar una idea de cómo hacerlo

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

De lo contrario, compruebe el api La primera línea se omite, si ya había compilado el archivo con iReport. Consulte la API para conocer el método correcto en JasperFillManager en este caso.

8
  1. Compilar el informe en iReport
  2. Coloque el informe elaborado en la ruta de clase
  3. carga con

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream); 
    
  4. Rellenar con los datos. dataSource es el DataSource instancia que tiene - por ejemplo, una exportación BeanCollectionDataSource

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

    JRPdfExporter exporter = new JRPdfExporter(); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); 
    exporter.exportReport(); 
    
  6. El outputStream anterior puede ser o bien un response.getOutputStream() o una FileOutputStream(), dependiendo de si se desea enviar el mensaje a un cliente o si desea almacenarlo como un archivo. Si desea enviarlo al cliente, debe enviar el encabezado Content-Disposition, y algunos más, pero eso depende del formato en el que desea guardar. En caso de que desee imprimir en el cliente, es una pregunta bastante diferente: necesitaría algún código del lado del cliente, un applet, por ejemplo.

+0

Después de 6 años desde que se publicó [JRExport erParameter.OUTPUT_STREAM] (http://javadox.com/net.sf.jasperreports/jasperreports/5.1.0/net/sf/jasperreports/engine/JRExporterParameter.html#OUTPUT_STREAM) ha quedado obsoleto, he publicado una [respuesta] (http://stackoverflow.com/a/35698286/5292302) muestra cómo se logra esta respuesta en la versión actual. –

1

en la primera respuesta, el punto 5: Después

JRPdfExporter exporter= new JRPdfExporter();

añadir

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

0

Ésta es una forma diferente de hacer lo mismo.

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

La mejor solución (para un mejor rendimiento también), llamará a un informe compilado.

se puede ver el siguiente ejemplo

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

Después de 6 años @Bozho answer ahora (V5 y V6) contiene obsoleto código en el punto 5 JRExporterParameter.OUTPUT_STREAM, pero voy a tratar de mejorar los otros puntos mientras estoy en ello

  1. Cargar el informe

    compilado versión .jasper

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

    o la no compilado versión .jrxml (más lento desde necesidad de compilar, pero factible)

    JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml"); 
    
  2. Llenar el informe

    con nada (fuente de datos generados en el interior informe o sólo texto estático)

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

    con fuente de datos:

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

    con la base de datos conexión (que la más común, SQL ejecutadas dentro informe)

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection); 
    
  3. exportación de informes

    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. Si te gusta a corriente del informe directamente a la página web así es como se establece contentType y Content-disposition y cómo recuperar la outputStream

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