JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। আপনি যখন আপনার তৈরি করা চার্টটি ব্যবহারকারীদের কাছে পাঠাতে চান, তখন এটি PDF অথবা SVG ফরম্যাটে এক্সপোর্ট করা গুরুত্বপূর্ণ হতে পারে। PDF ফরম্যাট সাধারণত প্রিন্ট এবং শেয়ারিংয়ের জন্য ব্যবহৃত হয়, এবং SVG (Scalable Vector Graphics) ফরম্যাট ওয়েব বা স্কেলেবল গ্রাফিক্সের জন্য উপযুক্ত।
এই গাইডে, আমরা দেখব কিভাবে JFreeChart ব্যবহার করে চার্টকে PDF এবং SVG ফরম্যাটে এক্সপোর্ট করা যায়।
1. JFreeChart থেকে PDF ফরম্যাটে Chart Export করা
PDF ফরম্যাটে চার্ট এক্সপোর্ট করার জন্য, আমরা iText লাইব্রেরি ব্যবহার করতে পারি। iText একটি ওপেন সোর্স লাইব্রেরি যা PDF ফাইল তৈরি এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
1.1 Maven Dependency for iText
iText লাইব্রেরি ব্যবহার করার জন্য আপনার pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.14</version>
<scope>compile</scope>
</dependency>
এছাড়া, JFreeChart লাইব্রেরি ও আপনার প্রজেক্টে থাকতে হবে, যদি না থাকে তবে সেটিও Maven Dependency দিয়ে যোগ করতে হবে।
1.2 Chart Export to PDF Example
এখন, আমরা একটি Bar Chart তৈরি করে সেটিকে PDF ফরম্যাটে এক্সপোর্ট করবো।
উদাহরণ কোড:
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.*;
import java.io.FileOutputStream;
public class ChartToPDFExample {
public static JFreeChart createChart() {
// Dataset তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, "Series1", "Jan");
dataset.addValue(4.0, "Series1", "Feb");
dataset.addValue(3.0, "Series1", "Mar");
// Bar Chart তৈরি করা
return ChartFactory.createBarChart(
"Sales Over Time", // Chart Title
"Month", // X-Axis Label
"Sales", // Y-Axis Label
dataset // Dataset
);
}
public static void exportChartToPDF(JFreeChart chart, String fileName) {
// PDF Document তৈরি করা
Document document = new Document(PageSize.A4);
try {
// PdfWriter দ্বারা PDF ফাইল তৈরি
PdfWriter.getInstance(document, new FileOutputStream(fileName));
document.open();
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 300));
// ChartPanel থেকে Image তৈরি করা
chartPanel.getChart().createBufferedImage(500, 300);
// PDF ফাইলে চার্ট ইমেজ যুক্ত করা
document.add(com.itextpdf.text.Image.getInstance(chartPanel.getChart().createBufferedImage(500, 300), null));
} catch (Exception e) {
e.printStackTrace();
} finally {
document.close();
}
}
public static void main(String[] args) {
JFreeChart chart = createChart();
exportChartToPDF(chart, "chart.pdf"); // Export the chart to PDF
}
}
ব্যাখ্যা:
- JFreeChart: একটি সাধারণ Bar Chart তৈরি করা হয়েছে।
- iText: PDF ফাইল তৈরি করার জন্য iText লাইব্রেরি ব্যবহার করা হয়েছে।
PdfWriter.getInstance()মেথড দিয়ে PDF ফাইল তৈরি করা হয়। - ChartPanel: চার্টকে ইমেজে রূপান্তরিত করতে
createBufferedImage()মেথড ব্যবহার করা হয়েছে। - Image.getInstance(): চার্টের ইমেজটি PDF এ অ্যাড করা হয়েছে।
এই কোডটি একটি Bar Chart তৈরি করবে এবং সেটিকে PDF ফরম্যাটে chart.pdf নামে এক্সপোর্ট করবে।
2. JFreeChart থেকে SVG ফরম্যাটে Chart Export করা
SVG (Scalable Vector Graphics) হল একটি XML ভিত্তিক গ্রাফিক্স ফরম্যাট, যা স্কেলেবল এবং ওয়েবের জন্য উপযুক্ত। JFreeChart সরাসরি SVG এক্সপোর্ট করার জন্য সাপোর্ট প্রদান করে না, তবে আপনি SVGGraphics2D ব্যবহার করে চার্টটি SVG ফরম্যাটে রেন্ডার করতে পারেন।
2.1 SVGGraphics2D ব্যবহারের জন্য Maven Dependency
আপনার প্রজেক্টে SVG ফরম্যাটে এক্সপোর্ট করার জন্য batik লাইব্রেরি প্রয়োজন হবে। নিচে Maven Dependency দেওয়া হল:
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-svggen</artifactId>
<version>1.14</version>
</dependency>
2.2 Chart Export to SVG Example
এখন, আমরা Bar Chart তৈরি করে সেটিকে SVG ফরম্যাটে এক্সপোর্ট করবো।
উদাহরণ কোড:
import org.apache.batik.svggen.SVGGraphics2D;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import java.io.FileWriter;
import java.io.IOException;
public class ChartToSVGExample {
public static JFreeChart createChart() {
// Dataset তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(5.0, "Series1", "Jan");
dataset.addValue(7.0, "Series1", "Feb");
dataset.addValue(6.0, "Series1", "Mar");
// Bar Chart তৈরি করা
return ChartFactory.createBarChart(
"Sales Over Time", // Chart Title
"Month", // X-Axis Label
"Sales", // Y-Axis Label
dataset // Dataset
);
}
public static void exportChartToSVG(JFreeChart chart, String fileName) {
// SVGGraphics2D object তৈরি করা
SVGGraphics2D svgGen = new SVGGraphics2D(600, 400);
// Chart rendering to SVG
chart.draw(svgGen, new java.awt.Rectangle(600, 400));
// SVG output file তৈরি করা
try {
FileWriter writer = new FileWriter(fileName);
svgGen.stream(writer, true); // Write SVG to file
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JFreeChart chart = createChart();
exportChartToSVG(chart, "chart.svg"); // Export the chart to SVG
}
}
ব্যাখ্যা:
- SVGGraphics2D: এই ক্লাসটি SVG ফরম্যাটে গ্রাফিক্স আউটপুট করার জন্য ব্যবহৃত হয়।
- chart.draw(): এই মেথডের মাধ্যমে চার্টটিকে SVGGraphics2D অবজেক্টে রেন্ডার করা হয়েছে।
- stream():
stream()মেথডটি SVG ডেটা একটি ফাইলে লেখার জন্য ব্যবহৃত হয়েছে।
এই কোডটি একটি Bar Chart তৈরি করবে এবং সেটিকে SVG ফরম্যাটে chart.svg নামে এক্সপোর্ট করবে।
সারাংশ
JFreeChart ব্যবহার করে আপনি PDF এবং SVG ফরম্যাটে চার্ট এক্সপোর্ট করতে পারেন। PDF ফরম্যাটে এক্সপোর্ট করার জন্য iText লাইব্রেরি ব্যবহার করা হয়, যা PDF ফাইল তৈরি করতে সহায়তা করে। SVG ফরম্যাটে এক্সপোর্ট করার জন্য SVGGraphics2D ব্যবহৃত হয়, যা চার্টটিকে SVG ফরম্যাটে রেন্ডার করে একটি ফাইলে সেভ করতে সাহায্য করে। এই দুটি ফরম্যাটে চার্ট এক্সপোর্টের মাধ্যমে আপনি আপনার চার্ট সহজেই শেয়ার এবং প্রিন্ট করতে পারবেন।
Read more