পিডিএফবক্স (PDFBox) লাইব্রেরি ব্যবহার করে Java প্রোগ্রামিং ভাষায় পিডিএফ ডকুমেন্টে ইমেজ যোগ করা সম্ভব। এটি বিভিন্ন ধরনের ইমেজ ফরম্যাট (যেমন PNG, JPEG, BMP) সাপোর্ট করে। নিচে বিস্তারিতভাবে দেখানো হলো কিভাবে পিডিএফ ফাইলে ইমেজ যোগ করা যায়।
পিডিএফে ইমেজ যোগ করার জন্য প্রয়োজনীয় লাইব্রেরি
পিডিএফবক্সের মাধ্যমে ইমেজ যোগ করতে, প্রথমে নিচের লাইব্রেরিগুলি ইমপোর্ট করতে হবে:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDImageXObject;
import java.io.File;
পিডিএফে ইমেজ যোগ করার প্রক্রিয়া
এখানে একটি উদাহরণ দেওয়া হলো, যেখানে একটি PNG ফাইল পিডিএফে যোগ করা হচ্ছে:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDImageXObject;
import java.io.File;
import java.io.IOException;
public class AddImageToPDF {
public static void main(String[] args) {
try {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
// পিডিএফ পেজ তৈরি
PDPage page = new PDPage();
document.addPage(page);
// ইমেজ লোড করা
PDImageXObject pdImage = PDImageXObject.createFromFile("image.png", document);
// পিডিএফ পেজে কন্টেন্ট স্ট্রিম তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// ইমেজ পোজিশন এবং আকার নির্ধারণ
contentStream.drawImage(pdImage, 100, 500, pdImage.getWidth() / 2, pdImage.getHeight() / 2);
// কন্টেন্ট স্ট্রিম ক্লোজ
contentStream.close();
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("output.pdf");
// ডকুমেন্ট বন্ধ করা
document.close();
System.out.println("ইমেজ সফলভাবে পিডিএফে যোগ করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- PDDocument: এটি পিডিএফ ডকুমেন্ট তৈরি বা লোড করতে ব্যবহৃত হয়।
- PDPage: নতুন পিডিএফ পেজ তৈরি করে।
- PDImageXObject: এটি পিডিএফ ডকুমেন্টে ইমেজ যোগ করার জন্য ব্যবহৃত ক্লাস। এখানে
createFromFileমেথড ব্যবহার করে ইমেজ ফাইল লোড করা হয়। - PDPageContentStream: এটি পিডিএফ পেজে কন্টেন্ট যোগ করতে ব্যবহৃত হয়। আমরা এখানে ইমেজটিকে নির্দিষ্ট পজিশনে এবং আকারে যোগ করি।
- drawImage(): এই মেথডটি ইমেজটিকে পিডিএফ পেজে নির্দিষ্ট পজিশন এবং আকারে ড্র করে।
পিডিএফে ইমেজ যোগ করার পজিশন এবং আকার কাস্টমাইজেশন
- ইমেজের অবস্থান পরিবর্তন করতে
drawImageমেথডের প্রথম দুটি প্যারামিটার পরিবর্তন করতে হবে (এটি পেজের (x, y) কোঅর্ডিনেটকে নির্দেশ করে)। - আকার পরিবর্তন করতে, আপনি ইমেজের প্রস্থ (width) এবং উচ্চতা (height) নির্ধারণ করতে পারেন।
ইমেজ ফরম্যাট সমর্থন
পিডিএফবক্স সাধারণত PNG, JPEG, BMP ইত্যাদি ফরম্যাট সাপোর্ট করে। আপনি যেকোনো উপযুক্ত ইমেজ ফরম্যাট পিডিএফে যোগ করতে পারবেন।
এইভাবে পিডিএফবক্স ব্যবহার করে Java দিয়ে পিডিএফ ডকুমেন্টে ইমেজ যোগ করা সম্ভব। এটি পিডিএফ ডকুমেন্টে গ্যালারি বা লোগো ইত্যাদি যোগ করতে খুবই কার্যকরী।
পিডিএফবক্স (PDFBox) ব্যবহার করে পিডিএফ ডকুমেন্টে ইমেজ যোগ করার জন্য PDImageXObject ক্লাস ব্যবহার করা হয়। এই ক্লাসটি পিডিএফ ডকুমেন্টে ইমেজ এক্সট্র্যাক্ট, লোড এবং প্রিন্ট করার জন্য প্রয়োজনীয় টুলস প্রদান করে।
PDImageXObject ক্লাস
PDImageXObject পিডিএফ ডকুমেন্টে ইমেজ যোগ করার জন্য একটি অবজেক্ট রিপ্রেজেন্টেশন তৈরি করে। এটি সাধারণত PDPageContentStream ক্লাসের সাথে ব্যবহৃত হয় যাতে পিডিএফ পৃষ্ঠায় ইমেজ রেন্ডার করা যায়।
পিডিএফে ইমেজ যোগ করার কোড উদাহরণ
নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি পিডিএফ ডকুমেন্টে ইমেজ যোগ করা হচ্ছে:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDImageXObject;
import java.io.File;
import java.io.IOException;
public class AddImageToPDF {
public static void main(String[] args) throws IOException {
// পিডিএফ ডকুমেন্ট তৈরি করা
PDDocument document = new PDDocument();
// একটি পৃষ্ঠা তৈরি করা
PDPage page = new PDPage();
document.addPage(page);
// ইমেজ লোড করা
PDImageXObject pdImage = PDImageXObject.createFromFile("path/to/your/image.jpg", document);
// পৃষ্ঠা কনটেন্ট স্ট্রিম তৈরি করা
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// ইমেজ পৃষ্ঠা পজিশনে যোগ করা
contentStream.drawImage(pdImage, 100, 600); // X, Y পজিশন
contentStream.close();
// পিডিএফ সেভ করা
document.save("output.pdf");
document.close();
}
}
কোডের ব্যাখ্যা
- PDImageXObject.createFromFile(): এই মেথডটি ইমেজ ফাইল থেকে
PDImageXObjectতৈরি করে, যেটি পিডিএফ ডকুমেন্টে যোগ করার জন্য প্রস্তুত। - drawImage(): এই মেথডটি ইমেজটিকে পিডিএফ পৃষ্ঠায় নির্দিষ্ট পজিশনে (X, Y) রেন্ডার করতে ব্যবহার হয়।
- PDPageContentStream: এই ক্লাসটি পিডিএফ পৃষ্ঠার কনটেন্ট স্ট্রিম পরিচালনা করে, যার মাধ্যমে গ্রাফিক্স এবং টেক্সট আর্গুমেন্ট পাঠানো হয়।
ইমেজ পজিশন কাস্টমাইজ করা
পিডিএফ ডকুমেন্টে ইমেজের পজিশন কাস্টমাইজ করা সম্ভব। আপনি ইমেজের X এবং Y কোঅর্ডিনেট পরিবর্তন করতে পারেন। উপরোক্ত উদাহরণে, ইমেজটি 100 পিক্সেল ডানদিকে এবং 600 পিক্সেল উপরে (পৃষ্ঠার নিচ থেকে) অবস্থান করবে।
ইমেজ আকার কাস্টমাইজ করা
পিডিএফে ইমেজের আকার কাস্টমাইজ করতে হলে, drawImage() মেথডে সাইজ প্যারামিটারও দেওয়া যেতে পারে। উদাহরণস্বরূপ:
contentStream.drawImage(pdImage, 100, 600, 200, 100); // Width: 200, Height: 100
এইভাবে, আপনি ইমেজের আকার নির্ধারণ করতে পারবেন।
পিডিএফবক্স ব্যবহার করে পিডিএফ ডকুমেন্টে ইমেজ যোগ করা সহজ এবং কার্যকরী পদ্ধতি। PDImageXObject ক্লাস এবং PDPageContentStream এর মাধ্যমে আপনি ইমেজ লোড, রেন্ডার এবং কাস্টমাইজ করতে পারেন, যা পিডিএফ ডকুমেন্টের জন্য প্রয়োজনীয় বিভিন্ন গ্রাফিক্স অপারেশনকে সহজ করে তোলে।
পিডিএফবক্স (PDFBox) Java লাইব্রেরি ব্যবহার করে পিডিএফ ডকুমেন্টে PNG (Portable Network Graphics) এবং JPEG (Joint Photographic Experts Group) ফরম্যাটের ইমেজ যোগ করা সম্ভব। এটি পিডিএফ ডকুমেন্টে ইমেজ যোগ করার জন্য একটি খুবই শক্তিশালী এবং কার্যকরী টুলসেট প্রদান করে।
ইমেজ যোগ করার প্রক্রিয়া
পিডিএফ ডকুমেন্টে ইমেজ যোগ করার জন্য প্রথমে সেই ইমেজটি লোড করতে হবে, তারপর সেই ইমেজটিকে পিডিএফ পৃষ্ঠায় যোগ করতে হবে। পিডিএফবক্সে PNG এবং JPEG ফরম্যাটের ইমেজ যোগ করতে নিচের কোড ব্যবহার করা যেতে পারে।
PNG এবং JPEG ইমেজ যোগ করার উদাহরণ
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDImageXObject;
import java.io.File;
import java.io.IOException;
public class PDFWithImage {
public static void main(String[] args) throws IOException {
// পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
// PNG বা JPEG ইমেজ লোড করা
PDImageXObject image = PDImageXObject.createFromFile("image.png", document); // অথবা "image.jpg" ব্যবহার করুন
// পিডিএফ পৃষ্ঠায় ইমেজ যোগ করা
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawImage(image, 100, 500); // (x, y) অবস্থান
contentStream.close();
// পিডিএফ ফাইল সেভ করা
document.save("output_with_image.pdf");
document.close();
}
}
কোড ব্যাখ্যা
- PDDocument: এটি একটি পিডিএফ ডকুমেন্ট অবজেক্ট তৈরি করে।
- PDPage: নতুন একটি পিডিএফ পৃষ্ঠা তৈরি করে। এখানে
PDRectangle.A4পৃষ্ঠা সাইজ হিসেবে ব্যবহার করা হয়েছে। - PDImageXObject.createFromFile(): এটি ইমেজ ফাইল (PNG বা JPEG) লোড করতে ব্যবহৃত হয়।
- PDPageContentStream.drawImage(): এই ফাংশনটি পিডিএফ পৃষ্ঠায় নির্দিষ্ট অবস্থানে ইমেজ যোগ করতে ব্যবহার হয়। এখানে
100, 500হল ইমেজের অবস্থান (x, y) কনভিনিয়েন্ট কোরডিনেট। - document.save(): এটি পিডিএফ ফাইলটিকে সেভ করে নির্দিষ্ট নামের ফাইল হিসেবে।
গুরুত্বপূর্ণ বিষয়
- ইমেজ ফরম্যাট: পিডিএফবক্স PNG এবং JPEG উভয় ফরম্যাটের ইমেজ সমর্থন করে। তবে ইমেজের ফাইলের পাথ সঠিকভাবে দেওয়া জরুরি।
- ইমেজ পজিশন:
drawImage()ফাংশনের মাধ্যমে ইমেজের অবস্থান (x, y) নির্ধারণ করা হয়। ইমেজের সাইজ এবং অবস্থান পিডিএফ পৃষ্ঠায় ইচ্ছেমতো কাস্টমাইজ করা যেতে পারে।
পিডিএফবক্সের মাধ্যমে সহজেই পিডিএফ ডকুমেন্টে PNG এবং JPEG ফরম্যাটের ইমেজ যোগ করা যায়, যা ডকুমেন্টকে আরো আকর্ষণীয় এবং তথ্যবহুল করে তোলে।
PDFBox ব্যবহার করে পিডিএফ ডকুমেন্টে ইমেজ যোগ করা খুবই সহজ, এবং আপনি ইমেজের অবস্থান (positioning) এবং আকার (resizing) নিয়ন্ত্রণ করতে পারেন। এখানে পিডিএফ ডকুমেন্টে ইমেজ পজিশন এবং আকার পরিবর্তন করার জন্য প্রয়োজনীয় কোড উদাহরণ এবং ব্যাখ্যা দেওয়া হলো।
পিডিএফে ইমেজ যোগ করা
PDFBox ব্যবহার করে পিডিএফে ইমেজ যোগ করার জন্য প্রথমে আপনাকে PDImageXObject ক্লাস ব্যবহার করতে হবে। এটি একটি ইমেজ অবজেক্ট তৈরি করে এবং PDPageContentStream দিয়ে ইমেজকে পিডিএফ পেজে বসাতে সাহায্য করে।
কোড উদাহরণ - ইমেজ পজিশনিং এবং রিসাইজিং
নিচে একটি উদাহরণ দেওয়া হলো, যেখানে একটি ইমেজ পিডিএফে যোগ করা হচ্ছে এবং ইমেজের পজিশন ও আকার নিয়ন্ত্রণ করা হচ্ছে:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDImageXObject;
import java.io.File;
import java.io.IOException;
public class PDFImageExample {
public static void main(String[] args) throws IOException {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
// নতুন পিডিএফ পেজ তৈরি
PDPage page = new PDPage();
document.addPage(page);
// ইমেজ লোড
PDImageXObject image = PDImageXObject.createFromFile("path_to_image.jpg", document);
// পিডিএফ পেজে ইমেজ যোগ করা
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawImage(image, 100, 600, 200, 100); // X, Y পজিশন এবং Width, Height রিসাইজিং
contentStream.close();
// ডকুমেন্ট সংরক্ষণ
document.save("output.pdf");
document.close();
}
}
কোড ব্যাখ্যা
- PDImageXObject.createFromFile("path_to_image.jpg", document): এখানে ইমেজটি লোড করা হচ্ছে যেটি
path_to_image.jpgথেকে আনা হচ্ছে। - drawImage(image, 100, 600, 200, 100):
- প্রথম দুটি মান (100, 600) হল ইমেজের পজিশন (X এবং Y কোরডিনেট) পিডিএফ পেজে।
- পরবর্তী দুটি মান (200, 100) হল ইমেজের আকার (Width এবং Height), যা ইমেজের সাইজ পরিবর্তন করতে ব্যবহৃত হয়।
ইমেজ পজিশনিং
ইমেজ পজিশনিং অর্থ হলো পিডিএফ পেজের কোথায় ইমেজটি রাখা হবে, তা নির্ধারণ করা। এখানে drawImage পদ্ধতিতে X এবং Y কোরডিনেট ব্যবহার করে আপনি ইমেজের অবস্থান নিয়ন্ত্রণ করতে পারেন। উদাহরণস্বরূপ:
- X কোরডিনেট (Horizontal position): পিডিএফ পেজের বাম থেকে শুরু হয়ে ইমেজের অবস্থান নির্ধারণ করে।
- Y কোরডিনেট (Vertical position): পিডিএফ পেজের উপরের অংশ থেকে ইমেজের অবস্থান নির্ধারণ করে।
ইমেজ রিসাইজিং
ইমেজ রিসাইজিংয়ের জন্য আপনি drawImage পদ্ধতিতে ইমেজের আকারও নির্ধারণ করতে পারেন। প্রথম দুটি মান (100, 600) পজিশন নির্ধারণ করে, এবং পরবর্তী দুটি মান (200, 100) ইমেজের আকার (Width এবং Height) সেট করে। আপনি ইমেজের সাইজ ছোট বা বড় করতে পারেন আপনার প্রয়োজন অনুযায়ী।
পিডিএফ পেজে একাধিক ইমেজ যোগ করা
আপনি যদি একাধিক ইমেজ পিডিএফ পেজে যোগ করতে চান, তবে শুধু আলাদা আলাদা পজিশন এবং আকার দিয়ে একইভাবে drawImage পদ্ধতি ব্যবহার করতে পারেন।
contentStream.drawImage(image, 50, 500, 150, 75); // প্রথম ইমেজ
contentStream.drawImage(image, 200, 400, 150, 75); // দ্বিতীয় ইমেজ
ইমেজ পজিশনিং এর অগ্রগতি
- Centering an image: ইমেজ যদি পিডিএফ পেজে কেন্দ্রিকভাবে অবস্থান করতে চান, তাহলে আপনাকে পিডিএফ পেজের সাইজের হিসাব করে X এবং Y কোরডিনেট নির্ধারণ করতে হবে। উদাহরণস্বরূপ, পিডিএফ পেজের সেন্টারে ইমেজ বসানোর জন্য কোডটি এমন হবে:
float x = (page.getMediaBox().getWidth() - image.getWidth()) / 2;
float y = (page.getMediaBox().getHeight() - image.getHeight()) / 2;
contentStream.drawImage(image, x, y);
পিডিএফবক্স (PDFBox) দিয়ে পিডিএফে ইমেজ পজিশনিং এবং রিসাইজিং করার প্রক্রিয়া সহজ এবং সুবিধাজনক। উপরের উদাহরণগুলো অনুসরণ করে আপনি ইমেজ যোগ করতে পারেন এবং তাদের সঠিক অবস্থান এবং আকার নিয়ন্ত্রণ করতে পারবেন।
PDFBox ব্যবহার করে পিডিএফ ডকুমেন্টে ইমেজ যোগ করা একটি সাধারণ প্রক্রিয়া। আপনি যদি পিডিএফ ডকুমেন্টে ছবি যুক্ত করতে চান, তবে PDFBox-এর PDImageXObject ক্লাস এবং PDPageContentStream ব্যবহার করতে হবে।
এখানে আমরা একটি উদাহরণ দেখাবো, যেখানে একটি ইমেজ পিডিএফে যুক্ত করা হবে।
প্রয়োজনীয় লাইব্রেরি
প্রথমে আপনাকে PDFBox লাইব্রেরি আপনার প্রজেক্টে অন্তর্ভুক্ত করতে হবে, যেমনটি পূর্বের উদাহরণে করা হয়েছিল। Maven ব্যবহার করলে আপনার pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
কোড উদাহরণ: PDF এ Image যোগ করা
এখন আমরা একটি কোড উদাহরণ দেখাবো, যেখানে একটি ইমেজ পিডিএফে যোগ করা হবে।
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDImageXObject;
import java.io.File;
import java.io.IOException;
public class PDFWithImage {
public static void main(String[] args) {
try {
// একটি নতুন পিডিএফ ডকুমেন্ট তৈরি করুন
PDDocument document = new PDDocument();
// একটি নতুন পৃষ্ঠা যোগ করুন
PDPage page = new PDPage();
document.addPage(page);
// ইমেজ লোড করুন (ইমেজ ফাইলের পাথ দিতে হবে)
PDImageXObject image = PDImageXObject.createFromFile("path_to_image.jpg", document);
// পৃষ্ঠায় কনটেন্ট স্ট্রিম তৈরি করুন
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// ইমেজ যোগ করুন (X এবং Y কোঅর্ডিনেট নির্ধারণ করুন)
contentStream.drawImage(image, 100, 500); // ইমেজের অবস্থান সেট করুন
// কনটেন্ট স্ট্রিম বন্ধ করুন
contentStream.close();
// পিডিএফ ফাইল সেভ করুন
document.save("PDFWithImage.pdf");
// ডকুমেন্ট বন্ধ করুন
document.close();
System.out.println("ইমেজসহ PDF ফাইল সফলভাবে তৈরি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড বিশ্লেষণ
- PDDocument: পিডিএফ ডকুমেন্ট তৈরি করতে ব্যবহৃত হয়।
- PDPage: একটি নতুন পৃষ্ঠা তৈরি করা হয়েছে যেখানে ইমেজ যোগ করা হবে।
- PDImageXObject.createFromFile: এটি ইমেজ ফাইল থেকে একটি
PDImageXObjectতৈরি করে। - drawImage: এটি পিডিএফ পৃষ্ঠায় নির্দিষ্ট স্থানে ইমেজ আঁকার জন্য ব্যবহৃত হয়। এখানে ইমেজের অবস্থান (X এবং Y কোঅর্ডিনেট) নির্ধারণ করা হয়।
- save: পিডিএফ ডকুমেন্টটি সেভ করা হয়।
- close: ডকুমেন্ট এবং কনটেন্ট স্ট্রিম বন্ধ করা হয়।
আউটপুট
এই কোডটি চালানোর পর একটি PDFWithImage.pdf নামক ফাইল তৈরি হবে, যেখানে আপনার দেওয়া ইমেজটি পিডিএফ ডকুমেন্টে যোগ করা থাকবে।
এই উদাহরণটি আপনাকে পিডিএফবক্স ব্যবহার করে পিডিএফ ডকুমেন্টে ইমেজ যোগ করার প্রক্রিয়া বুঝতে সাহায্য করবে। আপনি ছবির আকার এবং অবস্থান পরিবর্তন করে আরও কাস্টমাইজড ইমেজ ইনপুট করতে পারেন।
Read more