JasperReports এর ইন্টিগ্রেশন Java এবং Spring এর সাথে

JasperReports সেটআপ এবং ইন্সটলেশন - জ্যাসপার রিপোর্ট (JasperReports) - Java Technologies

448

JasperReports একটি জনপ্রিয় ওপেন সোর্স রিপোর্টিং টুল যা Java অ্যাপ্লিকেশনগুলির জন্য রিপোর্ট তৈরি করতে ব্যবহৃত হয়। এটি বিভিন্ন ধরনের ডেটা ফরম্যাটে (যেমন PDF, HTML, Excel, CSV) রিপোর্ট জেনারেট করতে সক্ষম। JasperReports সাধারণত JasperReports Library বা JasperReports Server হিসেবে ব্যবহৃত হয় এবং এটি বিভিন্ন ডেটাবেস, XML, CSV, বা JavaBeans-এর সাথে ইন্টিগ্রেট করা যায়।

Spring Framework-এর সাথে JasperReports ইন্টিগ্রেট করার মাধ্যমে আপনি Spring-based অ্যাপ্লিকেশনে রিপোর্ট তৈরি এবং পরিচালনা করতে পারবেন। এই ইন্টিগ্রেশন সাধারণত Spring MVC বা Spring Boot অ্যাপ্লিকেশনগুলোতে ব্যবহৃত হয়।


JasperReports এর সাথে Java এবং Spring Integration

JasperReports এর সাথে Java এবং Spring Integration করার জন্য প্রধানত তিনটি উপাদান থাকে:

  1. JasperReports Library: Java-based reporting tool যা JasperReports ফাইল (JRXML) তৈরি এবং রিপোর্ট জেনারেট করতে ব্যবহৃত হয়।
  2. JasperReports Server: একটি Web-based Server যা Reports এবং Dashboards হোস্ট এবং ম্যানেজ করার জন্য ব্যবহৃত হয়।
  3. JasperReports Library Integration: Java অ্যাপ্লিকেশন বা Spring Framework এর সাথে রিপোর্ট তৈরি করার জন্য jasperreports লাইব্রেরি ব্যবহৃত হয়।

Spring Framework-এ JasperReports ইন্টিগ্রেট করার জন্য jasperreports এবং spring-jasperreports লাইব্রেরি যোগ করতে হবে, যাতে JasperReports ম্যানেজ এবং জেনারেট করা রিপোর্ট Spring Context-এর মাধ্যমে পরিচালিত হতে পারে।


Step-by-Step Guide: JasperReports Integration in Spring Boot

Step 1: Dependency Setup

Spring Boot অ্যাপ্লিকেশনে JasperReports লাইব্রেরি ইন্টিগ্রেট করতে প্রথমে Maven বা Gradle ডিপেন্ডেন্সি যোগ করতে হবে।

Maven Dependency:

<dependencies>
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.19.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports-fonts</artifactId>
        <version>6.19.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
</dependencies>

Gradle Dependency:

dependencies {
    implementation 'net.sf.jasperreports:jasperreports:6.19.0'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'net.sf.jasperreports:jasperreports-fonts:6.19.0'
    implementation 'org.springframework:spring-web'
}

Step 2: JasperReports Template (.jrxml) তৈরি করা

JasperReports রিপোর্ট তৈরি করার জন্য, আপনাকে একটি .jrxml ফাইল তৈরি করতে হবে যা রিপোর্টের ডিজাইন এবং ফিল্ডগুলির ডেটা মডেল নির্ধারণ করবে।

