JFreeChart লাইব্রেরি ব্যবহার করে আপনি সহজেই একটি Chart প্রিন্ট করতে পারেন। এটি করতে হলে Printable Interface এবং PrinterJob ব্যবহার করা হয়, যা Java প্রিন্টিং API-র অংশ। Printable Interface এর মাধ্যমে আপনি একটি JFreeChart এর গ্রাফিক্স বা চিত্র প্রিন্ট করতে পারেন।
এখানে আমরা দেখবো কিভাবে একটি Chart প্রিন্ট করা যায় এবং Printable Interface কিভাবে ব্যবহার করা হয়।
১. Chart Print করা: Printable Interface ব্যবহার করা
Printable Interface ব্যবহার করে আপনি JFreeChart এর প্রিন্টিং কার্যকলাপ নিয়ন্ত্রণ করতে পারেন। এই ইন্টারফেসের print মেথড চার্টের কন্টেন্ট প্রিন্ট করার জন্য ব্যবহার করা হয়। এটি PrinterJob-এর সাথে কাজ করে, যা গ্রাফিক্স প্রিন্ট করার জন্য জাভা API-তে ব্যবহৃত হয়।
উদাহরণ: JFreeChart প্রিন্ট করা
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.print.PrinterException;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
public class ChartPrintExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Series1", "Category1");
dataset.addValue(20, "Series1", "Category2");
dataset.addValue(30, "Series1", "Category3");
// Chart তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Sales for the First Quarter", // Chart Title
"Month", // X-Axis Label
"Sales", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot Orientation
true, // Include Legend
true, // Tooltips
false // URLs
);
// Chart Panel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// PrinterJob তৈরি এবং প্রিন্টিং প্রক্রিয়া
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setPrintable(new Printable() {
@Override
public int print(java.awt.Graphics graphics, java.awt.print.PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex > 0) {
return Printable.NO_SUCH_PAGE;
}
// Chart এর গ্রাফিক্স প্রিন্ট করা
graphics.translate((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY());
chart.draw(graphics, pageFormat.createGraphics());
return Printable.PAGE_EXISTS;
}
});
// Print ডায়ালগ ওপেন করা
boolean isPrinted = printerJob.printDialog();
if (isPrinted) {
try {
printerJob.print(); // প্রিন্ট করা
} catch (PrinterException e) {
e.printStackTrace();
}
}
// JFrame এ চার্ট প্রদর্শন
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- Printable Interface: এখানে
Printableইন্টারফেসেরprint()মেথডটি ওভাররাইড করা হয়েছে, যা JFreeChart এর গ্রাফিক্স প্রিন্ট করার জন্য ব্যবহৃত হয়। - PrinterJob:
PrinterJobব্যবহার করে প্রিন্ট ডায়ালগ উন্মুক্ত করা হয়, এবং ব্যবহারকারী যদি প্রিন্ট করতে চান তবে প্রিন্ট মেথড চালানো হয়। - Chart.draw(): প্রিন্টিং গ্রাফিক্সে চার্টটি ড্র করার জন্য draw() মেথড ব্যবহার করা হয়েছে, যা প্রিন্টারকে চার্টের কন্টেন্ট রেন্ডার করতে সহায়তা করে।
২. Printable Interface এবং Page Format
PageFormat ব্যবহার করে প্রিন্টের পেজ সাইজ এবং মARGINS কাস্টমাইজ করা যায়। এটি আপনাকে প্রিন্টের সঠিক অবস্থান নির্ধারণ করতে সাহায্য করে। যেমন আপনি pageFormat ব্যবহার করে পেজের সীমানা (margins) এবং চার্টের অবস্থান নির্ধারণ করতে পারেন।
PageFormat pageFormat = printerJob.defaultPage();
pageFormat.setOrientation(PageFormat.LANDSCAPE); // পেজের অরিয়েন্টেশন (landscape বা portrait)
এছাড়া, PrinterJob ব্যবহার করে নির্দিষ্ট প্রিন্টার সিলেক্ট করা এবং সেটি কনফিগার করাও সম্ভব।
৩. Chart Print Preview এবং Custom Settings
আপনি JFreeChart এর প্রিন্টিং ফিচারটি কাস্টমাইজ করতে পারেন, যেমন প্রিন্টের আগে একটি Print Preview দেখানো অথবা প্রিন্টার সেটিংস পরিবর্তন করা।
উদাহরণ: Print Preview যোগ করা
import javax.swing.*;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class PrintPreviewExample {
public static void main(String[] args) {
// Chart তৈরি করা
JFreeChart chart = createChart(); // আপনার Chart তৈরি করার কোড
// PrinterJob এবং PrintPreview তৈরি করা
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setPrintable(new Printable() {
@Override
public int print(java.awt.Graphics graphics, java.awt.print.PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex > 0) {
return Printable.NO_SUCH_PAGE;
}
// গ্রাফিক্স রেন্ডার করা
chart.draw(graphics, pageFormat.createGraphics());
return Printable.PAGE_EXISTS;
}
});
// Print Preview Dialog
if (printerJob.printDialog()) {
try {
printerJob.print(); // প্রিন্টিং শুরু করা
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
}
৪. Custom Print Settings
Custom Print Settings এর মাধ্যমে আপনি Print Dialog কাস্টমাইজ করে আপনার প্রিন্টার এবং সেটিংস আরও নিয়ন্ত্রণ করতে পারেন।
printerJob.setCopies(2); // দুই কপি প্রিন্ট করা
printerJob.setPrintService(printerService); // নির্দিষ্ট প্রিন্টার সেট করা
এছাড়া, Print Settings কাস্টমাইজ করতে আপনি PageFormat বা PrinterJob ব্যবহার করতে পারেন যাতে আপনি পেজ সাইজ, মার্জিন এবং রেজোলিউশন ইত্যাদি নিয়ন্ত্রণ করতে পারেন।
সারসংক্ষেপ
JFreeChart এর মাধ্যমে Printable Interface ব্যবহার করে আপনি সহজেই আপনার Chart প্রিন্ট করতে পারেন। আপনি PrinterJob এবং Printable Interface ব্যবহার করে ডেটা চার্ট প্রিন্ট করতে পারেন এবং প্রিন্ট সেটিংস কাস্টমাইজ করতে পারেন। PageFormat ব্যবহার করে আপনি পেজের আকার এবং চার্টের অবস্থান নিয়ন্ত্রণ করতে পারবেন, এবং Print Preview যোগ করার মাধ্যমে ব্যবহারকারীরা প্রিন্টিং আগে প্রিভিউ দেখতে পারবেন। এই ফিচারগুলি ডেটা ভিজুয়ালাইজেশন সফটওয়্যারের প্রিন্টিং প্রক্রিয়া আরও দক্ষ এবং কাস্টমাইজযোগ্য করে তোলে।
Read more