Make (PDF) Report using iReport & Java (2)


After succesfully made a template report (*.jrxml & *.jasper) using iReport tools, the next step is to ‘call’ the *.jasper file so it can be printed by a web application page using Java (JSP). This is the steps that we need to do that (according to the author experiences).

  1. Prepare these libraries, usually it’s already available on ‘lib’ directory in iReport installation folder.
    • commons-beanutils-1.7.jar
    • commons-collections-2.1.jar
    • commons-digester-1.7.jar
    • iReport.jar
    • itext-1.3.1.jar
    • jasperreports-3.0.0.jar
    • jstl.jar
    • mysql-connector-java-3.1.11-bin.jar
    • poi-3.0.1-FINAL-20070705.jar
    • standard.jar
    • xalan.jar

    Then, we have to copy that’s files to ‘lib’ directory on ‘WEB-INF’ in a web project. Below the screenshoot of Eclipse IDE.

    Screenshot

  2. Now, we can create a simple JSP file, as example, we name it as ‘employeereport.jsp’ :
    • Import package/class
      <%@ page import="java.io.*, java.util.*, net.sf.jasperreports.engine.*, net.sf.jasperreports.engine.export.*" %>
    • Define the taglib
      <%@ page pageEncoding="UTF-8" %>
      <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
      <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c-rt" %>
      <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
      <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt-rt" %>
    • Type these code/scriptlet
      <%
      Map parameters = null;
      JRExporter jrExporter = null;
      //locate the file & its path *.jasper in this example is ‘BasicFeatures.jasper’
      JasperPrint jasperPrint =
      JasperFillManager.fillReport(
      application.getRealPath("/hrdapp/report/jasper/BasicFeatures.jasper"), parameters, new JREmptyDataSource());OutputStream outputStream = response.getOutputStream();
      response.setContentType("application/pdf");
      jrExporter = new JRPdfExporter();
      jrExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
      jrExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
      jrExporter.exportReport();
      outputStream.close();
      %>
  3. And now, we can access on localhost and we can get a PDF file outputPDF Report

Download Docs File (Bahasa Indonesia)

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts
Refleksi & Tindakan
Belajar Membuat Report/Laporan dengan iReport(JasperReport)

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

*celingak celinguk..

aku tak tau mo komenk apa pak Javar :D,, yak karna BBM perlahan turun dan bakal naik lagi, jd ya PertamaX saja lah :D

Alhamdulillah dah sukses sekarang !
hehe senengnya ada pengguna eclipse juga :D

thx berat mas fahmi
kebetulan saya jg lagi mempelajarin ireport
tp masih bingung mengintegrasikannya dgn JSP + eclipse.
dicoba dulu yah. klo boleh tahu belajar ireportnya dr mana yah? ebook apa yg bagus?

# Amel
Dilarang celingak-celinguk doank kalo pertamaX :D

# rosyada
Amiin…semoga sukses juga buat ente Bro :)
Kadang pake Eclipse, kadang pake NetBeans Ru.. kadang juga pake Notepad++. Eclipse emang lebih simple n ringan ketimbang NetBeans.

# khairul
Terima kasih kembali mas. Itu saya diajarin temen kantor, daripada lupa saya share di sini aja. Utk e-book iReport saya jg belum nyari mas :)

Bagossss
numpang lewat, sekaligus ikut belajar, menimba ilmunya

Kalau report ada grafiknya, librarynya perlu ditambah lagi gak?, soalnya saya bisa menampilkan list data dari tabel ok, tetapi jika ireportnya ada grafiknya error terus?

# nura
Yang pernah saya coba, untuk grafik (chart) di iReport tidak perlu tambahan library, karena Chart ini salah satu elemen yg di-provide iReport. (CMIIW)

Errornya seperti ini mas..

org.apache.jasper.JasperException: Exception in JSP: /index.jsp:33

30: e.printStackTrace();
31: }
32:
33: JasperPrint jasperPrint =
34: JasperFillManager.fillReport(
35: application.getRealPath(”//grafik.jasper”), parameters, rekap);
36: // application.

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.ServletException: Lorg/jfree/chart/plot/PlotOrientation;
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.index_jsp._jspService(index_jsp.java:138)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

java.lang.NoClassDefFoundError: Lorg/jfree/chart/plot/PlotOrientation;
java.lang.Class.getDeclaredFields0(Native Method)
java.lang.Class.privateGetDeclaredFields(Class.java:2232)
java.lang.Class.getDeclaredField(Class.java:1852)
java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1555)
java.io.ObjectStreamClass.access$600(ObjectStreamClass.java:47)
java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:381)
java.security.AccessController.doPrivileged(Native Method)
java.io.ObjectStreamClass.(ObjectStreamClass.java:373)
java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:268)
java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:504)
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:468)
net.sf.jasperreports.engine.base.JRBaseChart.readObject(JRBaseChart.java:1187)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
java.util.ArrayList.readObject(ArrayList.java:591)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:88)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
org.apache.jsp.index_jsp._jspService(index_jsp.java:81)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

pliz kirimin dunk situs link softwarenya
:)