Spring Framework এর সাথে JasperReports ব্যবহার

asperReports এর Integration Java EE এবং Spring এর সাথে - জ্যাসপার রিপোর্ট (JasperReports) - Java Technologies

347

JasperReports একটি জনপ্রিয় ওপেন সোর্স রিপোর্টিং টুল যা Spring Framework এর সাথে খুব সহজে ইন্টিগ্রেট করা যায়। Spring Framework এর মধ্যে JasperReports ব্যবহার করে আপনি ডাইনামিক এবং কাস্টম রিপোর্ট তৈরি করতে পারবেন, যা বিভিন্ন ফরম্যাটে (যেমন PDF, HTML, Excel, CSV) এক্সপোর্ট করা যাবে।

Spring Boot বা Spring MVC অ্যাপ্লিকেশন ব্যবহার করে JasperReports রিপোর্ট তৈরি এবং রেন্ডার করার প্রক্রিয়া সাধারণত খুবই সোজা। এখানে Spring MVC এবং Spring Boot এ JasperReports ইন্টিগ্রেশন দেখানো হবে।


Spring Framework এর সাথে JasperReports ইন্টিগ্রেশন

ধাপ ১: Maven ডিপেনডেন্সি

প্রথমে, আপনার pom.xml ফাইলে JasperReports এর ডিপেনডেন্সি অন্তর্ভুক্ত করুন।

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.17.0</version>
</dependency>

এটি JasperReports এর লাইব্রেরি আপনার প্রজেক্টে অন্তর্ভুক্ত করবে। এছাড়াও আপনি যদি Spring Boot ব্যবহার করেন, তাহলে Spring Boot Starter Web ডিপেনডেন্সি ব্যবহার করতে হবে, যা সাধারণভাবে HTTP এন্ডপয়েন্টে রিপোর্ট জেনারেট করার জন্য দরকারি।


ধাপ ২: JasperReports Template তৈরি করা

JasperReports এর রিপোর্ট ডিজাইন সাধারণত .jrxml ফাইল আকারে থাকে, যা আপনি Jaspersoft Studio অথবা iReport Designer দিয়ে তৈরি করতে পারেন। এই ফাইলগুলি পরে .jasper ফাইলে কম্পাইল হয়, যেটি রিপোর্ট জেনারেট করতে ব্যবহৃত হয়।

ধরা যাক, আপনি একটি সাধারণ Employee রিপোর্ট তৈরি করতে চান।

EmployeeReport.jrxml:

