Chart Export এবং Printing

জেফ্রিচার্ট (JFreeChart) - Big Data and Analytics

425

JFreeChart ব্যবহার করে আপনি আপনার তৈরি করা চার্টকে বিভিন্ন ফরম্যাটে Export বা Save করতে পারেন এবং সরাসরি Print করতে পারেন। এই ফিচারগুলি ব্যবহারকারীদের জন্য গুরুত্বপূর্ণ, কারণ এর মাধ্যমে তারা চার্টগুলোকে বিভিন্ন ধরনের মিডিয়ায় রূপান্তর করতে পারেন, যেমন PNG, JPEG, PDF, SVG ইত্যাদি, এবং প্রয়োজনে প্রিন্ট করে ব্যবহার করতে পারেন।

এখানে আমরা দেখব Chart Export এবং Chart Printing এর দুটি মূল বিষয়।


১. Chart Export (Chart কে Image বা File হিসেবে Export করা)

JFreeChart এ Chart Export এর মাধ্যমে আপনি আপনার চার্টকে একটি নির্দিষ্ট ফরম্যাটে (যেমন PNG, JPEG, PDF, SVG) এক্সপোর্ট করতে পারেন। এটি ChartUtilities ক্লাসের মাধ্যমে করা হয়।

উদাহরণ: Chart Export (PNG ফরম্যাটে Export করা)

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.io.File;
import java.io.IOException;

