JasperReports একটি শক্তিশালী রিপোর্টিং লাইব্রেরি যা charting এবং graphics ব্যবস্থাপনার জন্য অনেক সুবিধা প্রদান করে। আপনি সহজে chart (যেমন: pie charts, bar charts, line charts) তৈরি করতে পারেন এবং graphics যেমন images এবং shapes যুক্ত করতে পারেন। এই ফিচারগুলি রিপোর্টকে আরও আর্কষণীয় এবং তথ্যপূর্ণ করে তোলে।
1. Charting in JasperReports
JasperReports বিভিন্ন ধরনের গ্রাফ এবং চার্ট তৈরি করতে JFreeChart লাইব্রেরি ব্যবহার করে। এই লাইব্রেরি সহজে গ্রাফিক্যাল রিপ্রেজেন্টেশন তৈরি করতে সাহায্য করে।
Types of Charts Supported in JasperReports:
- Bar Chart
- Line Chart
- Pie Chart
- Area Chart
- XY Chart
- Bubble Chart
Charting in JasperReports Studio:
JasperReports Studio ব্যবহার করে চার্ট তৈরি করা সহজ, আপনি Report Design উইন্ডোতে ড্র্যাগ-এন্ড-ড্রপ করে চার্ট যুক্ত করতে পারেন। এখানে একটি সাধারণ bar chart তৈরির প্রক্রিয়া দেখানো হলো।
Charting Example in JasperReports Studio:
- Create a Report: প্রথমে একটি রিপোর্ট তৈরি করুন এবং Chart টুল ব্যবহার করুন।
- Add Dataset: রিপোর্টে একটি Dataset তৈরি করুন যা ডেটা প্রদান করবে।
- Insert Chart: চার্টের জন্য Chart টুলটি সিলেক্ট করুন এবং রিপোর্টে ড্র্যাগ করুন।
- Customize Chart: আপনার চার্টের টাইপ এবং ডেটা সোর্স কনফিগার করুন (যেমন: Bar Chart, Pie Chart, ইত্যাদি)।
Example: Bar Chart in JasperReports
<chart>
<reportElement x="0" y="50" width="300" height="200"/>
<chartTitle>
<font fontName="Arial" size="14" isBold="true"/>
<textFieldExpression><![CDATA["Sales Data by Region"]]></textFieldExpression>
</chartTitle>
<categoryDataset>
<dataset>
<datasetRun subDataset="chartDataset"/>
</dataset>
</categoryDataset>
</chart>
Java Code to Populate Chart Data
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class ChartExample {
public static void main(String[] args) {
try {
// Create sample data for the chart
List<SalesData> salesDataList = new ArrayList<>();
salesDataList.add(new SalesData("Region 1", 100));
salesDataList.add(new SalesData("Region 2", 200));
salesDataList.add(new SalesData("Region 3", 300));
// Create a JRBeanCollectionDataSource from the list
JRBeanCollectionDataSource jrDataSource = new JRBeanCollectionDataSource(salesDataList);
// Compile and fill the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/report.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jrDataSource);
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/sales_report.pdf");
} catch (JRException e) {
e.printStackTrace();
}
}
}
class SalesData {
private String region;
private int sales;
// Constructor, getters, setters
public SalesData(String region, int sales) {
this.region = region;
this.sales = sales;
}
public String getRegion() {
return region;
}
public int getSales() {
return sales;
}
}
Pie Chart Example in JasperReports:
<chart>
<reportElement x="0" y="50" width="300" height="200"/>
<chartTitle>
<font fontName="Arial" size="14" isBold="true"/>
<textFieldExpression><![CDATA["Sales Distribution"]]></textFieldExpression>
</chartTitle>
<pieDataset>
<dataset>
<datasetRun subDataset="pieChartDataset"/>
</dataset>
</pieDataset>
</chart>
2. Graphics in JasperReports
Graphics ব্যবহার করে আপনি images, shapes, এবং lines রিপোর্টে যোগ করতে পারেন, যা রিপোর্টের দর্শনীয়তা এবং প্রেজেন্টেশন উন্নত করে। JasperReports গ্রাফিক্যাল উপাদান যোগ করার জন্য Image এবং Shape সরঞ্জাম সরবরাহ করে।
Best Practices for Adding Graphics in JasperReports:
- Images: JasperReports-এ static অথবা dynamic images যোগ করা যায়। আপনি path-based images বা base64 encoded images ব্যবহার করতে পারেন।
- Shapes: বিভিন্ন ধরনের shapes (যেমন: rectangles, circles, lines) যোগ করতে পারেন, যা রিপোর্টের সাজসজ্জায় সহায়ক।
- Positioning: images এবং shapes সঠিকভাবে অবস্থান করতে x, y coordinates ব্যবহার করুন।
Adding Images Example:
<image>
<reportElement x="0" y="0" width="100" height="100"/>
<imageExpression><![CDATA["/path/to/logo.png"]]></imageExpression>
</image>
এখানে, একটি ইমেজ /path/to/logo.png থেকে রিপোর্টে অন্তর্ভুক্ত করা হচ্ছে।
Adding Shapes Example:
<rectangularFrame>
<reportElement x="10" y="10" width="200" height="100"/>
<box>
<pen lineWidth="2" lineColor="#000000"/>
<topPen lineWidth="2" lineColor="#000000"/>
</box>
</rectangularFrame>
এখানে একটি rectangle যোগ করা হচ্ছে যা একটি frame আকারে রিপোর্টে প্রদর্শিত হবে।
3. Customizing Chart Appearance
JasperReports আপনাকে chart appearance কাস্টমাইজ করতে সাহায্য করে। আপনি colors, labels, legends, এবং titles কাস্টমাইজ করতে পারেন। এছাড়া, chart legends এবং tooltips ব্যবহারের মাধ্যমে ব্যবহারকারীদের আরও তথ্য প্রদান করতে পারেন।
Chart Customization Example:
<chart>
<reportElement x="0" y="50" width="400" height="300"/>
<chartTitle>
<font fontName="Arial" size="14" isBold="true"/>
<textFieldExpression><![CDATA["Sales Data by Region"]]></textFieldExpression>
</chartTitle>
<categoryDataset>
<dataset>
<datasetRun subDataset="chartDataset"/>
</dataset>
</categoryDataset>
<chartLegend>
<font fontName="Arial" size="10" isBold="true"/>
</chartLegend>
<chartPlot>
<plot>
<stroke lineWidth="2" lineColor="#000000"/>
<fill backgroundColor="#E0E0E0"/>
</plot>
</chartPlot>
</chart>
এখানে, chart title, legend, এবং plot style কাস্টমাইজ করা হয়েছে।
4. Dynamic Charting with Parameters
আপনি parameters ব্যবহার করে চার্টে dynamic data প্রেরণ করতে পারেন। উদাহরণস্বরূপ, আপনি ব্যবহারকারীর date range বা region ইনপুট গ্রহণ করে সেই অনুযায়ী ডেটা প্রদর্শন করতে পারেন।
Dynamic Chart Example Using Parameters:
<parameter name="StartDate" class="java.util.Date"/>
<parameter name="EndDate" class="java.util.Date"/>
<chart>
<reportElement x="0" y="50" width="400" height="300"/>
<categoryDataset>
<dataset>
<datasetRun subDataset="chartDataset"/>
</dataset>
</categoryDataset>
</chart>
এখানে, StartDate এবং EndDate parameters ব্যবহার করে নির্দিষ্ট date range অনুযায়ী ডেটা প্রদর্শিত হবে।
5. Exporting Charts to PDF, Excel, and Other Formats
JasperReports-এ আপনি charts এবং graphics সহ রিপোর্টকে PDF, Excel, HTML, CSV ইত্যাদিতে এক্সপোর্ট করতে পারেন। আপনি JasperExportManager ব্যবহার করে এক্সপোর্ট করতে পারবেন।
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/sales_report_with_charts.pdf");
এখানে jasperPrint রিপোর্টের ফাইনাল আউটপুট যা PDF ফরম্যাটে এক্সপোর্ট হচ্ছে।
JasperReports-এ charting এবং graphics ব্যবস্থাপনা একটি অত্যন্ত শক্তিশালী ফিচার, যা রিপোর্টের ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করতে সাহায্য করে। আপনি bar charts, pie charts, line charts ইত্যাদি তৈরি করতে পারেন এবং graphics যেমন images এবং shapes ব্যবহার করে রিপোর্টকে আরও সুন্দর এবং তথ্যপূর্ণ করে তুলতে পারেন।
- JFreeChart ব্যবহার করে বিভিন্ন ধরনের চার্ট তৈরি করুন।
- Images এবং Shapes ব্যবহার করে রিপোর্টে গ্রাফিক্স যুক্ত করুন।
- Dynamic Charts তৈরি করতে parameters ব্যবহার করুন।
- রিপোর্টের আউটপুট PDF, Excel, CSV, ইত্যাদি ফরম্যাটে এক্সপোর্ট করুন।
JasperReports-এর এই ফিচারগুলি রিপোর্টকে আরও কার্যকর এবং আকর্ষণীয় করে তোলে।
JasperReports একটি শক্তিশালী রিপোর্টিং টুল যা charts তৈরি করার জন্য JFreeChart লাইব্রেরি ব্যবহার করে। Charts রিপোর্টের মধ্যে গ্রাফিক্যাল উপস্থাপন তৈরি করতে ব্যবহৃত হয় এবং এটি ডেটার ভিজ্যুয়াল উপস্থাপন অনেক সহজ করে তোলে। JasperReports বিভিন্ন ধরনের charts তৈরি করার জন্য সমর্থন দেয়, যেমন Pie Chart, Bar Chart, এবং Line Chart।
এখানে, আমরা Pie Chart, Bar Chart, এবং Line Chart তৈরি করার প্রক্রিয়া এবং JasperReports Studio-এ এগুলো কিভাবে কনফিগার করা যায় তা আলোচনা করব।
1. Pie Chart তৈরি করা
Pie Chart একটি খুব জনপ্রিয় চার্ট যা ভাগফল বা শতাংশ হিসাবে ডেটা উপস্থাপন করতে ব্যবহৃত হয়।
Pie Chart তৈরি করার প্রক্রিয়া:
- Chart Element যুক্ত করা:
- JasperReports Studio-এ রিপোর্টে একটি Pie Chart যোগ করতে, আপনি chart ট্যাব থেকে Pie Chart নির্বাচন করুন।
- Dataset এবং Category নির্ধারণ:
- Pie Chart এর জন্য আপনাকে Dataset এবং Category সেট করতে হবে, যেখানে category থাকবে গ্রাফের বিভিন্ন অংশ, এবং value থাকবে প্রতিটি অংশের মান।
উদাহরণ: Pie Chart Report
JasperReports JRXML ফাইল (Pie Chart):
<chart>
<reportElement x="0" y="0" width="500" height="300"/>
<chartTitle>
<font fontName="Arial" size="14" isBold="true"/>
<textFieldExpression><![CDATA["Sales Distribution by Category"]]></textFieldExpression>
</chartTitle>
<categoryDataset>
<dataset>
<datasetRun subDataset="salesDataset"/>
</dataset>
</categoryDataset>
<categorySeries>
<categorySeriesDataset>
<seriesExpression><![CDATA[$F{category}]]></seriesExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
</categorySeriesDataset>
</categorySeries>
</chart>
Java Code for Pie Chart Report Generation:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class PieChartExample {
public static void main(String[] args) {
try {
// Create data for the Pie chart
List<Sales> salesList = new ArrayList<>();
salesList.add(new Sales("Electronics", 2000));
salesList.add(new Sales("Clothing", 1500));
salesList.add(new Sales("Books", 1000));
// Fill data into JRBeanCollectionDataSource
JRBeanCollectionDataSource jrDataSource = new JRBeanCollectionDataSource(salesList);
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/pie_chart_report.jrxml");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jrDataSource);
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/pie_chart_report.pdf");
} catch (JRException e) {
e.printStackTrace();
}
}
}
class Sales {
private String category;
private int value;
public Sales(String category, int value) {
this.category = category;
this.value = value;
}
public String getCategory() {
return category;
}
public int getValue() {
return value;
}
}
2. Bar Chart তৈরি করা
Bar Chart হল একটি সাধারণ চার্ট যা আড়াআড়ি বা উল্লম্ব বার ব্যবহার করে ডেটা উপস্থাপন করে। এটি তুলনামূলক ডেটা দেখানোর জন্য ব্যবহৃত হয়।
Bar Chart তৈরি করার প্রক্রিয়া:
- Bar Chart Element যুক্ত করা:
- JasperReports Studio-এ Bar Chart যুক্ত করতে, chart ট্যাব থেকে Bar Chart নির্বাচন করুন।
- Dataset এবং Category নির্ধারণ:
- Bar Chart এর জন্য Dataset সেট করতে হবে। এছাড়া, Category এবং Value নির্ধারণ করতে হবে।
উদাহরণ: Bar Chart Report
JasperReports JRXML ফাইল (Bar Chart):
<chart>
<reportElement x="0" y="0" width="500" height="300"/>
<chartTitle>
<font fontName="Arial" size="14" isBold="true"/>
<textFieldExpression><![CDATA["Monthly Sales by Region"]]></textFieldExpression>
</chartTitle>
<categoryDataset>
<dataset>
<datasetRun subDataset="salesDataset"/>
</dataset>
</categoryDataset>
<categorySeries>
<categorySeriesDataset>
<seriesExpression><![CDATA[$F{region}]]></seriesExpression>
<valueExpression><![CDATA[$F{sales}]]></valueExpression>
</categorySeriesDataset>
</categorySeries>
</chart>
Java Code for Bar Chart Report Generation:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class BarChartExample {
public static void main(String[] args) {
try {
// Create data for the Bar chart
List<Sales> salesList = new ArrayList<>();
salesList.add(new Sales("North", 1200));
salesList.add(new Sales("South", 1500));
salesList.add(new Sales("East", 1000));
// Fill data into JRBeanCollectionDataSource
JRBeanCollectionDataSource jrDataSource = new JRBeanCollectionDataSource(salesList);
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/bar_chart_report.jrxml");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jrDataSource);
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/bar_chart_report.pdf");
} catch (JRException e) {
e.printStackTrace();
}
}
}
3. Line Chart তৈরি করা
Line Chart সময়ের সাথে পরিবর্তন বা টেন্ডেন্সি দেখানোর জন্য ব্যবহৃত হয়। এটি একটি সোজা রেখা বা লাইন ব্যবহার করে বিভিন্ন ডেটা পয়েন্টের মধ্যে সম্পর্ক উপস্থাপন করে।
Line Chart তৈরি করার প্রক্রিয়া:
- Line Chart Element যুক্ত করা:
- JasperReports Studio-এ Line Chart যোগ করতে, chart ট্যাব থেকে Line Chart নির্বাচন করুন।
- Dataset এবং Category নির্ধারণ:
- Line Chart এর জন্য Dataset সেট করতে হবে এবং Category এবং Value নির্ধারণ করতে হবে।
উদাহরণ: Line Chart Report
JasperReports JRXML ফাইল (Line Chart):
<chart>
<reportElement x="0" y="0" width="500" height="300"/>
<chartTitle>
<font fontName="Arial" size="14" isBold="true"/>
<textFieldExpression><![CDATA["Yearly Sales Trend"]]></textFieldExpression>
</chartTitle>
<categoryDataset>
<dataset>
<datasetRun subDataset="salesDataset"/>
</dataset>
</categoryDataset>
<categorySeries>
<categorySeriesDataset>
<seriesExpression><![CDATA[$F{year}]]></seriesExpression>
<valueExpression><![CDATA[$F{sales}]]></valueExpression>
</categorySeriesDataset>
</categorySeries>
</chart>
Java Code for Line Chart Report Generation:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class LineChartExample {
public static void main(String[] args) {
try {
// Create data for the Line chart
List<Sales> salesList = new ArrayList<>();
salesList.add(new Sales("2018", 5000));
salesList.add(new Sales("2019", 6000));
salesList.add(new Sales("2020", 7000));
// Fill data into JRBeanCollectionDataSource
JRBeanCollectionDataSource jrDataSource = new JRBeanCollectionDataSource(salesList);
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/line_chart_report.jrxml");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jrDataSource);
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/line_chart_report.pdf");
} catch (JRException e) {
e.printStackTrace();
}
}
}
JasperReports দিয়ে Pie Chart, Bar Chart, এবং Line Chart তৈরি করার মাধ্যমে আপনি গ্রাফিক্যাল উপস্থাপনা সহজে করতে পারেন। এই চার্টগুলি রিপোর্টে গুরুত্বপূর্ণ data trends, comparisons, এবং distributions দেখাতে ব্যবহৃত হয়।
- Pie Chart সাধারণত শতাংশের ভিত্তিতে বিভাজিত ডেটা দেখাতে ব্যবহৃত হয়।
- Bar Chart তুলনামূলক ডেটা দেখানোর জন্য ব্যবহৃত হয়।
- Line Chart সময়ের সাথে পরিবর্তন বা প্রবণতা দেখানোর জন্য ব্যবহৃত হয়।
JasperReports Studio ব্যবহার করে আপনি সহজেই এই চার্টগুলি তৈরি করতে পারবেন, এবং Java Code দিয়ে রিপোর্টে ডেটা প্রেরণ ও এক্সপোর্ট করতে পারবেন।
JasperReports-এ Charts হল এমন একটি শক্তিশালী উপাদান যা ডেটা গ্রাফিক্যালভাবে প্রদর্শন করতে সহায়তা করে, যেমন pie charts, bar charts, line charts, এবং scatter plots। আপনি সহজেই আপনার রিপোর্টে চার্ট যোগ করতে পারেন এবং সেই চার্টের বিভিন্ন বৈশিষ্ট্য কাস্টমাইজ করতে পারেন, যেমন color, size, labels, legends, axes ইত্যাদি।
এই নিবন্ধে, আমরা JasperReports-এ Chart Customization এবং Formatting নিয়ে আলোচনা করব।
1. JasperReports-এ Charts যোগ করা
JasperReports-এ চার্ট তৈরি করতে হলে আপনাকে কিছু নির্দিষ্ট স্টেপ অনুসরণ করতে হবে, যেমন JFreeChart লাইব্রেরি ব্যবহার করা, যা JasperReports এ গ্রাফিক্যাল চার্ট প্রদর্শনের জন্য ব্যবহৃত হয়।
Steps to Add a Chart:
- JFreeChart Library যুক্ত করা: JasperReports-এর মধ্যে গ্রাফ তৈরি করতে JFreeChart লাইব্রেরি ব্যবহার করা হয়। আপনাকে এই লাইব্রেরিটি আপনার প্রকল্পে যুক্ত করতে হবে।
- Chart Element যোগ করা: JasperReports Studio-তে Chart যোগ করার জন্য আপনি chart ট্যাব থেকে chart element ব্যবহার করতে পারেন।
2. JasperReports Charts Types
JasperReports-এ বেশ কিছু ধরনের চার্ট রয়েছে যা আপনি আপনার রিপোর্টে ব্যবহার করতে পারেন:
- Pie Chart
- Pie chart সেগমেন্ট আকারে ডেটা প্রদর্শন করে এবং প্রায়ই শতাংশ বা অংশের তুলনা করতে ব্যবহৃত হয়।
- Bar Chart
- Bar chart বার গুলির উচ্চতা বা দৈর্ঘ্য দিয়ে ডেটার তুলনা করা হয়। এটি খুবই জনপ্রিয় categorical ডেটা প্রদর্শনের জন্য।
- Line Chart
- Line chart ডেটার মধ্যে সম্পর্ক দেখানোর জন্য ব্যবহৃত হয় এবং সাধারণত সময়ের সাথে পরিবর্তন দেখানোর জন্য ব্যবহৃত হয়।
- Area Chart
- Area chart একটি line chart এর মতো, কিন্তু এই চার্টে ডেটার নিচে এলাকা রঙ করা থাকে, যা ডেটার একত্রিত মান প্রদর্শন করে।
- XY (Scatter) Chart
- XY chart একে অপরের সাথে সম্পর্কিত দুটি পরিমাণের মধ্যে পার্থক্য দেখানোর জন্য ব্যবহৃত হয়।
3. Chart Customization in JasperReports
JasperReports-এ আপনি charts কাস্টমাইজ করার জন্য অনেক ধরনের বৈশিষ্ট্য পরিবর্তন করতে পারেন, যেমন colors, legends, labels, axes ইত্যাদি।
Chart Customization Examples:
Pie Chart Customization:
<chart>
<reportElement x="0" y="0" width="400" height="300"/>
<chartTitle>
<font fontName="Arial" size="14" isBold="true"/>
<textFieldExpression><![CDATA["Sales by Category"]]></textFieldExpression>
</chartTitle>
<chartPlot>
<piePlot>
<pieDataset>
<dataset>
<datasetRun subDataset="pieChartData" />
</dataset>
</pieDataset>
</piePlot>
</chartPlot>
</chart>
Customizing the Color of Pie Chart Slices:
<chart>
<reportElement x="0" y="0" width="400" height="300"/>
<chartPlot>
<piePlot>
<pieDataset>
<dataset>
<datasetRun subDataset="pieChartData" />
</dataset>
</pieDataset>
<itemStyle>
<fill color="#FF5733"/> <!-- Custom color for pie slice -->
</itemStyle>
</piePlot>
</chartPlot>
</chart>
Bar Chart Customization (Color and Width):
<chart>
<reportElement x="0" y="0" width="400" height="300"/>
<chartTitle>
<font fontName="Arial" size="14" isBold="true"/>
<textFieldExpression><![CDATA["Product Sales"]]></textFieldExpression>
</chartTitle>
<chartPlot>
<categoryPlot>
<categoryDataset>
<dataset>
<datasetRun subDataset="barChartData"/>
</dataset>
</categoryDataset>
<categoryAxis label="Products"/>
<numberAxis label="Sales"/>
</categoryPlot>
</chartPlot>
<itemStyle>
<stroke width="3" color="#2E8B57"/> <!-- Bar border color and width -->
</itemStyle>
</chart>
4. Formatting Charts in JasperReports
Chart Formatting JasperReports-এ চার্টের প্রদর্শন এবং আউটপুটকে আরও কাস্টমাইজড করতে ব্যবহৃত হয়। আপনি legends, axis labels, font sizes, color schemes ইত্যাদি পরিবর্তন করতে পারেন।
Formatting Example for Pie Chart:
<chart>
<reportElement x="0" y="0" width="400" height="300"/>
<chartPlot>
<piePlot>
<pieDataset>
<dataset>
<datasetRun subDataset="pieChartData" />
</dataset>
</pieDataset>
<pieSection labelPosition="Outside" explodeRatio="0.15"/>
</piePlot>
</chartPlot>
<chartLegend>
<font fontName="Arial" size="10" isBold="true"/>
<legendPosition>Top</legendPosition>
</chartLegend>
</chart>
Bar Chart Formatting (Including Legends and Axes):
<chart>
<reportElement x="0" y="0" width="400" height="300"/>
<chartPlot>
<categoryPlot>
<categoryDataset>
<dataset>
<datasetRun subDataset="barChartData" />
</dataset>
</categoryDataset>
<categoryAxis label="Products"/>
<numberAxis label="Sales"/>
</categoryPlot>
</chartPlot>
<chartLegend>
<font fontName="Verdana" size="12" isItalic="true"/>
<legendPosition>Right</legendPosition>
</chartLegend>
</chart>
5. Advanced Chart Customization
JasperReports-এ আরো গভীরভাবে কাস্টমাইজেশন করতে কিছু advanced options ব্যবহার করা হয়, যেমন:
- Dynamic Data Labels: আপনি চাইলে data labels কাস্টমাইজ করতে পারেন, যেমন মানের সাথে সংশ্লিষ্ট percentage বা value প্রদর্শন।
- Gridlines: Gridlines এবং axes কাস্টমাইজ করতে পারেন, যা গ্রাফের মধ্যে নির্দেশক হিসেবে কাজ করে।
- Multiple Chart Types: আপনি একাধিক চার্ট মিশ্রিত করে একটি ড্যাশবোর্ড তৈরি করতে পারেন, যেমন এক পৃষ্ঠায় Bar Chart এবং Line Chart।
Advanced Customization Example:
<chart>
<reportElement x="0" y="0" width="400" height="300"/>
<chartPlot>
<linePlot>
<lineDataset>
<dataset>
<datasetRun subDataset="lineChartData" />
</dataset>
</lineDataset>
</linePlot>
</chartPlot>
<chartLegend>
<font fontName="Arial" size="10" isBold="true"/>
<legendPosition>Bottom</legendPosition>
</chartLegend>
</chart>
6. Adding Multiple Data Series
Multiple Data Series ব্যবহার করে আপনি একই চার্টে বিভিন্ন সেট ডেটা দেখাতে পারেন। এটি ডেটা তুলনা বা একাধিক মানের জন্য সেরা। উদাহরণস্বরূপ, আপনি একটি line chart-এ একাধিক data series যোগ করতে পারেন।
<chart>
<reportElement x="0" y="0" width="400" height="300"/>
<chartPlot>
<linePlot>
<lineDataset>
<dataset>
<datasetRun subDataset="lineChartData1" />
</dataset>
</lineDataset>
<lineDataset>
<dataset>
<datasetRun subDataset="lineChartData2" />
</dataset>
</lineDataset>
</linePlot>
</chartPlot>
</chart>
7. Final Exporting and Output
- Exporting Chart to PDF, Excel, HTML: JasperReports-এ তৈরি করা চিত্রগুলো PDF, Excel, HTML সহ অন্যান্য ফরম্যাটে export করা যায়। আপনি JasperExportManager ব্যবহার করে এই এক্সপোর্ট অপশনটি ব্যবহার করতে পারেন।
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/chart_report.pdf");
- JasperReports-এ charts কাস্টমাইজেশন এবং formatting ডেটা গ্রাফিক্যালভাবে উপস্থাপন করতে ব্যবহৃত হয় এবং বিভিন্ন chart types এবং styling options ব্যবহার করে রিপোর্টের aesthetic উন্নত করা যায়।
- Pie charts, Bar charts, Line charts এবং অন্যান্য ধরনের গ্রাফ সহজেই তৈরি করা যায় এবং dynamic labels, axis labels, legend positions ইত্যাদি কাস্টমাইজ করা যায়।
- রিপোর্টে multiple data series এবং advanced customizations যুক্ত করার মাধ্যমে আপনি আরো উন্নত এবং পেশাদার রিপোর্ট তৈরি করতে পারেন।
JasperReports-এ Graphics এবং Images ব্যবহার করা যেতে পারে রিপোর্টের মধ্যে ভিজ্যুয়াল কন্টেন্ট অন্তর্ভুক্ত করতে। আপনি static images (যেমন, লগো, গ্রাফিক্স) বা dynamic images (যেগুলি ডেটা সোর্স থেকে পরিবর্তিত হয়) অন্তর্ভুক্ত করতে পারেন। এখানে static এবং dynamic images যোগ করার পদ্ধতি নিয়ে আলোচনা করা হবে।
Static Images যোগ করা:
Static images হল ইমেজ ফাইল যেগুলি নির্দিষ্ট এবং পরিবর্তনশীল নয়। উদাহরণস্বরূপ, আপনি একটি রিপোর্টে Company Logo বা Signature Image রাখতে পারেন।
Static Image যোগ করার জন্য JRXML ফাইলের উদাহরণ:
<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="staticImageReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Static Image -->
<detail>
<band height="100">
<image>
<reportElement x="0" y="0" width="200" height="50"/>
<imageExpression><![CDATA["file:///C:/path_to_image/logo.png"]]></imageExpression>
</image>
</band>
</detail>
</jasperReport>
ব্যাখ্যা:
<image>ট্যাগের মাধ্যমে রিপোর্টে একটি static image যোগ করা হয়েছে।imageExpressionদিয়ে আপনি ছবির ফাইল পাথ প্রদান করেন, যেখানে"file:///C:/path_to_image/logo.png"ছবির অবস্থান নির্দেশ করে।
এটি static image ইনপুট হিসেবে JasperReports এ প্রদর্শন করবে, এবং ছবির অবস্থান পরিবর্তন হবে না।
Dynamic Images যোগ করা:
Dynamic images হল এমন ইমেজ যা রিপোর্টের কন্টেন্ট অনুযায়ী পরিবর্তিত হয়। উদাহরণস্বরূপ, আপনি ডেটাবেস থেকে product images বা chart images লোড করতে পারেন।
Dynamic Image যোগ করার জন্য JRXML ফাইলের উদাহরণ:
ধরা যাক, আপনার ডেটাবেসে প্রতিটি product এর ছবি রয়েছে এবং সেই ছবি রিপোর্টে প্রদর্শন করতে চান।
<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="dynamicImageReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Dynamic Image (Image from DataSource) -->
<detail>
<band height="100">
<image>
<reportElement x="0" y="0" width="200" height="100"/>
<imageExpression><![CDATA[$F{product_image}]]></imageExpression>
</image>
</band>
</detail>
</jasperReport>
ব্যাখ্যা:
<image>কম্পোনেন্টটি dynamic image প্রদর্শন করতে ব্যবহার করা হয়েছে।imageExpressionএখানে$F{product_image}ব্যবহার করা হয়েছে, যেখানেproduct_imageহল ডেটাবেস ফিল্ড যা Image ডেটা ধারণ করে। সাধারণত, এটি byte array আকারে থাকে, যা ডেটাবেস থেকে সোজা রিপোর্টে লোড করা যায়।
Java কোড (ডেটাবেস থেকে ডায়নামিক ইমেজ লোড করা):
import net.sf.jasperreports.engine.*;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
public class JasperDynamicImageExample {
public static void main(String[] args) {
try {
// JRXML ফাইল কম্পাইল করা
JasperReport jasperReport = JasperCompileManager.compileReport("dynamicImageReport.jrxml");
// JDBC সংযোগ স্থাপন
String url = "jdbc:mysql://localhost:3306/your_database";
String username = "your_username";
String password = "your_password";
Connection connection = DriverManager.getConnection(url, username, password);
// রিপোর্টের প্যারামিটার
Map<String, Object> parameters = new HashMap<>();
// ডেটাবেস থেকে ইমেজসহ ডেটা নিয়ে রিপোর্ট তৈরি করা
String query = "SELECT product_name, product_image FROM products";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
// ResultSet কে DataSource হিসেবে ব্যবহার করা
JRResultSetDataSource jrResultSetDataSource = new JRResultSetDataSource(resultSet);
// রিপোর্ট ফিল করা
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, jrResultSetDataSource);
// PDF ফরম্যাটে রিপোর্ট এক্সপোর্ট করা
JasperExportManager.exportReportToPdfFile(jasperPrint, "dynamic_image_report.pdf");
System.out.println("Report with dynamic images generated successfully!");
} catch (SQLException | JRException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
$F{product_image}ডেটাবেসের একটি BLOB বা byte array ফিল্ডকে নির্দেশ করে, যা রিপোর্টে ডায়নামিক ইমেজ হিসেবে প্রদর্শিত হয়।- JDBC ResultSet থেকে image ফিল্ড JRResultSetDataSource ব্যবহার করে রিপোর্টে ইনজেক্ট করা হয়।
Graphics (Shapes) ব্যবহার করা:
JasperReports-এ Graphics (যেমন: লাইন, রেক্টেংগল, এবং সার্কেল) ব্যবহার করে আপনি রিপোর্টে গ্রাফিক্যাল উপাদান যোগ করতে পারেন।
Graphics Example (Drawing Shapes in JasperReports):
<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="graphicsReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<detail>
<band height="100">
<!-- Drawing a Line -->
<line>
<reportElement x="0" y="10" width="555" height="0"/>
<linePen lineWidth="1.0"/>
</line>
<!-- Drawing a Rectangle -->
<rectangle>
<reportElement x="50" y="30" width="200" height="50"/>
<pen lineWidth="1.0" lineColor="#000000"/>
</rectangle>
<!-- Drawing a Circle -->
<ellipse>
<reportElement x="300" y="30" width="50" height="50"/>
<pen lineWidth="1.0" lineColor="#000000"/>
<fill fillColor="#FF0000"/>
</ellipse>
</band>
</detail>
</jasperReport>
ব্যাখ্যা:
<line>,<rectangle>, এবং<ellipse>ট্যাগ ব্যবহার করে রিপোর্টে গ্রাফিক্যাল শেপ যেমন লাইন, রেক্টেংগল এবং সার্কেল আঁকা হয়েছে।<pen>এবং<fill>ব্যবহার করে লাইন এবং শেপের স্টাইল কাস্টমাইজ করা হয়েছে।- Static Images: ডিরেক্ট ফাইল পাথ দিয়ে নির্দিষ্ট ইমেজ ফাইল (যেমন লোগো) রিপোর্টে যোগ করতে পারেন।
- Dynamic Images: ডেটাবেস বা অন্য ডেটা সোর্স থেকে পরিবর্তনশীল ইমেজ ইনপুট হিসেবে রিপোর্টে প্রদর্শন করতে পারেন।
- Graphics: রিপোর্টে বিভিন্ন গ্রাফিক্যাল উপাদান (যেমন লাইন, রেক্টেংগল, সার্কেল) যোগ করা যেতে পারে, যা রিপোর্টকে আরও আকর্ষণীয় এবং তথ্যপূর্ণ করে তোলে।
JasperReports এ Static এবং Dynamic Images ব্যবহার করা রিপোর্টকে আরও সমৃদ্ধ এবং কার্যকর করতে সাহায্য করে, যা আপনাকে আরও ভাল ভিজ্যুয়াল রিপ্রেজেন্টেশন এবং ইউজার ইন্টারফেস প্রদান করবে।
JasperReports শুধুমাত্র রিপোর্ট তৈরি করার জন্যই নয়, বরং charts এবং complex data visualizations তৈরি করার জন্যও ব্যবহৃত হয়। JasperReports-এর মধ্যে অন্তর্নির্মিত অনেক ধরনের চার্ট এবং গ্রাফ রয়েছে, যা ডেটাকে সহজে বিশ্লেষণযোগ্য এবং ব্যবহারকারী-বান্ধবভাবে উপস্থাপন করতে সাহায্য করে। আপনি কাস্টম চার্ট ডিজাইন, ডাইনামিক ডেটা সোর্স থেকে গ্রাফ তৈরি এবং আরো অনেক ধরনের জটিল ডেটা ভিজ্যুয়ালাইজেশন করতে পারেন।
এই গাইডে, আমরা Custom Charts এবং Complex Data Visualization করতে JasperReports কিভাবে ব্যবহার করা যায় তা দেখব।
1. Custom Charts in JasperReports
JasperReports বিভিন্ন ধরনের চার্ট (যেমন: Bar Chart, Line Chart, Pie Chart, Time Series Chart) সমর্থন করে। এই চার্টগুলিকে কাস্টমাইজ করা যায় এবং ডেটার ভিজ্যুয়াল রিপ্রেজেন্টেশন তৈরি করা হয়।
Bar Chart Example
ধরা যাক, আপনি একটি Sales Report তৈরি করছেন এবং প্রতিটি Region এর বিক্রয়ের পরিমাণ একটি Bar Chart হিসাবে প্রদর্শন করতে চান।
Step 1: JRXML ফাইলে Chart তৈরি করা
<?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="SalesByRegionReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Define fields -->
<field name="region" class="java.lang.String"/>
<field name="salesAmount" class="java.lang.Double"/>
<!-- Chart Section -->
<summary>
<band height="200">
<chart>
<reportElement x="0" y="0" width="555" height="200"/>
<chartTitle><![CDATA[Sales by Region]]></chartTitle>
<chartPlot>
<categoryDataset>
<categorySeries>
<categorySeriesDataset>
<datasetParameter name="COLUMN_CATEGORY" class="java.lang.String"/>
<datasetParameter name="COLUMN_VALUE" class="java.lang.Double"/>
</categorySeriesDataset>
</categorySeries>
</categoryDataset>
</chartPlot>
</chart>
</band>
</summary>
</jasperReport>
ব্যাখ্যা:
- Category Dataset: ডেটার
regionফিল্ডকে ক্যাটেগরি হিসেবে এবংsalesAmountফিল্ডকে মান হিসেবে ব্যবহার করা হয়েছে। - Chart: Bar Chart তৈরি করা হয়েছে, যেখানে প্রতিটি region অনুযায়ী বিক্রয়ের মান প্রদর্শিত হবে।
Step 2: Data Source and Report Generation
আপনি যখন রিপোর্টটি তৈরি করবেন, তখন salesAmount এবং region ডেটা নিয়ে চার্টটি ডাইনামিকভাবে তৈরি হবে। ডেটাবেস বা JRBeanCollectionDataSource থেকে ডেটা নিয়ে এই রিপোর্টটি তৈরি করা যাবে।
Data Source Example (Java Code):
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class CustomChartExample {
public static void main(String[] args) {
try {
// Sample data
List<SalesData> salesDataList = new ArrayList<>();
salesDataList.add(new SalesData("North", 1000.0));
salesDataList.add(new SalesData("South", 1500.0));
salesDataList.add(new SalesData("East", 1200.0));
salesDataList.add(new SalesData("West", 800.0));
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(salesDataList);
// Report parameters
Map<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "Sales Report by Region");
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("SalesByRegionReport.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "sales_report_by_region.pdf");
System.out.println("Report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
// Sample data class
public static class SalesData {
private String region;
private Double salesAmount;
public SalesData(String region, Double salesAmount) {
this.region = region;
this.salesAmount = salesAmount;
}
public String getRegion() {
return region;
}
public Double getSalesAmount() {
return salesAmount;
}
}
}
2. Complex Data Visualization in JasperReports
JasperReports আরও জটিল ডেটা ভিজ্যুয়ালাইজেশন করতে পারে, যেমন Time Series Charts, Pie Charts, এবং Stacked Bar Charts।
Pie Chart Example
ধরা যাক, আপনি একটি Sales Distribution রিপোর্ট তৈরি করতে চান, যেখানে আপনার Region-wise sales ভিজ্যুয়ালাইজ করতে হবে Pie Chart ব্যবহার করে।
Step 1: JRXML ফাইলে Pie Chart তৈরি করা
<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="SalesPieChartReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<field name="region" class="java.lang.String"/>
<field name="salesAmount" class="java.lang.Double"/>
<!-- Pie Chart Section -->
<summary>
<band height="200">
<chart>
<reportElement x="0" y="0" width="555" height="200"/>
<chartTitle><![CDATA[Sales Distribution by Region]]></chartTitle>
<chartPlot>
<pieDataset>
<datasetParameter name="COLUMN_CATEGORY" class="java.lang.String"/>
<datasetParameter name="COLUMN_VALUE" class="java.lang.Double"/>
</pieDataset>
</chartPlot>
</chart>
</band>
</summary>
</jasperReport>
Step 2: Data Source and Report Generation for Pie Chart
এই কোডের মাধ্যমে আপনি Pie Chart তৈরি করতে পারেন, যেখানে প্রতি Region এর জন্য বিক্রয় পরিমাণ পী চার্টের সেগমেন্ট হিসেবে প্রদর্শিত হবে। আপনি SalesData ক্লাসের ডেটা ব্যবহার করে এই রিপোর্ট তৈরি করবেন।
Advanced Visualization with Custom Charts
- Time Series Chart:
- JasperReports টাইম সিরিজ ডেটা ভিজ্যুয়ালাইজ করতে পারে, যেখানে ডেটার time অথবা date অক্ষের উপর ভিত্তি করে গ্রাফ তৈরি হয়।
- Stacked Bar Chart:
- একাধিক ডেটা সিরিজ একসাথে Stacked Bar Chart হিসেবে দেখাতে পারে, যা ব্যবহারকারীকে একাধিক ভেরিয়েবল একটি গ্রাফে দেখতে সাহায্য করে।
- Multiple Pie Charts:
- একাধিক Pie Chart তৈরি করে আপনি ভিন্ন ভিন্ন বিভাগের বা ক্যাটেগরির ডেটা দেখাতে পারেন।
- Custom Charts: JasperReports কাস্টম চার্ট তৈরি করতে Bar Charts, Pie Charts, Line Charts ইত্যাদি ব্যবহার করতে সাহায্য করে, যা ডেটা ভিজ্যুয়ালাইজেশন এবং রিপোর্ট তৈরিতে কার্যকর।
- Complex Data Visualization: জটিল ডেটা ভিজ্যুয়ালাইজেশন যেমন Time Series, Stacked Charts, Multiple Pie Charts JasperReports-এর মাধ্যমে সহজেই তৈরি করা যায়।
- Data Driven Reports: ডেটার উপর ভিত্তি করে কাস্টম গ্রাফ তৈরি করা JasperReports এ অত্যন্ত সহজ এবং এটি রিপোর্ট তৈরির ক্ষেত্রে কার্যকরী হতে পারে।
JasperReports আপনাকে অনেক ধরণের কাস্টম গ্রাফ এবং ভিজ্যুয়াল উপাদান তৈরির জন্য জটিল ডেটা ভিজ্যুয়ালাইজেশন সমাধান প্রদান করে, যা একটি শক্তিশালী রিপোর্টিং সিস্টেম তৈরি করতে সাহায্য করে।
Read more