<?xml version="1.0" encoding="UTF-8"?>
<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="EmployeeReport" pageWidth="595" pageHeight="842" columnWidth="515" 
    leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">

    <field name="employeeId" class="java.lang.Integer"/>
    <field name="employeeName" class="java.lang.String"/>
    <field name="department" class="java.lang.String"/>

    <detail>
        <band height="20">
            <textField>
                <reportElement x="0" y="0" width="200" height="20"/>
                <textFieldExpression><![CDATA[$F{employeeId}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="200" y="0" width="200" height="20"/>
                <textFieldExpression><![CDATA[$F{employeeName}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="400" y="0" width="200" height="20"/>
                <textFieldExpression><![CDATA[$F{department}]]></textFieldExpression>
            </textField>
        </band>
    </detail>

</jasperReport>

এখানে, employeeId, employeeName, এবং department ফিল্ডের মান টেবিল আকারে প্রদর্শিত হবে।


ধাপ ৩: Spring Boot এ JasperReports সেটআপ

Spring Boot অ্যাপ্লিকেশন সেটআপ করতে, নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করতে হবে:

  1. Spring Boot Application Class:

    একটি @SpringBootApplication ক্লাস তৈরি করুন।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ReportApplication {
    public static void main(String[] args) {
        SpringApplication.run(ReportApplication.class, args);
    }
}
  1. JasperReports Service ক্লাস:

    এখন একটি JasperReports Service তৈরি করুন যা রিপোর্ট ফিল এবং এক্সপোর্ট করবে।

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Value;

import java.util.*;

@Service
public class ReportService {

    @Value("${report.template.path}")
    private String reportTemplatePath;

    public byte[] generateReport() throws JRException {
        // Compile the .jrxml file to JasperReport object
        JasperReport jasperReport = JasperCompileManager.compileReport(reportTemplatePath);

        // Prepare data for the report (using a sample list of employees)
        List<Employee> employees = getEmployees();  // Assume getEmployees() fetches data
        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(employees);

        // Fill the report with data
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("ReportTitle", "Employee Report");
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);

        // Export the report to PDF
        return JasperExportManager.exportReportToPdf(jasperPrint);
    }

    // A simple method to simulate fetching employee data
    private List<Employee> getEmployees() {
        List<Employee> employees = new ArrayList<>();
        employees.add(new Employee(1, "John Doe", "HR"));
        employees.add(new Employee(2, "Jane Smith", "Finance"));
        return employees;
    }
}

এখানে generateReport মেথডটি .jrxml ফাইল কম্পাইল করবে এবং তারপর JRBeanCollectionDataSource ব্যবহার করে রিপোর্টটি পূর্ণ করবে। শেষে, JasperExportManager ব্যবহার করে রিপোর্টটি পিডিএফ আকারে এক্সপোর্ট করবে।

  1. Employee ক্লাস:
public class Employee {
    private int employeeId;
    private String employeeName;
    private String department;

    public Employee(int employeeId, String employeeName, String department) {
        this.employeeId = employeeId;
        this.employeeName = employeeName;
        this.department = department;
    }

    public int getEmployeeId() {
        return employeeId;
    }

    public String getEmployeeName() {
        return employeeName;
    }

    public String getDepartment() {
        return department;
    }
}

ধাপ ৪: Report Controller

এখন, একটি Spring MVC Controller তৈরি করুন, যা রিপোর্ট জেনারেট করে এবং HTTP response এ পিডিএফ রিপোর্ট পাঠাবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;

@RestController
public class ReportController {

    @Autowired
    private ReportService reportService;

    @GetMapping("/report")
    public void generateReport(HttpServletResponse response) throws Exception {
        // Generate the report and get the PDF content as byte array
        byte[] reportContent = reportService.generateReport();

        // Set response type and headers for PDF
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline; filename=employee_report.pdf");

        // Write the report content to the response output stream
        response.getOutputStream().write(reportContent);
    }
}

এখানে, /report এন্ডপয়েন্টে কল করার মাধ্যমে employee_report.pdf রিপোর্ট পিডিএফ আকারে ব্রাউজারে প্রদর্শিত হবে।


ধাপ ৫: Application Properties

Spring Boot এ JasperReports ব্যবহার করার জন্য application.properties অথবা application.yml ফাইলে কনফিগারেশন নির্ধারণ করা যেতে পারে, যেমন রিপোর্ট টেমপ্লেটের পাথ।

report.template.path=classpath:reports/EmployeeReport.jrxml

  • JasperReports এবং Spring Framework এর ইন্টিগ্রেশন সহজ এবং কার্যকরী। JasperReports আপনার Spring Boot অ্যাপ্লিকেশনে কাস্টম এবং ডাইনামিক রিপোর্ট তৈরি করতে সহায়ক।
  • JasperReports Service ক্লাসের মাধ্যমে আপনি JRBeanCollectionDataSource ব্যবহার করে ডেটা পূর্ণ করে JasperExportManager এর মাধ্যমে বিভিন্ন ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে পারেন।
  • Spring MVC Controller এর মাধ্যমে রিপোর্ট এক্সপোর্ট করা এবং HTTP response এ রিপোর্ট পাঠানো সম্ভব।
Content added By
Promotion

Are you sure to start over?

Loading...