Wednesday, July 23, 2014

Jasper Applet in Grails

I want to view the report from web browser, something like :

First, download jasper report source project in this article I use jasper 5.6.0 and download from this link : http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.6.0/jasperreports-5.6.0-project.zip/download After download extract the file and go to sample directory (jasperreports-5.6.0\demo\samples) from command prompt / shell terminal and compile using ant (ant.apache.org). To compile the sample just run : ant

Copy files from folder jasperreports-5.6.0\demo\samples\webapp\applets :
  • commons-collections-3.2.1.jar
  • commons-logging-1.1.1.jar
  • jasperreports-applet-5.6.0.jar
  • JRViewerSimple.class
  • EmbeddedViewerApplet.class
Copy to web-app\applets folder (in our grails project)

Create a controller that send an octet-stream, my controller : 

import javax.servlet.ServletOutputStream
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;

class LaporanController {

 def dataSource
    

 def embedbarang() {

  String namaFile, reportName, dotJasper
  namaFile = "barang"

      reportName = grailsApplication.getMainContext().getResource('reports/' + namaFile + '.jrxml').file.getAbsoluteFile()
      dotJasper = grailsApplication.getMainContext().getResource('reports/' + namaFile + '.jasper').file.getAbsoluteFile()

  // compiles jrxml
  JasperCompileManager.compileReportToFile(reportName);
  // fills compiled report with parameters and a connection
  // JasperPrint print = JasperFillManager.fillReport(reportName + ".jasper", parameters, connection);
  JasperPrint print = JasperFillManager.fillReport(dotJasper, null, dataSource.getConnection());


  response.setContentType("application/octet-stream");
  ServletOutputStream outputStream = response.getOutputStream();
  
  ObjectOutputStream oos = new ObjectOutputStream(outputStream);
  oos.writeObject(print);
  oos.flush();
  oos.close();

  outputStream.flush();
  outputStream.close();

 }

}
Load the applet from .gsp file :

For copy-paste purpose :
<APPLET  CODE = "EmbeddedViewerApplet.class" codebase="${request.contextPath}/applets"  ARCHIVE = "jasperreports-applet-5.6.0.jar,commons-logging-1.1.1.jar,commons-collections-3.2.1.jar" WIDTH = "100%" HEIGHT = "600"></XMP>
    <PARAM NAME = CODE VALUE = "EmbeddedViewerApplet.class" >
    <PARAM NAME = CODEBASE VALUE = "${request.contextPath}/applets" >
    <PARAM NAME = ARCHIVE VALUE = "jasperreports-applet-5.6.0.jar,commons-logging-1.1.1.jar,commons-collections-2.1.1.jar" >

    <PARAM NAME="type" VALUE="application/x-java-applet;version=1.2.2">
    <PARAM NAME="scriptable" VALUE="false">
    <PARAM NAME = "REPORT_URL" VALUE ="${request.contextPath}/laporan/embedbarang">
</APPLET>



NB:

No comments:

Post a Comment