JasperReports হল একটি শক্তিশালী ওপেন সোর্স রিপোর্টিং টুল যা Java EE অ্যাপ্লিকেশনে একত্রিত করে ডাইনামিক রিপোর্ট তৈরি, কাস্টমাইজ এবং এক্সপোর্ট করার জন্য ব্যবহৃত হয়। JasperReports ব্যবহার করে আপনি বিভিন্ন ধরনের রিপোর্ট তৈরি করতে পারেন এবং এই রিপোর্টগুলিকে PDF, Excel, HTML, CSV ইত্যাদি ফরম্যাটে এক্সপোর্ট করতে পারবেন।
Java EE অ্যাপ্লিকেশনে JasperReports এর ইন্টিগ্রেশন অত্যন্ত সহজ, যেখানে আপনি রিপোর্ট তৈরি, রিপোর্টের ডেটা পূরণ এবং এক্সপোর্টিং সবকিছু Java EE কন্টেইনারে পরিচালনা করতে পারেন।
JasperReports এর Java EE তে Integration এর প্রক্রিয়া
১. JasperReports লাইব্রেরি প্রজেক্টে অন্তর্ভুক্ত করা
প্রথমে, আপনার Java EE অ্যাপ্লিকেশনে JasperReports লাইব্রেরি অন্তর্ভুক্ত করতে হবে। আপনি Maven বা Gradle ব্যবহার করে এই লাইব্রেরি অন্তর্ভুক্ত করতে পারেন।
Maven Dependency Example:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.17.0</version> <!-- Use the appropriate version -->
</dependency>
Gradle Dependency Example:
dependencies {
implementation 'net.sf.jasperreports:jasperreports:6.17.0' // Use the appropriate version
}
২. JasperReports এর JRXML ফাইল তৈরি করা
JasperReports-এর জন্য প্রথমে আপনাকে একটি JRXML ফাইল তৈরি করতে হবে, যা রিপোর্টের ডিজাইন সংরক্ষণ করবে। এই ফাইলটি Jaspersoft Studio বা iReport Designer ব্যবহার করে তৈরি করা যেতে পারে।
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="simpleReport" language="java" pageWidth="595" pageHeight="842">
<queryString>
<![CDATA[SELECT id, name, email FROM users]]>
</queryString>
<field name="id" class="java.lang.Integer"/>
<field name="name" class="java.lang.String"/>
<field name="email" class="java.lang.String"/>
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="50" height="20"/>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="50" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="250" y="0" width="250" height="20"/>
<textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
৩. JasperReports এর Java EE অ্যাপ্লিকেশনে Integration
Java EE অ্যাপ্লিকেশনে JasperReports ইন্টিগ্রেট করার জন্য সাধারণত EJB (Enterprise JavaBeans), Servlets, বা JAX-RS (RESTful Services) ব্যবহার করা হয়। নিচে JSP এবং Servlet এর মাধ্যমে JasperReports-এর এক্সপোর্টিং দেখানো হয়েছে।
JSP বা Servlet মাধ্যমে JasperReports এক্সপোর্ট করা
প্রথমে, রিপোর্টটি কম্পাইল করা হবে, তারপর সেটি ফিল করা হবে এবং সঠিক আউটপুট ফরম্যাটে এক্সপোর্ট করা হবে।
Servlet Example:
import net.sf.jasperreports.engine.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/generateReport")
public class ReportGenerationServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// JRXML ফাইলের পথ
String reportPath = getServletContext().getRealPath("/WEB-INF/reports/simpleReport.jrxml");
// JRXML ফাইল কম্পাইল করা
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// ডেটা প্রক্রিয়া (এই ক্ষেত্রে, ডেটাবেস বা অন্য সোর্স থেকে)
HashMap<String, Object> parameters = new HashMap<>();
// যে ডেটাবেস বা ডেটা সোর্স থেকে ডেটা নিয়ে আসা হবে তার জন্য প্যারামিটার দেয়া হবে
// রিপোর্ট পূর্ণ করা
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
// PDF আউটপুট তৈরি করা
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=report.pdf");
JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
} catch (JRException e) {
e.printStackTrace();
}
}
}
এই উদাহরণে:
- JasperCompileManager ব্যবহার করে JRXML ফাইল কম্পাইল করা হয়েছে।
- JasperFillManager ব্যবহার করে রিপোর্টটি পূর্ণ করা হয়েছে।
- JasperExportManager ব্যবহার করে রিপোর্টটি PDF আউটপুটে এক্সপোর্ট করা হয়েছে এবং সেটি HttpServletResponse এর মাধ্যমে ব্রাউজারে দেখানো হয়েছে।
৪. JasperReports-এর RESTful API (JAX-RS)
Java EE অ্যাপ্লিকেশনগুলিতে JAX-RS (Java API for RESTful Web Services) ব্যবহার করে আপনি RESTful API তৈরি করতে পারেন যেটি JasperReports এর মাধ্যমে রিপোর্ট এক্সপোর্ট করবে।
import net.sf.jasperreports.engine.*;
import javax.ws.rs.*;
import javax.ws.rs.core.*;
@Path("/report")
public class ReportResource {
@GET
@Path("/generate")
@Produces("application/pdf")
public Response generateReport() {
try {
String reportPath = "path/to/your/jasperreport.jasper"; // compiled jasper report file
JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, new HashMap<>());
// PDF রেসপন্স হিসাবে পাঠানো
byte[] pdfData = JasperExportManager.exportReportToPdf(jasperPrint);
return Response.ok(pdfData).build();
} catch (JRException e) {
e.printStackTrace();
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
}
}
}
এখানে:
- JAX-RS-এর @Path, @GET, এবং @Produces অ্যানোটেশন ব্যবহার করে RESTful API তৈরি করা হয়েছে।
- JasperFillManager ব্যবহার করে রিপোর্টটি পূর্ণ করা হয়েছে এবং JasperExportManager দিয়ে PDF আউটপুট তৈরি করা হয়েছে।
- রিপোর্টের আউটপুট
byte[]আকারে HTTP Response-এ পাঠানো হয়েছে।
Java EE তে JasperReports এর সুবিধা
- ডাইনামিক রিপোর্টিং:
- JasperReports Java EE অ্যাপ্লিকেশনে ডাইনামিক রিপোর্টিং তৈরি করার জন্য সুবিধাজনক, যেখানে আপনি বিভিন্ন ডেটা সোর্স ব্যবহার করতে পারেন এবং রিপোর্টের আউটপুট কাস্টমাইজ করতে পারেন।
- ভিন্ন আউটপুট ফরম্যাট:
- JasperReports একাধিক আউটপুট ফরম্যাট (যেমন, PDF, Excel, HTML, CSV) সমর্থন করে, যা রিপোর্টের উপস্থাপনা এবং এক্সপোর্টের জন্য কার্যকরী।
- ডেটাবেস ইন্টিগ্রেশন:
- JasperReports সহজেই বিভিন্ন ডেটাবেসের সাথে ইন্টিগ্রেট হতে পারে এবং JPA/Hibernate বা JDBC এর মাধ্যমে ডেটা সংগ্রহ করতে সক্ষম।
- RESTful Integration:
- JAX-RS ব্যবহার করে আপনি JasperReports এর রিপোর্ট তৈরির জন্য RESTful API তৈরি করতে পারেন।
- অতিরিক্ত কাস্টমাইজেশন:
- JasperReports Java EE অ্যাপ্লিকেশনে আরও কাস্টমাইজেশন এবং অ্যানোটেশন সহ রিপোর্ট তৈরির জন্য সহজে ইন্টিগ্রেট করা যায়।
JasperReports এর Java EE তে ইন্টিগ্রেশন খুবই সহজ এবং প্রভাবশালী। এটি ডাইনামিকভাবে রিপোর্ট তৈরি করতে, রিপোর্টের আউটপুট কাস্টমাইজ করতে এবং একাধিক আউটপুট ফরম্যাটে এক্সপোর্ট করতে সহায়তা করে। Java EE এর EJB, Servlets, বা JAX-RS ব্যবহার করে JasperReports সহজে ইন্টিগ্রেট করা যায় এবং আপনার অ্যাপ্লিকেশনে রিপোর্টিং ফিচার যুক্ত করা সম্ভব।
Read more