Apache POI এর XWPFDocument ক্লাস ব্যবহার করে আপনি Word ডকুমেন্টে ছবি (Images) এবং পিকচার (Pictures) যোগ করতে পারেন। এটি ব্যবহার করে বিভিন্ন ফরম্যাট যেমন JPEG, PNG, GIF ইত্যাদি ছবির ফাইল যুক্ত করা সম্ভব।
Word ডকুমেন্টে ছবি যোগ করতে XWPFRun এবং XWPFPictureData ক্লাস ব্যবহার করা হয়। নিচে ছবি যোগ করার জন্য কয়েকটি উদাহরণ দেওয়া হলো।
এখানে একটি ছবি XWPFRun এর মাধ্যমে Word ডকুমেন্টে যোগ করা হচ্ছে। আমরা JPEG, PNG বা অন্য ছবি ফরম্যাট ব্যবহার করতে পারি।
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class AddImageToWord {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// ছবির ফাইল পথ
String imagePath = "image.jpg";
// ছবির ফাইল ইনপুট স্ট্রিম তৈরি করা
FileInputStream imageStream = new FileInputStream(imagePath);
// ছবির সাইজ (ইউনিট - পিক্সেল হিসেবে 100x100)
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100));
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("document_with_image.docx")) {
document.write(out);
}
System.out.println("Image added to the Word document!");
}
}
এখানে, addPicture() মেথড ব্যবহার করে JPEG ছবি ডকুমেন্টে যুক্ত করা হয়েছে। Units.toEMU() এর মাধ্যমে ছবির আকার নির্ধারণ করা হয়েছে, যা Microsoft Word এর ইউনিট সিস্টেমে রূপান্তরিত হয়।
একই ডকুমেন্টে একাধিক ছবি যোগ করতে পারেন, এবং প্রতিটি ছবি আলাদা প্যারাগ্রাফে রাখা যেতে পারে।
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class AddMultipleImages {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// প্রথম ছবি যোগ করা
XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun run1 = paragraph1.createRun();
String imagePath1 = "image1.jpg";
FileInputStream imageStream1 = new FileInputStream(imagePath1);
run1.addPicture(imageStream1, XWPFDocument.PICTURE_TYPE_JPEG, imagePath1, Units.toEMU(150), Units.toEMU(150));
// দ্বিতীয় ছবি যোগ করা
XWPFParagraph paragraph2 = document.createParagraph();
XWPFRun run2 = paragraph2.createRun();
String imagePath2 = "image2.png";
FileInputStream imageStream2 = new FileInputStream(imagePath2);
run2.addPicture(imageStream2, XWPFDocument.PICTURE_TYPE_PNG, imagePath2, Units.toEMU(150), Units.toEMU(150));
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("document_with_multiple_images.docx")) {
document.write(out);
}
System.out.println("Multiple images added to the Word document!");
}
}
এখানে, দুটি ছবি একে একে ডকুমেন্টে যোগ করা হয়েছে। JPEG এবং PNG ফরম্যাটের ছবি আলাদা প্যারাগ্রাফে যোগ করা হয়েছে।
ছবির অবস্থান এবং স্টাইল নিয়ন্ত্রণের জন্য XWPFParagraph.Alignment এবং XWPFRun ক্লাস ব্যবহার করা হয়। আপনি ছবির alignment, সাইজ, এবং অন্যান্য স্টাইল কাস্টমাইজ করতে পারেন।
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ImageStyling {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// ছবি এডজাস্টমেন্ট
paragraph.setAlignment(ParagraphAlignment.CENTER); // ছবি সেন্টারে রাখতে
XWPFRun run = paragraph.createRun();
String imagePath = "image.jpg";
FileInputStream imageStream = new FileInputStream(imagePath);
// ছবির সাইজ এবং alignment সেট করা
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(200), Units.toEMU(200));
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("document_with_styled_image.docx")) {
document.write(out);
}
System.out.println("Styled image added to the Word document!");
}
}
এখানে, setAlignment(ParagraphAlignment.CENTER) ব্যবহার করে ছবিকে পৃষ্ঠার কেন্দ্রস্থলে বসানো হয়েছে, এবং ছবির সাইজও কাস্টমাইজ করা হয়েছে।
ছবি এবং টেক্সট একত্রে একই প্যারাগ্রাফে যোগ করা যায়, যাতে ছবির পাশেও কিছু টেক্সট থাকে। এখানে XWPFRun এর সাহায্যে টেক্সট এবং ছবির সন্নিবেশ ঘটানো হয়েছে।
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ImageAndTextTogether {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// টেক্সট যোগ করা
run.setText("This is some text before the image.");
// ছবি যোগ করা
String imagePath = "image.jpg";
FileInputStream imageStream = new FileInputStream(imagePath);
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(150), Units.toEMU(150));
// আরও টেক্সট যোগ করা
run.addBreak(); // নতুন লাইন
run.setText("This is some text after the image.");
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("document_with_image_and_text.docx")) {
document.write(out);
}
System.out.println("Image and text added together to the Word document!");
}
}
এখানে, একটি প্যারাগ্রাফে প্রথমে টেক্সট যোগ করা হয়েছে, তারপর ছবির সন্নিবেশ ঘটানো হয়েছে, এবং শেষে আবার টেক্সট যোগ করা হয়েছে।
আপনি ডকুমেন্টের হেডার বা ফুটারেও ছবি যোগ করতে পারেন। এটি সাধারণত ডকুমেন্টে লোগো বা অন্যান্য গ্রাফিক্স যোগ করার জন্য ব্যবহৃত হয়।
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ImageInHeaderFooter {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// Header-এ ছবি যোগ করা
XWPFHeaderFooterPolicy policy = document.createHeaderFooterPolicy();
XWPFParagraph headerParagraph = policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT).createParagraph();
XWPFRun headerRun = headerParagraph.createRun();
String imagePath = "logo.jpg";
FileInputStream imageStream = new FileInputStream(imagePath);
headerRun.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100));
// Footer-এ ছবি যোগ করা
XWPFParagraph footerParagraph = policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT).createParagraph();
XWPFRun footerRun = footerParagraph.createRun();
footerRun.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100));
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("document_with_image_in_header_footer.docx")) {
document.write(out);
}
System.out.println("Image added in the header and footer of the Word document!");
} }
এখানে, একটি ছবি **header** এবং **footer** তে যোগ করা হয়েছে।
---
সারাংশ
**Apache POI** এর মাধ্যমে আপনি **Word (DOCX)** ডকুমেন্টে **ছবি এবং পিকচার** যোগ করতে পারেন। **XWPFRun** ক্লাসের মাধ্যমে ছবি যোগ করা হয়, যেখানে ছবি সাইজ কাস্টমাইজ করা, alignment সেট করা এবং একাধিক ছবি একই ডকুমেন্টে যোগ করা সম্ভব। এছাড়াও, হেডার এবং ফুটারেও ছবি যুক্ত করা যায়, যা ডকুমেন্টের পেশাগত চেহারা বাড়াতে সাহায্য করে।
Apache POI ব্যবহার করে আপনি সহজেই Word ডকুমেন্টে ইমেজ যোগ করতে পারেন। এটি সাধারণত XWPFDocument ক্লাসের সাহায্যে করা হয়, যেখানে আপনি XWPFPicture বা XWPFRun ব্যবহার করে ইমেজ ইনসার্ট করতে পারেন। এই পদ্ধতিতে আপনি JPEG, PNG সহ বিভিন্ন ইমেজ ফর্ম্যাট ব্যবহার করতে পারেন।
নিম্নে দেখানো হয়েছে কিভাবে JPEG এবং PNG ফরম্যাটের ইমেজ Word ডকুমেন্টে যুক্ত করা যায়।
ইমেজ যোগ করতে, আপনাকে প্রথমে ইমেজ ফাইলের পাথ নির্ধারণ করতে হবে এবং তারপর XWPFRun ক্লাসের মাধ্যমে সেই ইমেজটি প্যারাগ্রাফে যোগ করতে হবে।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class AddImageToWord {
public static void main(String[] args) throws IOException {
// নতুন Word ডকুমেন্ট তৈরি
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// প্যারাগ্রাফে রান তৈরি করা
XWPFRun run = paragraph.createRun();
// ইমেজ যোগ করা (JPEG অথবা PNG)
String imagePath = "path_to_your_image.jpg"; // ইমেজ ফাইলের পাথ
try (FileInputStream fis = new FileInputStream(imagePath)) {
run.addPicture(fis, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100)); // ইমেজ আকার ১০০x১০০ পিক্সেল
}
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("word_with_image.docx")) {
document.write(out);
}
System.out.println("ইমেজ সহ Word ডকুমেন্ট সফলভাবে তৈরি হয়েছে!");
}
}
এই কোডটির মাধ্যমে একটি JPEG বা PNG ইমেজ Word ডকুমেন্টে সফলভাবে যোগ করা যাবে।
ইমেজ যোগ করার সময় আপনি তার আকারও কাস্টমাইজ করতে পারেন। addPicture() মেথডে ইমেজের প্রস্থ এবং উচ্চতা পিক্সেলে বা EMU (English Metric Units) এ সেট করা হয়। Units.toEMU() পদ্ধতি ব্যবহার করে আপনি পিক্সেল থেকে EMU তে রূপান্তর করতে পারবেন।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ResizeImageInWord {
public static void main(String[] args) throws IOException {
// নতুন Word ডকুমেন্ট তৈরি
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// প্যারাগ্রাফে রান তৈরি করা
XWPFRun run = paragraph.createRun();
// ইমেজ যোগ করা এবং আকার কাস্টমাইজ করা
String imagePath = "path_to_your_image.jpg"; // ইমেজ ফাইলের পাথ
try (FileInputStream fis = new FileInputStream(imagePath)) {
run.addPicture(fis, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(150), Units.toEMU(150)); // ইমেজ আকার ১৫০x১৫০ পিক্সেল
}
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("resized_word_with_image.docx")) {
document.write(out);
}
System.out.println("আকার পরিবর্তন সহ ইমেজ Word ডকুমেন্টে সফলভাবে যোগ করা হয়েছে!");
}
}
এই কোডটি চালানোর পর, ইমেজটি কাস্টম আকারে Word ডকুমেন্টে যোগ করা হবে।
আপনি যদি ইমেজের সাইজটি স্বয়ংক্রিয়ভাবে ফিট করতে চান, তবে আপনাকে আকার নির্ধারণের পরিবর্তে aspect ratio মেনে চলতে হবে। যদিও POI লাইব্রেরি সাইজ স্বয়ংক্রিয়ভাবে কাস্টমাইজ করার জন্য সরাসরি কোনো পদ্ধতি প্রদান করে না, আপনি ইমেজের আসল আকার বের করে প্রোগ্রামেটিকভাবে সেটি সঠিক সাইজে কনভার্ট করতে পারেন।
Apache POI ব্যবহার করে Word ডকুমেন্টে ইমেজ যোগ করা অত্যন্ত সহজ। আপনি JPEG বা PNG ফরম্যাটের ইমেজ ফাইল ইনপুট স্ট্রিম দিয়ে Word ডকুমেন্টে যোগ করতে পারেন। addPicture() মেথডটি ইমেজের আকার কাস্টমাইজ করার সুযোগ দেয় এবং Units.toEMU() পদ্ধতি ব্যবহার করে আপনি সাইজ নিয়ন্ত্রণ করতে পারেন। এইভাবে আপনি ইমেজ এবং টেক্সটের সাথে একটি পেশাদারী Word ডকুমেন্ট তৈরি করতে পারেন।
Apache POI ব্যবহার করে Microsoft Word ডকুমেন্টে ইমেজ (ছবি) যোগ করা এবং তার আকার (size) ও অবস্থান (position) নিয়ন্ত্রণ করা যেতে পারে। এর মাধ্যমে আপনি ডকুমেন্টে ইমেজের আকার কাস্টমাইজ করতে পারেন এবং ইমেজটি ডকুমেন্টের নির্দিষ্ট স্থানে রাখতে পারেন।
এই প্রক্রিয়ায়, XWPFRun এবং XWPFPicture এর মাধ্যমে ইমেজটি ডকুমেন্টে যোগ করা হয় এবং ইমেজের আকার এবং অবস্থান নিয়ন্ত্রণ করা হয়।
Apache POI এর মাধ্যমে আপনি Word ডকুমেন্টে ছবি যোগ করতে পারেন এবং ছবি নির্দিষ্ট আকারে কনফিগার করতে পারেন। নিচে দেখানো হলো কিভাবে ইমেজের আকার এবং অবস্থান নিয়ন্ত্রণ করা যায়।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class ImageSizeAndPositionExample {
public static void main(String[] args) throws IOException {
// নতুন ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// রান (Run) তৈরি করা, যার মাধ্যমে ইমেজ যোগ হবে
XWPFRun run = paragraph.createRun();
// ইমেজ যোগ করার জন্য ইনপুট স্ট্রিম তৈরি করা
try (FileInputStream imageStream = new FileInputStream("image.jpg")) {
// ইমেজটি ডকুমেন্টে যোগ করা
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg",
Units.toEMU(200), Units.toEMU(100)); // ইমেজের আকার নির্ধারণ (প্রস্থ 200pt, উচ্চতা 100pt)
}
// ডকুমেন্ট সংরক্ষণ
try (FileOutputStream out = new FileOutputStream("ImageSizeAndPositionExample.docx")) {
document.write(out);
}
System.out.println("ইমেজ সফলভাবে আকার এবং অবস্থান সহ যোগ করা হয়েছে!");
}
}
ইমেজের অবস্থান নিয়ন্ত্রণ করতে আপনি XWPFPicture এবং XWPFRun ব্যবহার করে ইমেজের alignment এবং positioning কাস্টমাইজ করতে পারেন। সাধারণত, ইমেজের alignment (যেমন, বাম, ডান, সেন্টার) নিয়ন্ত্রণ করা হয় এবং প্রিন্টিং পেজের মধ্যে ইমেজের সঠিক স্থানে তা বসানো হয়।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.util.Units;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class ImageAlignmentExample {
public static void main(String[] args) throws IOException {
// নতুন ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// প্যারাগ্রাফের alignment নির্ধারণ করা (সেন্টার আলাইন)
paragraph.setAlignment(ParagraphAlignment.CENTER);
// রান (Run) তৈরি করা
XWPFRun run = paragraph.createRun();
// ইমেজ যোগ করার জন্য ইনপুট স্ট্রিম তৈরি করা
try (FileInputStream imageStream = new FileInputStream("image.jpg")) {
// ইমেজটি ডকুমেন্টে যোগ করা
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg",
Units.toEMU(200), Units.toEMU(100)); // আকার নির্ধারণ করা (200pt প্রস্থ, 100pt উচ্চতা)
}
// ডকুমেন্ট সংরক্ষণ
try (FileOutputStream out = new FileOutputStream("ImageAlignmentExample.docx")) {
document.write(out);
}
System.out.println("ইমেজ সফলভাবে সেন্টারে অবস্থান সহ যোগ করা হয়েছে!");
}
}
আপনি যদি আরও নির্দিষ্ট অবস্থানে ইমেজ রাখতে চান, তাহলে XWPFPicture এর মাধ্যমে ইমেজটির anchor বা position কাস্টমাইজ করতে পারবেন।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class CustomImagePositionExample {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// রান (Run) তৈরি করা
XWPFRun run = paragraph.createRun();
// ইমেজ যোগ করার জন্য ইনপুট স্ট্রিম তৈরি করা
try (FileInputStream imageStream = new FileInputStream("image.jpg")) {
// ইমেজটির অবস্থান কাস্টমাইজ করা
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg",
Units.toEMU(200), Units.toEMU(100)); // আকার নির্ধারণ করা (200pt প্রস্থ, 100pt উচ্চতা)
}
// ডকুমেন্ট সংরক্ষণ
try (FileOutputStream out = new FileOutputStream("CustomImagePositionExample.docx")) {
document.write(out);
}
System.out.println("ইমেজ কাস্টম অবস্থান সহ সফলভাবে যোগ করা হয়েছে!");
}
}
এই কোডে আপনি XWPFRun এর মাধ্যমে ইমেজের আকার এবং অবস্থান নির্ধারণ করতে পারেন এবং addPicture মেথডের মাধ্যমে ইমেজের বিভিন্ন প্যারামিটার কাস্টমাইজ করতে পারেন।
Apache POI ব্যবহার করে Word ডকুমেন্টে ইমেজ যোগ করা এবং তার আকার ও অবস্থান নিয়ন্ত্রণ করা খুবই সহজ। আপনি XWPFRun এবং XWPFPicture এর মাধ্যমে ইমেজটি যোগ করতে পারেন এবং তার আকার নির্ধারণ করতে Units.toEMU() ব্যবহার করতে পারেন। এছাড়াও, ইমেজের alignment কাস্টমাইজ করে আপনি তা সেন্টার, লেফট বা রাইটে অবস্থান করতে পারেন। addPicture() মেথডের মাধ্যমে ইমেজের আকার এবং অবস্থান সঠিকভাবে নিয়ন্ত্রণ করা সম্ভব।
অ্যাপাচি পিওআই (Apache POI) ব্যবহার করে Word ডকুমেন্টে ইমেজ যোগ করা সম্ভব। ইমেজ দুটি মূলভাবে Inline Image এবং Anchored Image হিসেবে যোগ করা যেতে পারে। Inline Image হল এমন একটি ইমেজ যা টেক্সটের সঙ্গে সরাসরি যুক্ত থাকে এবং তার সাথে মুভ করে, যেখানে Anchored Image একটি স্থির ইমেজ যা ডকুমেন্টের নির্দিষ্ট স্থানে স্থাপন করা হয় এবং টেক্সটের মধ্য দিয়ে চলে না।
এখানে দুটি ধরনের ইমেজ ব্যবস্থাপনা করার জন্য উদাহরণ দেওয়া হলো।
Inline Image এমন একটি ইমেজ যা টেক্সটের সঙ্গে সরাসরি যুক্ত থাকে এবং তার অবস্থান টেক্সটের বর্তমান অবস্থানের সাথে পরিবর্তিত হয়। এটি সাধারণত টেক্সটের মধ্যে প্রবাহিত হয়ে থাকে।
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
public class AddInlineImage {
public static void main(String[] args) throws Exception {
// নতুন Word ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// Inline Image যোগ করা
FileInputStream imageStream = new FileInputStream("image.jpg");
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));
// টেক্সট যোগ করা
run.addBreak();
run.setText("This is an inline image above the text.");
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("word_with_inline_image.docx")) {
document.write(out);
}
System.out.println("Inline image successfully added!");
}
}
FileInputStream
দিয়ে ইমেজ ফাইলটি লোড করা হয়।run.addPicture()
মেথডের মাধ্যমে Inline Image ডকুমেন্টে যুক্ত করা হয়। Units.toEMU(100)
এর মাধ্যমে ইমেজের আকার নির্ধারণ করা হয় (যা 100 পিক্সেল).word_with_inline_image.docx
নামে ডকুমেন্টটি সেভ করা হয়।Anchored Image এমন একটি ইমেজ যা ডকুমেন্টের নির্দিষ্ট স্থানে এঙ্কর (anchor) করা হয়। এটি স্থির অবস্থানে থাকে এবং টেক্সটের মাঝে চলে না।
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
public class AddAnchoredImage {
public static void main(String[] args) throws Exception {
// নতুন Word ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// Anchored Image যোগ করা
FileInputStream imageStream = new FileInputStream("image.jpg");
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));
// প্যারাগ্রাফে টেক্সট যোগ করা
run.addBreak();
run.setText("This image is anchored to the paragraph.");
// Anchored position সেট করা (যেমন, নীচের দিকে বা পাশে স্থাপন)
XWPFPictureData pictureData = document.getPackage().addPictureData(imageStream, XWPFDocument.PICTURE_TYPE_JPEG);
document.createParagraph().createRun().addPicture(pictureData, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("word_with_anchored_image.docx")) {
document.write(out);
}
System.out.println("Anchored image successfully added!");
}
}
FileInputStream
দিয়ে ইমেজ ফাইলটি লোড করা হয়।run.addPicture()
এর মাধ্যমে Anchored Image ডকুমেন্টে যুক্ত করা হয়।word_with_anchored_image.docx
নামে সেভ করা হয়।Apache POI এর XWPF API ব্যবহার করে আপনি Word ডকুমেন্টে Inline Image এবং Anchored Image যোগ করতে পারেন। Inline Image টেক্সটের মধ্যে প্রবাহিত হয়, যেখানে Anchored Image একটি স্থির অবস্থানে থাকে এবং টেক্সটের মধ্যে চলে না। এই দুটি ইমেজ ব্যবস্থাপনার মাধ্যমে আপনি আপনার ডকুমেন্টের চিত্র ব্যবহার আরও সৃজনশীলভাবে করতে পারেন।
Apache POI লাইব্রেরি ব্যবহার করে Microsoft Word ডকুমেন্টে একাধিক ইমেজ যোগ করা বা পরিচালনা করা সহজ। এটি বিভিন্ন ইমেজ ফরম্যাট সমর্থন করে এবং XWPFRun এবং addPicture() পদ্ধতি ব্যবহার করে একাধিক ইমেজ সন্নিবেশ করা যায়। যখন একাধিক ইমেজ যোগ করতে হয়, তখন XWPFParagraph এবং XWPFRun এর মধ্যে একটি যথাযথ ভারসাম্য প্রয়োজন, যাতে ইমেজগুলিকে সঠিকভাবে ডকুমেন্টে স্থান দেওয়া যায়।
এখানে একাধিক ইমেজের জন্য একটি সাধারণ উদাহরণ দেওয়া হল, যেখানে একের পর এক ইমেজ ডকুমেন্টে যোগ করা হচ্ছে:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;
import java.io.*;
public class MultipleImagesExample {
public static void main(String[] args) {
try {
// নতুন ডকুমেন্ট তৈরি
XWPFDocument document = new XWPFDocument();
// প্রথম প্যারাগ্রাফ তৈরি
XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun run1 = paragraph1.createRun();
// প্রথম ইমেজ যোগ করা
String imagePath1 = "path_to_image1.png"; // প্রথম ইমেজের পাথ
FileInputStream imageStream1 = new FileInputStream(imagePath1);
run1.addPicture(imageStream1, XWPFDocument.PICTURE_TYPE_PNG, imagePath1, Units.toEMU(200), Units.toEMU(200));
// দ্বিতীয় প্যারাগ্রাফ তৈরি
XWPFParagraph paragraph2 = document.createParagraph();
XWPFRun run2 = paragraph2.createRun();
// দ্বিতীয় ইমেজ যোগ করা
String imagePath2 = "path_to_image2.jpg"; // দ্বিতীয় ইমেজের পাথ
FileInputStream imageStream2 = new FileInputStream(imagePath2);
run2.addPicture(imageStream2, XWPFDocument.PICTURE_TYPE_JPEG, imagePath2, Units.toEMU(200), Units.toEMU(200));
// তৃতীয় প্যারাগ্রাফ তৈরি
XWPFParagraph paragraph3 = document.createParagraph();
XWPFRun run3 = paragraph3.createRun();
// তৃতীয় ইমেজ যোগ করা
String imagePath3 = "path_to_image3.gif"; // তৃতীয় ইমেজের পাথ
FileInputStream imageStream3 = new FileInputStream(imagePath3);
run3.addPicture(imageStream3, XWPFDocument.PICTURE_TYPE_GIF, imagePath3, Units.toEMU(200), Units.toEMU(200));
// ডকুমেন্ট সেভ করা
try (FileOutputStream fos = new FileOutputStream("MultipleImagesExample.docx")) {
document.write(fos);
}
System.out.println("একাধিক ইমেজ সফলভাবে ডকুমেন্টে যোগ করা হয়েছে!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
যদি একাধিক ইমেজ একই প্যারাগ্রাফে যোগ করতে চান, তাহলে আপনাকে একই XWPFParagraph এবং XWPFRun ব্যবহার করতে হবে। উদাহরণ হিসেবে, একটি প্যারাগ্রাফে একাধিক ইমেজ যোগ করা হল:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;
import java.io.*;
public class MultipleImagesInOneParagraphExample {
public static void main(String[] args) {
try {
// নতুন ডকুমেন্ট তৈরি
XWPFDocument document = new XWPFDocument();
// এক প্যারাগ্রাফ তৈরি
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// প্রথম ইমেজ যোগ করা
String imagePath1 = "path_to_image1.png";
FileInputStream imageStream1 = new FileInputStream(imagePath1);
run.addPicture(imageStream1, XWPFDocument.PICTURE_TYPE_PNG, imagePath1, Units.toEMU(100), Units.toEMU(100));
// দ্বিতীয় ইমেজ যোগ করা
String imagePath2 = "path_to_image2.jpg";
FileInputStream imageStream2 = new FileInputStream(imagePath2);
run.addPicture(imageStream2, XWPFDocument.PICTURE_TYPE_JPEG, imagePath2, Units.toEMU(100), Units.toEMU(100));
// তৃতীয় ইমেজ যোগ করা
String imagePath3 = "path_to_image3.gif";
FileInputStream imageStream3 = new FileInputStream(imagePath3);
run.addPicture(imageStream3, XWPFDocument.PICTURE_TYPE_GIF, imagePath3, Units.toEMU(100), Units.toEMU(100));
// ডকুমেন্ট সেভ করা
try (FileOutputStream fos = new FileOutputStream("MultipleImagesInOneParagraph.docx")) {
document.write(fos);
}
System.out.println("একাধিক ইমেজ একটি প্যারাগ্রাফে সফলভাবে যোগ করা হয়েছে!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Alignment: আপনি ইমেজের অবস্থান কাস্টমাইজ করতে পারেন, যেমন left, center, বা right:
paragraph.setAlignment(ParagraphAlignment.CENTER);
Apache POI লাইব্রেরি ব্যবহার করে Microsoft Word ডকুমেন্টে একাধিক ইমেজ যোগ করা বেশ সহজ এবং নমনীয়। আপনি বিভিন্ন প্যারাগ্রাফে একাধিক ইমেজ যোগ করতে পারেন, অথবা একই প্যারাগ্রাফে একাধিক ইমেজ সন্নিবেশ করতে পারেন। প্রতিটি ইমেজের সাইজ, অবস্থান এবং ফরম্যাট কাস্টমাইজ করা যায়, যা ডকুমেন্টের চেহারা এবং ডিজাইনকে আরও আকর্ষণীয় করে তোলে।
common.read_more