পিডিএফবক্স (PDFBox) Java লাইব্রেরি মূলত পিডিএফ ডকুমেন্ট তৈরি এবং ম্যানিপুলেশন করার জন্য ব্যবহৃত হয়, তবে এর মাধ্যমে পিডিএফ ফাইল প্রিন্ট এবং ভিউও করার কিছু সীমিত ফিচারও সরবরাহ করা যায়। এই টিউটোরিয়ালে, আমরা পিডিএফ ফাইল প্রিন্ট এবং ভিউ করার কিছু সাধারণ পদ্ধতি আলোচনা করব।
পিডিএফ ফাইল প্রিন্টিং
পিডিএফবক্স Java API তে সরাসরি প্রিন্টিংয়ের জন্য কোনো মেথড সরবরাহ করা হয় না। তবে, Java প্রোগ্রামে পিডিএফ ফাইল প্রিন্ট করার জন্য PDFRenderer ক্লাস এবং Java এর বিল্ট-ইন PrinterJob ক্লাস ব্যবহার করা যেতে পারে।
PDFRenderer ক্লাস ব্যবহার করে পিডিএফ ডকুমেন্টের প্রতিটি পৃষ্ঠা রেন্ডার করা যেতে পারে এবং তারপর PrinterJob ক্লাস দিয়ে সেই পৃষ্ঠাগুলি প্রিন্ট করা যায়।
পিডিএফ ফাইল প্রিন্ট করার উদাহরণ:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.print.*;
import java.awt.print.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PDFPrintingExample {
public static void main(String[] args) {
try {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("example.pdf"));
// পিডিএফ রেন্ডার করার জন্য PDFRenderer তৈরি
PDFRenderer pdfRenderer = new PDFRenderer(document);
// প্রিন্টার জব তৈরি করা
PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName("Print PDF");
// পিডিএফ পৃষ্ঠা প্রিন্ট করার জন্য পেইজ পেইজ প্রিন্টার সেট করা
job.setPrintable((graphics, pageFormat, pageIndex) -> {
if (pageIndex >= document.getNumberOfPages()) {
return Printable.NO_SUCH_PAGE;
}
// পিডিএফ পৃষ্ঠা রেন্ডার করা
BufferedImage bufferedImage = pdfRenderer.renderImage(pageIndex);
graphics.drawImage(bufferedImage, 0, 0, null);
return Printable.PAGE_EXISTS;
});
// প্রিন্টার নির্বাচন এবং প্রিন্ট করা
if (job.printDialog()) {
job.print();
}
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- PDFRenderer: এটি পিডিএফ ফাইলের পৃষ্ঠাগুলিকে
BufferedImageতে রেন্ডার করে। - PrinterJob: এটি Java API এর একটি ক্লাস যা প্রিন্টিংয়ের কাজ পরিচালনা করে।
setPrintable()মেথডের মাধ্যমে পিডিএফের প্রতিটি পৃষ্ঠা প্রিন্ট করা হয়। - graphics.drawImage(): এটি পিডিএফ পৃষ্ঠা রেন্ডার করে গ্রাফিক্স কনটেক্সটে আঁকতে সাহায্য করে, যা পরবর্তীতে প্রিন্টার দ্বারা প্রিন্ট হয়।
পিডিএফ ফাইল ভিউ করা
পিডিএফবক্স সরাসরি পিডিএফ ফাইল ভিউ করার জন্য কোনো গ্রাফিকাল ইউজার ইন্টারফেস (GUI) সরবরাহ করে না। তবে, Java অ্যাপ্লিকেশনগুলিতে পিডিএফ ফাইল ভিউ করতে সাধারণত PDFRenderer ব্যবহার করা হয়, যা পিডিএফ পৃষ্ঠাগুলিকে ইমেজে রেন্ডার করে এবং পরে সেগুলিকে একটি GUI প্যানেলে বা উইন্ডোতে প্রদর্শন করা যায়।
এছাড়া, পিডিএফ ফাইল ভিউ করতে আপনি JavaFX বা Swing এর সাথে PDFRenderer ব্যবহার করতে পারেন।
পিডিএফ ফাইল ভিউ করার উদাহরণ (Swing):
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PDFViewerExample {
public static void main(String[] args) {
try {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("example.pdf"));
// পিডিএফ রেন্ডার করার জন্য PDFRenderer তৈরি
PDFRenderer pdfRenderer = new PDFRenderer(document);
// পিডিএফ পৃষ্ঠার ইমেজ তৈরি
BufferedImage image = pdfRenderer.renderImage(0); // প্রথম পৃষ্ঠা
// Swing GUI তৈরি করা
JFrame frame = new JFrame("PDF Viewer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 800);
// ইমেজ প্যানেল তৈরি করা
JLabel label = new JLabel(new ImageIcon(image));
frame.getContentPane().add(label, BorderLayout.CENTER);
frame.setVisible(true);
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- BufferedImage: পিডিএফের পৃষ্ঠাটি প্রথমে একটি
BufferedImageতে রেন্ডার করা হয়। - JFrame: Swing ব্যবহার করে একটি নতুন উইন্ডো তৈরি করা হয় যেখানে পিডিএফ পৃষ্ঠাটি ভিউ করা যাবে।
- JLabel: ইমেজটি একটি লেবেলে সেট করা হয় এবং এটি GUI তে প্রদর্শিত হয়।
সারাংশ
পিডিএফবক্স (PDFBox) Java লাইব্রেরি ব্যবহার করে পিডিএফ ফাইল প্রিন্টিং এবং ভিউ করা সম্ভব, তবে কিছু অতিরিক্ত কাজ করতে হয়। পিডিএফ ফাইল প্রিন্ট করার জন্য Java এর PrinterJob এবং PDFRenderer ব্যবহার করা হয়, এবং পিডিএফ ফাইল ভিউ করার জন্য PDFRenderer এর রেন্ডার করা ইমেজ GUI তে প্রদর্শন করা হয়। পিডিএফবক্স এই কাজগুলিকে করার জন্য সরাসরি টুলস প্রদান না করলেও, Java এর গ্রাফিক্স এবং প্রিন্টিং API এর সাথে এটি সহজেই ইন্টিগ্রেট করা যায়।
পিডিএফবক্স (PDFBox) লাইব্রেরি Java অ্যাপ্লিকেশনে পিডিএফ ফাইল প্রিন্ট করার জন্য PDFPrintable ক্লাস প্রদান করে। এই ক্লাসটি পিডিএফ ডকুমেন্টকে প্রিন্ট করার জন্য একটি প্রিন্টার রেন্ডারার হিসেবে কাজ করে। PDFPrintable ব্যবহার করে আপনি পিডিএফ ফাইলের সমস্ত পেজ প্রিন্ট করতে পারেন অথবা নির্দিষ্ট পেজ প্রিন্ট করতে পারেন। এটি প্রিন্টিংয়ের জন্য PrinterJob API এর সাথে ইন্টিগ্রেটেড হয়ে কাজ করে।
PDFPrintable ব্যবহার করে পিডিএফ ফাইল প্রিন্ট করার পদ্ধতি
নিম্নলিখিত উদাহরণটি দেখাবে কিভাবে PDFPrintable ব্যবহার করে পিডিএফ ফাইল প্রিন্ট করা যায়।
উদাহরণ: PDF ফাইল প্রিন্ট করা
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPrintable;
import org.apache.pdfbox.printing.PDFPageable;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.IOException;
public class PrintPDFExample {
public static void main(String[] args) {
try {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("example.pdf"));
// PrinterJob তৈরি করা
PrinterJob printerJob = PrinterJob.getPrinterJob();
// প্রিন্টার সেভ করা
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
if (printService != null) {
printerJob.setPrintService(printService);
// PDFPrintable ব্যবহার করে পিডিএফ ডকুমেন্ট রেন্ডার করা
PDFPrintable printable = new PDFPrintable(document);
printerJob.setPageable(new PDFPageable(document));
// পিডিএফ ডকুমেন্ট প্রিন্ট করা
printerJob.print();
System.out.println("পিডিএফ ফাইল প্রিন্ট করা হয়েছে!");
} else {
System.out.println("ডিফল্ট প্রিন্টার সেবা পাওয়া যায়নি!");
}
// পিডিএফ ডকুমেন্ট বন্ধ করা
document.close();
} catch (Exception e) {
System.err.println("Error during PDF printing: " + e.getMessage());
}
}
}
কোডের ব্যাখ্যা
- PDDocument.load(): এটি পিডিএফ ফাইল লোড করার জন্য ব্যবহৃত হয়।
- PrinterJob.getPrinterJob(): এটি প্রিন্টার জব তৈরি করে এবং প্রিন্টার ডিভাইস নির্বাচন করতে সাহায্য করে।
- PrintServiceLookup.lookupDefaultPrintService(): এটি ডিফল্ট প্রিন্টার সেবা নির্বাচন করতে ব্যবহৃত হয়। আপনি আপনার সিস্টেমে ইনস্টল থাকা প্রিন্টারের মধ্যে থেকে একটিকে নির্বাচন করতে পারেন।
- PDFPrintable: পিডিএফ ডকুমেন্টকে প্রিন্টযোগ্য আউটপুটে রেন্ডার করার জন্য
PDFPrintableব্যবহার করা হয়। এটিPrinterJobএর সাথে কাজ করতে সক্ষম। - setPageable(): এটি পিডিএফ ডকুমেন্টকে প্রিন্টারের পেজেবল হিসেবে সেট করে, যার মাধ্যমে প্রিন্টার জানে কোন পৃষ্ঠাগুলি প্রিন্ট করতে হবে।
PDFPrintable এর অন্যান্য বৈশিষ্ট্য
- নির্দিষ্ট পেজ প্রিন্ট: যদি আপনি শুধুমাত্র নির্দিষ্ট পেজ প্রিন্ট করতে চান, তবে
PDFPageableএর পেজ রেঞ্জ সেট করতে পারেন। - পিডিএফ স্কেলিং:
PDFPrintableএ স্কেলিং অপশন রয়েছে, যার মাধ্যমে আপনি পিডিএফ পেজকে প্রিন্টারের প্রিন্ট পেজের সাথে ফিট করতে পারবেন। - গ্রাফিক্স এবং কনটেন্ট: পিডিএফে থাকা গ্রাফিক্স, চিত্র, এবং টেক্সট সমূহ যথাযথভাবে প্রিন্ট করা হয়, যাতে ফাইলের মূল ফরম্যাট বজায় থাকে।
পিডিএফ প্রিন্টিংয়ের জন্য কিছু পরামর্শ
- প্রিন্টারে সমর্থন: আপনার প্রিন্টার অবশ্যই Java Print Service API সমর্থন করতে হবে।
- ফাইলের আকার: বড় আকারের পিডিএফ ফাইল প্রিন্ট করার সময় সিস্টেমের মেমরি এবং প্রিন্টারের পৃষ্ঠার আকার অনুযায়ী স্কেলিং বা পেজ সাইজ ঠিক করতে হতে পারে।
- বিভিন্ন প্রিন্টার সেবা: আপনি যদি একাধিক প্রিন্টার ব্যবহার করতে চান, তবে
PrintServiceLookupব্যবহার করে প্রিন্টারের নাম নির্বাচন করতে পারেন।
PDFPrintable এর মাধ্যমে পিডিএফ ডকুমেন্ট প্রিন্ট করা খুবই সহজ এবং কার্যকরী। এটি Java অ্যাপ্লিকেশনগুলিতে পিডিএফ প্রিন্টিংয়ের জন্য একটি শক্তিশালী সমাধান প্রদান করে।
পিডিএফবক্স (PDFBox) লাইব্রেরি মূলত পিডিএফ ফাইল তৈরি, সম্পাদনা এবং প্রক্রিয়া করার জন্য ব্যবহৃত হলেও, আপনি PDFBox ViewerApp ব্যবহার করে পিডিএফ ফাইল প্রদর্শনও করতে পারেন। PDFBox ViewerApp একটি Java অ্যাপ্লিকেশন যা পিডিএফ ডকুমেন্ট প্রদর্শন করার জন্য একটি গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) প্রদান করে। এটি পিডিএফ ফাইলের কনটেন্ট দেখা, স্ক্রোল করা, এবং অন্যান্য কিছু সাধারণ অ্যাকশন সম্পাদন করতে সক্ষম।
PDFBox ViewerApp এর সুবিধা
- PDF প্রদর্শন: পিডিএফ ফাইলের কনটেন্ট দেখার সুবিধা।
- সহজ ইন্টারফেস: গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) যার মাধ্যমে ব্যবহারকারী সহজে পিডিএফ ফাইল ভিউ করতে পারেন।
- পিডিএফ ম্যানিপুলেশন: কিছু পিডিএফ ফাইলের মধ্যে ডেটা ম্যানিপুলেট করতে সক্ষম।
PDFBox ViewerApp এর ব্যবহার
PDFBox ViewerApp ব্যবহার করার জন্য আপনাকে PDFBox লাইব্রেরির সাথে কিছু অতিরিক্ত জার (JAR) ফাইল ইনস্টল করতে হবে যা GUI সমর্থন করবে। সাধারণত এটি pdfbox-app2.x.x.jar নামে পাওয়া যায়। একবার আপনি লাইব্রেরিটি ইনস্টল করলে, আপনি সঠিক কনফিগারেশন অনুসরণ করে পিডিএফ ফাইলটি প্রদর্শন করতে পারবেন।
PDFBox ViewerApp চালানোর উদাহরণ
প্রথমে, নিশ্চিত হয়ে নিন যে আপনি pdfbox-app2.x.x.jar ফাইলটি আপনার প্রোজেক্টে যুক্ত করেছেন। তারপর আপনি নিচের কমান্ড দিয়ে পিডিএফ ফাইল দেখাতে পারবেন:
java -jar pdfbox-app2.x.x.jar ViewerApp <path-to-pdf-file>
এখানে:
- pdfbox-app2.x.x.jar: আপনার ব্যবহৃত PDFBox অ্যাপ্লিকেশনের JAR ফাইল।
- ViewerApp: এটি PDFBox এর ViewerApp ক্লাসের নাম, যা পিডিএফ ডকুমেন্ট প্রদর্শন করে।
- : পিডিএফ ফাইলের পাথ যেখানে আপনি প্রদর্শন করতে চান।
PDFBox ViewerApp এর GUI ব্যবহারের বৈশিষ্ট্য
- পিডিএফ পৃষ্ঠা পরিবর্তন: আপনি GUI তে পিডিএফ ডকুমেন্টের বিভিন্ন পৃষ্ঠা দেখাতে পারবেন।
- জুম ইন/আউট: পিডিএফের সাইজ পরিবর্তন করে আরও ভালোভাবে দেখতে পারবেন।
- টেক্সট সিলেকশন: কিছু সংস্করণে আপনি টেক্সট সিলেক্ট এবং কপি করতে পারবেন।
PDFBox ViewerApp এর সীমাবদ্ধতা
- কাস্টমাইজেশন: যদি আপনি বিশেষ কোনো ফিচার বা কাস্টম ইন্টারফেস চান, তবে এটি সীমিত হতে পারে, কারণ এটি একটি সাধারণ পিডিএফ ভিউয়ার।
- পারফরম্যান্স: খুব বড় বা জটিল পিডিএফ ফাইলগুলির জন্য এই ভিউয়ারের পারফরম্যান্স কিছুটা কম হতে পারে।
PDFBox ViewerApp ব্যবহার করে পিডিএফ ফাইল প্রদর্শন করা একটি সহজ এবং কার্যকর উপায়। এটি পিডিএফ ডকুমেন্টের কনটেন্ট দেখতে সাহায্য করে এবং সহজ ব্যবহারযোগ্য GUI প্রদান করে।
পিডিএফবক্স (PDFBox) Java লাইব্রেরি মূলত পিডিএফ ডকুমেন্ট তৈরি এবং পরিচালনার জন্য ব্যবহৃত হয়, তবে Java-এ পিডিএফ প্রিন্টিং (Printing) এবং Viewing (দেখা) করার জন্য এটি সরাসরি সমর্থন প্রদান করে না। তবে, আপনি Java-এর বিভিন্ন লাইব্রেরি এবং পদ্ধতি ব্যবহার করে পিডিএফ ফাইল প্রিন্ট করতে এবং দেখতে পারেন।
এখানে আমরা দুইটি বিষয় দেখবো:
- PDF প্রিন্টিং: পিডিএফ ফাইল প্রিন্ট করার জন্য Java-তে প্রিন্ট সার্ভিস ব্যবহার করা।
- PDF Viewing: পিডিএফ ফাইলটি Java অ্যাপ্লিকেশনে প্রদর্শন করার জন্য উপযুক্ত লাইব্রেরি ব্যবহার করা।
1. PDF প্রিন্টিং
Java ব্যবহার করে পিডিএফ প্রিন্ট করার জন্য Java Print Service API ব্যবহার করা যায়। আপনি PDDocument অবজেক্টকে PrinterJob এর মাধ্যমে প্রিন্ট করতে পারেন। পিডিএফবক্সের সাথে মিলে এটি একটি সিম্পল উদাহরণ।
উদাহরণ: PDF প্রিন্টিং
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPrinterJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import java.io.File;
import java.io.IOException;
public class PDFPrintingExample {
public static void main(String[] args) throws IOException {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("example.pdf"));
// প্রিন্টার সেটআপ করা
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
PDFPrinterJob printerJob = new PDFPrinterJob();
printerJob.setPrintService(printService);
// পিডিএফ প্রিন্ট করা
printerJob.print(document);
// ডকুমেন্ট বন্ধ করা
document.close();
}
}
কোড ব্যাখ্যা
- PDDocument.load(): এটি পিডিএফ ডকুমেন্ট লোড করতে ব্যবহৃত হয়।
- PDFPrinterJob: এটি পিডিএফ ডকুমেন্ট প্রিন্ট করার জন্য পিডিএফবক্সের ক্লাস।
- PrintServiceLookup.lookupDefaultPrintService(): এটি ডিফল্ট প্রিন্টার খুঁজে বের করতে ব্যবহৃত হয়।
- printerJob.print(): পিডিএফ ডকুমেন্ট প্রিন্ট করার জন্য ব্যবহৃত হয়।
এই কোডের মাধ্যমে, আপনি পিডিএফ ফাইল প্রিন্ট করতে পারবেন যেকোনো ডিফল্ট প্রিন্টারে।
2. PDF Viewing (পিডিএফ দেখানো)
Java অ্যাপ্লিকেশনগুলিতে পিডিএফ দেখতে একটি সাধারণ উপায় হল JPedal অথবা PDF Renderer লাইব্রেরি ব্যবহার করা। এই লাইব্রেরিগুলি পিডিএফ ফাইল প্রদর্শন করার জন্য Java Swing বা JavaFX ব্যবহার করে পিডিএফ রেন্ডার করতে পারে।
উদাহরণ: PDF Viewing using PDF Renderer
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.rendering.PDFRenderer;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class PDFViewExample {
public static void main(String[] args) throws IOException {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("example.pdf"));
PDFRenderer renderer = new PDFRenderer(document);
// JFrame তৈরি করা
JFrame frame = new JFrame("PDF Viewer");
frame.setSize(600, 800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// পিডিএফ পেইজ রেন্ডার করা
Image image = renderer.renderImage(0); // প্রথম পৃষ্ঠা
JLabel label = new JLabel(new ImageIcon(image));
frame.add(label, BorderLayout.CENTER);
// উইন্ডো দৃশ্যমান করা
frame.setVisible(true);
}
}
কোড ব্যাখ্যা
- PDDocument.load(): এটি পিডিএফ ডকুমেন্ট লোড করতে ব্যবহৃত হয়।
- PDFRenderer: এটি পিডিএফ ডকুমেন্টের পৃষ্ঠা গুলি চিত্র আকারে রেন্ডার করতে ব্যবহৃত হয়।
- renderImage(0): এটি পিডিএফের প্রথম পৃষ্ঠা একটি চিত্র হিসেবে রেন্ডার করে।
- JFrame: এটি Swing ভিত্তিক একটি উইন্ডো তৈরি করে যেখানে পিডিএফ চিত্রটি প্রদর্শিত হবে।
- ImageIcon: এটি চিত্রটি একটি আইকনে রূপান্তরিত করে, যা JLabel-এ প্রদর্শিত হয়।
গুরুত্বপূর্ণ বিষয়
- PDF Rendering: PDF রেন্ডারিং সাধারণত পিডিএফের প্রতিটি পৃষ্ঠা চিত্র আকারে প্রদর্শন করা হয়। এটি একাধিক পৃষ্ঠার জন্য অ্যাডভান্সড কন্ট্রোল প্রদান করে।
- Java Swing: এখানে PDF Viewing-এর জন্য Java Swing ব্যবহার করা হয়েছে। আপনি JavaFX অথবা অন্য গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) টুলকিট ব্যবহার করেও এটি বাস্তবায়ন করতে পারেন।
সারাংশ
- PDF Printing: পিডিএফবক্স এবং Java Print Service API ব্যবহার করে পিডিএফ ফাইল প্রিন্ট করা সম্ভব।
- PDF Viewing: Java Swing বা PDF Renderer লাইব্রেরি ব্যবহার করে পিডিএফ ফাইল দেখতে পারেন।
এই পদ্ধতিগুলির মাধ্যমে Java অ্যাপ্লিকেশনগুলোতে পিডিএফ ফাইল প্রিন্ট এবং ভিউ করার কাজ সহজেই সম্পন্ন করা সম্ভব।
Read more