public class ChartExportExample {
    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");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Example", // চার্টের শিরোনাম
                "Category",          // এক্স-অক্ষের নাম
                "Value",             // ওয়াই-অক্ষের নাম
                dataset,             // ডেটাসেট
                org.jfree.chart.plot.PlotOrientation.VERTICAL,
                true,                // লেজেন্ড প্রদর্শন
                true,                // টুলটিপস
                false                // URL সমর্থন
        );

        // Chart Export (PNG) করার জন্য
        try {
            File file = new File("bar_chart.png");
            ChartUtilities.saveChartAsPNG(file, chart, 600, 400); // Chart কে PNG ফরম্যাটে Save করা
            System.out.println("Chart exported as PNG!");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // ChartPanel তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // JFrame এ চার্ট প্রদর্শন
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • ChartUtilities.saveChartAsPNG(file, chart, width, height) ব্যবহার করা হয়েছে যাতে চার্টটি PNG ফরম্যাটে সেভ করা যায়। আপনি অন্যান্য ফরম্যাটেও এক্সপোর্ট করতে পারেন, যেমন JPEG, PDF, বা SVG

২. Chart Printing (Chart Print করা)

JFreeChart এ Chart Printing এর মাধ্যমে আপনি সরাসরি চার্টটি Printer এ প্রিন্ট করতে পারেন। এটি ChartPanel এবং PrinterJob ব্যবহার করে করা যায়।

উদাহরণ: Chart Printing (Chart কে Print করা)

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.awt.print.PrinterJob;

public class ChartPrintingExample {
    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");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Example", // চার্টের শিরোনাম
                "Category",          // এক্স-অক্ষের নাম
                "Value",             // ওয়াই-অক্ষের নাম
                dataset,             // ডেটাসেট
                org.jfree.chart.plot.PlotOrientation.VERTICAL,
                true,                // লেজেন্ড প্রদর্শন
                true,                // টুলটিপস
                false                // URL সমর্থন
        );

        // ChartPanel তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // JFrame এ চার্ট প্রদর্শন
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(chartPanel);
        frame.pack();
        frame.setVisible(true);

        // Chart Print করার জন্য PrinterJob ব্যবহার করা
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        printerJob.setPrintable(chartPanel);
        if (printerJob.printDialog()) {
            try {
                printerJob.print();
                System.out.println("Chart printed successfully!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

ব্যাখ্যা:

  • PrinterJob.getPrinterJob() ব্যবহার করে একটি PrinterJob তৈরি করা হয় যা প্রিন্টিং এর জন্য ব্যবহৃত হয়।
  • setPrintable() মেথডে ChartPanel সেট করা হয়, যা চার্টের গ্রাফিক্যাল উপস্থাপনা প্রিন্ট করবে।
  • printDialog() ব্যবহার করে প্রিন্ট ডায়ালগ প্রদর্শন করা হয়, যেখানে ব্যবহারকারী প্রিন্টার নির্বাচন করতে পারবেন।
  • printerJob.print() দিয়ে চূড়ান্ত প্রিন্টিং করা হয়।

৩. Chart Export এবং Printing এর অন্যান্য ফিচার

  • PNG, JPEG, PDF, SVG ফরম্যাটে Export: JFreeChart এর মাধ্যমে আপনি চার্টকে সহজেই PNG, JPEG, PDF, এবং SVG ফরম্যাটে এক্সপোর্ট করতে পারেন। এর জন্য ChartUtilities ব্যবহার করা হয়।
  • Custom Page Layout for Printing: আপনি যদি চাচ্ছেন প্রিন্টের জন্য Custom Layout তৈরি করতে, আপনি PageFormat এবং Printable ইন্টারফেস ব্যবহার করে প্রিন্টের পৃষ্ঠা আকার এবং কনটেন্ট কাস্টমাইজ করতে পারবেন।

    PageFormat pageFormat = printerJob.defaultPage();
    printerJob.setPrintable(printable, pageFormat);
    
  • Scaling and DPI: Chart এর স্কেলিং এবং DPI কাস্টমাইজ করতে পারেন, যেমন dpi=300 ব্যবহার করে প্রিন্টের স্পষ্টতা উন্নত করা সম্ভব।
  • Rotating or Customizing Orientation: আপনি চাইলে প্রিন্টের অরিয়েন্টেশন পরিবর্তন করতে পারেন, যেমন Landscape বা Portrait মোডে প্রিন্ট করা।

সারসংক্ষেপ

JFreeChart ব্যবহার করে চার্ট Export এবং Print করা খুবই সহজ এবং কার্যকরী। আপনি ChartUtilities ব্যবহার করে চার্টের PNG, JPEG, PDF, SVG ইত্যাদি ফরম্যাটে এক্সপোর্ট করতে পারেন। এছাড়াও, PrinterJob ব্যবহার করে সরাসরি চার্ট প্রিন্ট করতে পারেন, যা পেশাদার রিপোর্ট তৈরি করার জন্য খুবই উপযোগী। Custom Page Layout এবং Scaling এর মাধ্যমে আপনার প্রিন্টের গুণগত মান এবং ডিজাইন কাস্টমাইজ করা সম্ভব।

Content added By

JFreeChart লাইব্রেরি ব্যবহার করে তৈরি করা চার্টগুলোকে বিভিন্ন ইমেজ ফরম্যাটে (যেমন PNG, JPEG) export করা সম্ভব। এটি আপনার চার্টের ছবি তৈরি করতে সাহায্য করে, যা পরে প্রিন্টিং, ওয়েবসাইটে ব্যবহৃত, বা অন্য কোনও গ্রাফিক্স সফটওয়্যারে ব্যবহৃত হতে পারে। JFreeChart চার্ট ইমেজ আউটপুটের জন্য ChartUtilities ক্লাস সরবরাহ করে, যা সহজেই এক্সপোর্ট করতে সহায়ক।

নিচে JFreeChart কে PNG এবং JPEG ফরম্যাটে export করার জন্য প্রয়োজনীয় পদ্ধতি এবং উদাহরণ কোড দেয়া হলো।


JFreeChart কে PNG বা JPEG হিসেবে Export করা

ChartUtilities.saveChartAsPNG()

ChartUtilities.saveChartAsPNG() মেথড ব্যবহার করে আপনি আপনার JFreeChart কে PNG ফরম্যাটে সেভ করতে পারেন। এটি চার্টের ছবি তৈরি করে এবং আপনার নির্দিষ্ট ফোল্ডারে সেভ করে দেয়।

PNG Export উদাহরণ

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.io.File;
import java.io.IOException;

public class ExportPNGExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Category 1", "Jan");
        dataset.addValue(20, "Category 1", "Feb");
        dataset.addValue(30, "Category 1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales for the First Quarter",   // চার্টের শিরোনাম
                "Month",                         // এক্স-অক্ষের নাম
                "Sales (in units)",              // ওয়াই-অক্ষের নাম
                dataset,                         // ডেটাসেট
                org.jfree.chart.plot.PlotOrientation.VERTICAL, // প্লট অরিয়েন্টেশন
                true,                            // লেজেন্ড দেখানো
                true,                            // টুলটিপস
                false                            // URL সমর্থন
        );

        // PNG ফরম্যাটে চার্ট সেভ করা
        try {
            File outputFile = new File("chart.png");
            ChartUtilities.saveChartAsPNG(outputFile, chart, 800, 600);  // আউটপুট ফাইল, চার্ট, প্রস্থ, উচ্চতা
            System.out.println("Chart saved as PNG file.");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // চার্ট প্যানেল তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // JFrame এ চার্ট প্রদর্শন
        JFrame frame = new JFrame();
        frame.setContentPane(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • ChartUtilities.saveChartAsPNG() মেথডের মাধ্যমে চার্টটি PNG ফরম্যাটে সংরক্ষণ করা হচ্ছে।
  • 800x600 পিক্সেল আকারে চার্টটি সেভ করা হবে।

JPEG Export উদাহরণ

JFreeChart কে JPEG ফরম্যাটে এক্সপোর্ট করতে ChartUtilities.saveChartAsJPEG() মেথড ব্যবহার করা হয়।

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.io.File;
import java.io.IOException;

public class ExportJPEGExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Category 1", "Jan");
        dataset.addValue(20, "Category 1", "Feb");
        dataset.addValue(30, "Category 1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales for the First Quarter",   // চার্টের শিরোনাম
                "Month",                         // এক্স-অক্ষের নাম
                "Sales (in units)",              // ওয়াই-অক্ষের নাম
                dataset,                         // ডেটাসেট
                org.jfree.chart.plot.PlotOrientation.VERTICAL, // প্লট অরিয়েন্টেশন
                true,                            // লেজেন্ড দেখানো
                true,                            // টুলটিপস
                false                            // URL সমর্থন
        );

        // JPEG ফরম্যাটে চার্ট সেভ করা
        try {
            File outputFile = new File("chart.jpg");
            ChartUtilities.saveChartAsJPEG(outputFile, chart, 800, 600);  // আউটপুট ফাইল, চার্ট, প্রস্থ, উচ্চতা
            System.out.println("Chart saved as JPEG file.");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // চার্ট প্যানেল তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // JFrame এ চার্ট প্রদর্শন
        JFrame frame = new JFrame();
        frame.setContentPane(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • ChartUtilities.saveChartAsJPEG() মেথডের মাধ্যমে JPEG ফরম্যাটে চার্টটি সেভ করা হচ্ছে।
  • 800x600 পিক্সেল আকারে JPEG ফাইল সেভ হবে।

JFreeChart এ অন্যান্য এক্সপোর্ট অপশন

  • PDF Export: আপনি iText লাইব্রেরি ব্যবহার করে JFreeChart কে PDF ফরম্যাটেও এক্সপোর্ট করতে পারেন। এটি ব্যবহারের জন্য iText লাইব্রেরি যোগ করতে হবে।
  • SVG Export: SVG ফরম্যাটেও এক্সপোর্ট করা যায়, যা Scalable Vector Graphics এর জন্য উপযুক্ত।

সারসংক্ষেপ

JFreeChart কে PNG এবং JPEG ফরম্যাটে export করা খুবই সহজ। ChartUtilities.saveChartAsPNG() এবং ChartUtilities.saveChartAsJPEG() মেথড ব্যবহার করে আপনি আপনার তৈরি করা চার্টগুলিকে চিত্র আকারে সংরক্ষণ করতে পারবেন। এই বৈশিষ্ট্যটি ডেটা ভিজুয়ালাইজেশনকে সহজে শেয়ার করা বা প্রিন্ট করা সম্ভব করে তোলে।

Content added By

JFreeChart লাইব্রেরি আপনাকে চার্ট তৈরি করার পরে সেটি বিভিন্ন ফরম্যাটে Export (রপ্তানি) করার সুবিধা দেয়, যেমন PDF এবং SVGPDF এবং SVG হল দুটি জনপ্রিয় ফরম্যাট যা ডেটা ভিজুয়ালাইজেশন এবং রিপোর্টিং-এ ব্যবহৃত হয়। JFreeChart এই ফরম্যাটগুলোতে চার্ট এক্সপোর্ট করতে সক্ষম, যা রিপোর্ট বা ডেটা প্রেজেন্টেশন তৈরির জন্য উপকারী।

PDF এ Chart Export করা

JFreeChart লাইব্রেরির মাধ্যমে PDF ফরম্যাটে চার্ট এক্সপোর্ট করতে iText লাইব্রেরি ব্যবহার করতে হয়। iText একটি ওপেন-সোর্স লাইব্রেরি যা Java-তে PDF ফাইল তৈরি করার জন্য ব্যবহৃত হয়।

iText লাইব্রেরি ডাউনলোড:

iText লাইব্রেরি Maven বা JAR ফাইলের মাধ্যমে যোগ করা যেতে পারে।

Maven Dependency:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>7.2.5</version>
</dependency>

JAR ফাইল ডাউনলোড লিংক:
iText Official

PDF এ Chart Export করার উদাহরণ:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class PDFExportExample {
    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");

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Example",   // Chart Title
                "Category",            // X-Axis Label
                "Value",               // Y-Axis Label
                dataset,               // Dataset
                PlotOrientation.VERTICAL, // Chart Orientation
                true,                  // Legend
                true                   // Tooltips
        );

        // BufferedImage তৈরি করা
        BufferedImage chartImage = chart.createBufferedImage(600, 400);

        try {
            // PDF ডকুমেন্ট তৈরি
            Document document = new Document();
            PdfWriter.getInstance(document, new FileOutputStream("chart_example.pdf"));
            document.open();

            // Chart Image PDF এ যোগ করা
            ImageIO.write(chartImage, "PNG", new File("chart_image.png"));
            com.itextpdf.text.Image pdfImage = com.itextpdf.text.Image.getInstance("chart_image.png");
            document.add(pdfImage);

            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

কোড ব্যাখ্যা:

  1. JFreeChart দিয়ে একটি সাধারণ Bar Chart তৈরি করা হয়েছে।
  2. BufferedImage ব্যবহার করে চার্টের একটি চিত্র তৈরি করা হয়েছে।
  3. iText লাইব্রেরি ব্যবহার করে PDF ডকুমেন্টে চার্ট ইমেজ যুক্ত করা হয়েছে এবং সেটি একটি ফাইল হিসেবে সেভ করা হয়েছে।

SVG এ Chart Export করা

SVG (Scalable Vector Graphics) একটি ভেক্টর গ্রাফিক্স ফরম্যাট যা অনেক রেজুলেশন-এ স্পষ্ট থাকতে পারে এবং ডেটার উপস্থাপনা আরও সুন্দর ও বোধগম্য করে। JFreeChart সরাসরি SVG ফরম্যাটে এক্সপোর্ট করার জন্য JFreeSVG লাইব্রেরি ব্যবহার করতে হয়।

JFreeSVG লাইব্রেরি ডাউনলোড:

JFreeSVG লাইব্রেরি JAR ফাইল আকারে ডাউনলোড করা যেতে পারে:

SVG এ Chart Export করার উদাহরণ:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.svg.SVGGraphics2D;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class SVGExportExample {
    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");

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Example",   // Chart Title
                "Category",            // X-Axis Label
                "Value",               // Y-Axis Label
                dataset                // Dataset
        );

        // SVGGraphics2D তৈরি করা
        SVGGraphics2D svgGenerator = new SVGGraphics2D(600, 400);
        chart.draw(svgGenerator, new java.awt.Rectangle(600, 400));

        // SVG ফাইল তৈরি করা
        try {
            FileWriter out = new FileWriter(new File("chart_example.svg"));
            svgGenerator.stream(out, true);
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

কোড ব্যাখ্যা:

  1. JFreeChart দিয়ে একটি সাধারণ Bar Chart তৈরি করা হয়েছে।
  2. SVGGraphics2D ব্যবহার করে চার্টের ভেক্টর ইমেজ তৈরি করা হয়েছে।
  3. FileWriter এর মাধ্যমে SVG ফরম্যাটে সেই ইমেজ একটি ফাইলে সেভ করা হয়েছে।

সারসংক্ষেপ

JFreeChart লাইব্রেরি ব্যবহার করে আপনি সহজেই আপনার তৈরি চার্টগুলো PDF এবং SVG ফরম্যাটে এক্সপোর্ট করতে পারবেন। PDF এক্সপোর্টের জন্য iText লাইব্রেরি এবং SVG এক্সপোর্টের জন্য JFreeSVG লাইব্রেরি ব্যবহার করা হয়। এই এক্সপোর্ট সুবিধার মাধ্যমে আপনি ডেটা ভিজুয়ালাইজেশনকে বিভিন্ন রূপে সংরক্ষণ এবং শেয়ার করতে পারেন।

Content added By

JFreeChart ব্যবহার করে আপনি সহজেই আপনার চার্টগুলি উচ্চ-রেজোলিউশনের ফরম্যাটে এক্সপোর্ট করতে পারেন। High-Resolution Chart Export সাধারণত পেশাদারী রিপোর্ট, পাবলিশিং, অথবা প্রিন্টিং এর জন্য প্রয়োজন হয়। JFreeChart বিভিন্ন ফরম্যাটে যেমন PNG, JPEG, SVG, PDF ইত্যাদি চার্ট এক্সপোর্ট করার জন্য সক্ষম।

এই গাইডে, আমরা JFreeChart ব্যবহার করে high-resolution charts export করার কয়েকটি পদ্ধতি আলোচনা করবো।


High-Resolution Chart Export করার পদ্ধতি

JFreeChart ব্যবহার করে চার্ট এক্সপোর্ট করার জন্য ChartUtilities ক্লাসটি ব্যবহৃত হয়। এটি চার্টের গুণমান (Quality) এবং রেজোলিউশন কাস্টমাইজ করতে সহায়তা করে। নিচে কয়েকটি জনপ্রিয় এক্সপোর্ট ফরম্যাট এবং পদ্ধতি দেওয়া হলো।


১. PNG Format Export (High-Resolution)

PNG ফরম্যাটে চার্ট এক্সপোর্ট করার জন্য ChartUtilities.saveChartAsPNG() পদ্ধতি ব্যবহার করা হয়। PNG ফরম্যাট প্রিন্টিং এবং ওয়েব পেজে ব্যবহারের জন্য উপযুক্ত।

উদাহরণ: PNG ফরম্যাটে High-Resolution Export

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.io.File;
import java.io.IOException;

public class HighResolutionPNGExport {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Category1", "Jan");
        dataset.addValue(4.0, "Category1", "Feb");
        dataset.addValue(3.0, "Category1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales for the First Quarter",  // চার্টের শিরোনাম
                "Month",                       // এক্স-অক্ষের নাম
                "Sales (in units)",            // ওয়াই-অক্ষের নাম
                dataset                        // ডেটাসেট
        );

        // চার্টের রেজোলিউশন সেট করা
        int width = 1000;   // উচ্চ রেজোলিউশন: 1000px
        int height = 800;   // উচ্চ রেজোলিউশন: 800px

        // চার্ট এক্সপোর্ট করা PNG ফরম্যাটে
        try {
            ChartUtilities.saveChartAsPNG(new File("high_resolution_chart.png"), chart, width, height);
            System.out.println("Chart has been saved as high-resolution PNG.");
        } catch (IOException e) {
            System.err.println("Error while saving chart.");
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • ChartUtilities.saveChartAsPNG(): এই মেথডটি চার্টটিকে নির্দিষ্ট ফাইল পাথে PNG ফরম্যাটে সংরক্ষণ করবে।
  • width এবং height এর মান বৃদ্ধি করে চার্টের রেজোলিউশন বাড়ানো হয়েছে (এখানে 1000px x 800px উচ্চ রেজোলিউশন দিয়ে রাখা হয়েছে)।

২. JPEG Format Export (High-Resolution)

JPEG ফরম্যাটে এক্সপোর্ট করার জন্য একই পদ্ধতি ব্যবহার করা হয় তবে এখানে ChartUtilities.saveChartAsJPEG() মেথড ব্যবহার করা হবে।

উদাহরণ: JPEG ফরম্যাটে High-Resolution Export

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.io.File;
import java.io.IOException;

public class HighResolutionJPEGExport {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Category1", "Jan");
        dataset.addValue(4.0, "Category1", "Feb");
        dataset.addValue(3.0, "Category1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales for the First Quarter",  // চার্টের শিরোনাম
                "Month",                       // এক্স-অক্ষের নাম
                "Sales (in units)",            // ওয়াই-অক্ষের নাম
                dataset                        // ডেটাসেট
        );

        // চার্টের রেজোলিউশন সেট করা
        int width = 1000;   // উচ্চ রেজোলিউশন: 1000px
        int height = 800;   // উচ্চ রেজোলিউশন: 800px

        // চার্ট এক্সপোর্ট করা JPEG ফরম্যাটে
        try {
            ChartUtilities.saveChartAsJPEG(new File("high_resolution_chart.jpg"), chart, width, height);
            System.out.println("Chart has been saved as high-resolution JPEG.");
        } catch (IOException e) {
            System.err.println("Error while saving chart.");
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • ChartUtilities.saveChartAsJPEG(): JPEG ফরম্যাটে এক্সপোর্ট করতে এই মেথড ব্যবহার করা হয়।
  • width এবং height মানের মাধ্যমে রেজোলিউশন কাস্টমাইজ করা হয়।

৩. SVG Format Export

SVG (Scalable Vector Graphics) হলো একটি ভেক্টর ফরম্যাট যা উচ্চ-মানের গ্রাফিক্স প্রদান করে এবং স্কেলযোগ্য। এটি বিশেষত প্রিন্টিং বা ওয়েবসাইটে ব্যবহারের জন্য উপযুক্ত।

উদাহরণ: SVG ফরম্যাটে High-Resolution Export

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.plot.PlotOrientation;

import javax.swing.*;
import java.io.File;
import java.io.IOException;

public class HighResolutionSVGExport {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Category1", "Jan");
        dataset.addValue(4.0, "Category1", "Feb");
        dataset.addValue(3.0, "Category1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales for the First Quarter",  // চার্টের শিরোনাম
                "Month",                       // এক্স-অক্ষের নাম
                "Sales (in units)",            // ওয়াই-অক্ষের নাম
                dataset,                       // ডেটাসেট
                PlotOrientation.VERTICAL,      // প্লট অরিয়েন্টেশন
                true,                          // লেজেন্ড প্রদর্শন
                true,                          // টুলটিপস
                false                          // URL সমর্থন
        );

        // SVG ফরম্যাটে এক্সপোর্ট করার জন্য
        try {
            File file = new File("high_resolution_chart.svg");
            ChartUtilities.saveChartAsSVG(file, chart, 1000, 800);
            System.out.println("Chart has been saved as high-resolution SVG.");
        } catch (IOException e) {
            System.err.println("Error while saving chart.");
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • ChartUtilities.saveChartAsSVG(): এই মেথডটি SVG ফরম্যাটে চার্ট সেভ করতে ব্যবহৃত হয়।
  • width এবং height এর মাধ্যমে রেজোলিউশন কাস্টমাইজ করা হয়।

৪. PDF Format Export

PDF ফরম্যাটে চার্ট এক্সপোর্ট করার জন্য, iText লাইব্রেরি বা JFreeChart এর PDF রেন্ডারিং এর সুবিধা ব্যবহার করা যায়।

উদাহরণ: PDF ফরম্যাটে High-Resolution Export

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.data.category.DefaultCategoryDataset;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class HighResolutionPDFExport {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Category1", "Jan");
        dataset.addValue(20, "Category1", "Feb");
        dataset.addValue(30, "Category1", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales for the First Quarter",  // Chart Title
                "Month",                       // X-Axis Label
                "Sales (in units)",            // Y-Axis Label
                dataset                        // Dataset
        );

        // PDF ফরম্যাটে চার্ট এক্সপোর্ট
        Document document = new Document();
        try {
            PdfWriter.getInstance(document, new FileOutputStream("high_resolution_chart.pdf"));
            document.open();
            ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
            // PDF তে চার্ট যোগ করা
            // iText লাইব্রেরি ব্যবহার করে PDF ফাইলে চার্ট রেন্ডার করতে হবে।
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
    }
}

ব্যাখ্যা:

  • iText লাইব্রেরি ব্যবহার করে PDF ফরম্যাটে চার্ট রেন্ডার করা হয়। এটি একটু কাস্টমাইজেশন এবং প্রয়োগের মাধ্যমে করা যেতে পারে।

সারসংক্ষেপ

JFreeChart ব্যবহার করে high-resolution chart export করা সহজ। আপনি PNG, JPEG, SVG, এবং PDF ফরম্যাটে চার্ট এক্সপোর্ট করতে পারেন। উচ্চ রেজোলিউশনের চার্ট তৈরি করার জন্য আপনাকে চার্টের width এবং height কাস্টমাইজ করতে হবে এবং ChartUtilities ক্লাসের মাধ্যমে সেগুলো সেভ করতে হবে।

Content added By

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);
    }
}

ব্যাখ্যা:

  1. Printable Interface: এখানে Printable ইন্টারফেসের print() মেথডটি ওভাররাইড করা হয়েছে, যা JFreeChart এর গ্রাফিক্স প্রিন্ট করার জন্য ব্যবহৃত হয়।
  2. PrinterJob: PrinterJob ব্যবহার করে প্রিন্ট ডায়ালগ উন্মুক্ত করা হয়, এবং ব্যবহারকারী যদি প্রিন্ট করতে চান তবে প্রিন্ট মেথড চালানো হয়।
  3. 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 যোগ করার মাধ্যমে ব্যবহারকারীরা প্রিন্টিং আগে প্রিভিউ দেখতে পারবেন। এই ফিচারগুলি ডেটা ভিজুয়ালাইজেশন সফটওয়্যারের প্রিন্টিং প্রক্রিয়া আরও দক্ষ এবং কাস্টমাইজযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...