Example: report_template.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="Sample Report" pageWidth="595" pageHeight="842" columnWidth="515" 
              leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
    <field name="name" class="java.lang.String"/>
    <field name="age" class="java.lang.Integer"/>
    <title>
        <band height="50">
            <textField>
                <reportElement x="0" y="0" width="500" height="30"/>
                <textFieldExpression><![CDATA["Sample Report"]]></textFieldExpression>
            </textField>
        </band>
    </title>
    <detail>
        <band height="30">
            <textField>
                <reportElement x="0" y="0" width="250" height="30"/>
                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="260" y="0" width="100" height="30"/>
                <textFieldExpression><![CDATA[$F{age}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

এখানে, name এবং age ফিল্ডে ডেটা থাকবে এবং প্রতিটি পংক্তি একটি নির্দিষ্ট রিপোর্টে উপস্থাপিত হবে।


Step 3: JasperReports Service তৈরি করা

Spring Boot অ্যাপ্লিকেশন থেকে JasperReports ব্যবহার করার জন্য একটি JasperReports Service তৈরি করতে হবে যা রিপোর্টের ইনপুট ডেটা প্রদান করবে এবং রিপোর্ট তৈরি করবে।

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

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class JasperReportsService {

    @Value("classpath:report_template.jrxml")
    private InputStream jasperTemplate;

    public byte[] generateReport(List<Person> persons) throws JRException {
        // Compile the Jasper report
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperTemplate);

        // Set parameters
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("ReportTitle", "Person Report");

        // Create JRDataSource
        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(persons);

        // Fill report
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);

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

Step 4: Controller তৈরি করা

Spring Boot Controller তৈরি করে ব্যবহারকারীকে রিপোর্ট জেনারেট করার জন্য একটি API Endpoint প্রদান করুন।

JasperReportsController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@RestController
public class JasperReportsController {

    @Autowired
    private JasperReportsService jasperReportsService;

    @GetMapping("/generate-report")
    public ResponseEntity<byte[]> generateReport(@RequestParam("name") String name) throws Exception {
        List<Person> persons = Arrays.asList(new Person(name, 25), new Person("Jane", 30));
        byte[] report = jasperReportsService.generateReport(persons);
        return ResponseEntity.ok()
                .header("Content-Type", "application/pdf")
                .header("Content-Disposition", "inline; filename=report.pdf")
                .body(report);
    }
}

এখানে, /generate-report URL এ GET রিকোয়েস্ট পাঠানোর মাধ্যমে আপনি রিপোর্ট জেনারেট করতে পারেন এবং PDF আউটপুট পাবেন।

Step 5: Person Model

public class Person {
    private String name;
    private int age;

    // Constructor, Getter, and Setter

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getters and Setters
}

Step 6: Running the Application

আপনি Spring Boot অ্যাপ্লিকেশনটি রান করলে, /generate-report?name=John রিকোয়েস্ট পাঠানোর মাধ্যমে PDF রিপোর্ট পাবেন।


JasperReports এর সাথে Spring Integration-এর সুবিধা:

  1. Flexible Reporting:
    • JasperReports শক্তিশালী এবং নমনীয়, যার ফলে আপনি JSON, XML বা অন্য কোনো ডেটার সোর্স থেকে রিপোর্ট তৈরি করতে পারেন।
  2. Support for Multiple Output Formats:
    • JasperReports একাধিক আউটপুট ফরম্যাট সমর্থন করে, যেমন PDF, Excel, HTML, CSV ইত্যাদি।
  3. Comprehensive Report Features:
    • JasperReports ব্যবহার করে আপনি পৃষ্ঠা নম্বর, চার্ট, গ্রাফ, ডেটা টেবিল, সাব-রিপোর্ট, প্যারামিটার এবং কাস্টম লজিক সহ রিপোর্ট তৈরি করতে পারবেন।
  4. Easy Spring Integration:
    • Spring Boot বা Spring MVC অ্যাপ্লিকেশনগুলির সাথে JasperReports একত্রিত করা সহজ, এবং রিপোর্টগুলি দ্রুত এবং কার্যকরীভাবে তৈরি এবং প্রদান করা যায়।

Spring Framework এবং JasperReports একত্রিত করার মাধ্যমে আপনি সহজে রিপোর্ট তৈরি করতে পারেন, যা REST API বা Web Application থেকে সরাসরি JSON বা ডেটাবেস ডেটা ব্যবহার করে তৈরি হয়। JasperReports-এর মাধ্যমে বিভিন্ন আউটপুট ফরম্যাট (যেমন PDF, Excel, HTML) সহজেই সাপোর্ট করা যায়। JasperReports Spring Integration ডেভেলপারদের রিপোর্ট তৈরির জন্য শক্তিশালী এবং নমনীয় সলিউশন প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...