Apache POI ব্যবহার করে Microsoft Office ফাইল যেমন Excel, Word, এবং PowerPoint-এ অন্তর্ভুক্ত embedded objects (যেমন: ছবি, গ্রাফ, টেবিল, অন্যান্য ডকুমেন্টস) পরিচালনা এবং এক্সট্র্যাক্ট করা সম্ভব। যদিও POI মূলত Office ফাইলের কন্টেন্ট (যেমন: টেক্সট, সেল, প্যারাগ্রাফ) ম্যানিপুলেট করার জন্য ব্যবহৃত, কিছু সীমিত ফিচার দিয়ে এম্বেডেড অবজেক্ট এক্সট্র্যাকশনও সম্ভব।
এটি সাধারণত OLE (Object Linking and Embedding) অবজেক্ট বা VBA Macros, পিডিএফ, এমবেডেড ইমেজ, এবং অন্যান্য প্রকারের অর্গানাইজড কন্টেন্টের মধ্যে ব্যবহৃত হয়।
এই পোস্টে আমরা Apache POI দিয়ে embedded objects ম্যানিপুলেশন এবং এক্সট্র্যাকশন করার কিছু পদ্ধতি আলোচনা করব।
১. Embedded Images এক্সট্র্যাকশন (Excel)
যখন একটি Excel ফাইলে এম্বেডেড ইমেজ থাকে, তখন POI ব্যবহার করে সেই ইমেজগুলো এক্সট্র্যাক্ট করা সম্ভব। এখানে, আমরা XSSFSheet এর মাধ্যমে এম্বেডেড ইমেজের ডেটা উদ্ধার করব।
কোড উদাহরণ: Excel ফাইলে Embedded Image Extraction
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xssf.usermodel.XSSFPictureData;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
public class ExcelImageExtraction {
public static void main(String[] args) throws IOException, InvalidFormatException {
// Excel ফাইলের ইনপুট স্ট্রিম
FileInputStream fis = new FileInputStream(new File("embeddedImageExample.xlsx"));
// XSSFWorkbook তৈরি করা
XSSFWorkbook workbook = new XSSFWorkbook(fis);
// ইমেজ ডাটা খোঁজা
List<XSSFPictureData> pictures = workbook.getAllPictures();
// ইমেজ এক্সট্র্যাক্ট করা
for (XSSFPictureData picture : pictures) {
byte[] data = picture.getData();
FileOutputStream fos = new FileOutputStream("extractedImage" + picture.suggestFileExtension());
fos.write(data);
fos.close();
}
// Excel ফাইল বন্ধ করা
workbook.close();
fis.close();
System.out.println("ইমেজ সফলভাবে এক্সট্র্যাক্ট করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- getAllPictures(): এই মেথডটি Excel ফাইলে থাকা সব ইমেজকে একত্রিত করে দেয়।
- XSSFPictureData: এটি এম্বেডেড ছবির ডেটা ধারণ করে, যা এক্সট্র্যাক্ট করা সম্ভব।
- ছবির byte[] ডেটা এক্সট্র্যাক্ট করা এবং ফাইল আউটপুট স্ট্রিমে লিখে দেওয়া হয়।
২. Embedded Objects Extraction in Word (DOCX)
Word ডকুমেন্টের মধ্যে এম্বেডেড অবজেক্ট যেমন PDF, Excel, বা অন্য কোনো ফাইল থাকে, সেটি Apache POI দিয়ে এক্সট্র্যাক্ট করা কিছুটা জটিল হতে পারে। তবে, আপনি XWPF API ব্যবহার করে এই এম্বেডেড অবজেক্টের ডেটা পেতে পারেন।
কোড উদাহরণ: Word ডকুমেন্ট থেকে Embedded Object Extraction
import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class WordEmbeddedObjectExtraction {
public static void main(String[] args) throws IOException {
// Word ডকুমেন্ট খোলা
FileInputStream fis = new FileInputStream(new File("embeddedObjectExample.docx"));
XWPFDocument document = new XWPFDocument(fis);
// ডকুমেন্টের প্যারাগ্রাফের মধ্যে এম্বেডেড অবজেক্ট খোঁজা
for (XWPFParagraph paragraph : document.getParagraphs()) {
XmlCursor cursor = paragraph.getCTP().newCursor();
if (cursor.toNextToken() == XmlCursor.TokenType.START) {
System.out.println("এম্বেডেড অবজেক্ট পাওয়া গেছে!");
// প্রয়োজনে অবজেক্ট এক্সট্র্যাক্ট বা প্রসেস করা যেতে পারে
}
}
fis.close();
document.close();
System.out.println("Word ডকুমেন্ট থেকে এম্বেডেড অবজেক্ট খোঁজা সম্পন্ন!");
}
}
কোড ব্যাখ্যা:
- XmlCursor: এম্বেডেড অবজেক্ট খুঁজে বের করার জন্য XML Cursor ব্যবহার করা হচ্ছে। যদিও POI সরাসরি এম্বেডেড অবজেক্ট এক্সট্র্যাক্ট করার সাপোর্ট দেয় না, তবে XMLBeans এর মাধ্যমে এম্বেডেড অবজেক্টগুলোর অবস্থান নির্ণয় করা সম্ভব।
৩. Embedded Object Extraction in PowerPoint (PPTX)
PowerPoint প্রেজেন্টেশনের মধ্যে এম্বেডেড অবজেক্ট যেমন Excel শীট বা PDF ফাইল সংযুক্ত থাকলে, সেই অবজেক্ট গুলি এক্সট্র্যাক্ট করার জন্য POI একটি নির্দিষ্ট API সরবরাহ করে না। তবে আপনি HSLF বা XSLF API ব্যবহার করে প্রেজেন্টেশনের মধ্যে থাকা Picture বা Shape এর ডেটা বের করতে পারেন।
কোড উদাহরণ: PowerPoint থেকে Embedded Image Extraction
import org.apache.poi.xslf.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
public class PowerPointImageExtraction {
public static void main(String[] args) throws IOException {
// PowerPoint ফাইলের ইনপুট স্ট্রিম
FileInputStream fis = new FileInputStream(new File("embeddedImagePowerPoint.pptx"));
// PowerPoint প্রেজেন্টেশন তৈরি করা
XMLSlideShow ppt = new XMLSlideShow(fis);
// স্লাইডের মধ্যে ইমেজ খোঁজা
List<XSLFPictureData> pictures = ppt.getPictures();
// ইমেজ এক্সট্র্যাক্ট করা
for (XSLFPictureData picture : pictures) {
byte[] data = picture.getData();
FileOutputStream fos = new FileOutputStream("extractedImage" + picture.suggestFileExtension());
fos.write(data);
fos.close();
}
// PowerPoint ফাইল বন্ধ করা
ppt.close();
fis.close();
System.out.println("PowerPoint থেকে ইমেজ এক্সট্র্যাক্ট করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- XSLFPictureData: এম্বেডেড ছবি বা গ্রাফ খুঁজে বের করার জন্য XSLF API এর ব্যবহার।
- getPictures(): PowerPoint প্রেজেন্টেশনের সকল এম্বেডেড ছবির তথ্য নিয়ে আসে।
৪. Embedding Files into Office Documents
Apache POI এর মাধ্যমে আপনি অফিস ডকুমেন্টে EMBED ফাইলও অন্তর্ভুক্ত করতে পারেন। এর মাধ্যমে আপনি বিভিন্ন ফাইল (যেমন: Excel, PDF, Word) এম্বেড করে রাখতে পারেন।
কোড উদাহরণ: Excel ডকুমেন্টে এম্বেডেড ফাইল যোগ করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelEmbedFileExample {
public static void main(String[] args) throws IOException {
// Excel Workbook তৈরি করা
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// ফাইল এম্বেড করা
// এম্বেড করার জন্য OLE Object বা Excel এর স্টাইল অনুসরণ করতে হবে
// এখানে একটি ফাইল এম্বেড করা যেতে পারে (যেমন: PDF, Excel, etc.)
// Excel ফাইল সেভ করা
FileOutputStream fileOut = new FileOutputStream("embeddedFileExcel.xlsx");
workbook.write(fileOut);
fileOut.close();
workbook.close();
System.out.println("Excel ডকুমেন্টে ফাইল এম্বেড করা হয়েছে!");
}
}
Apache POI এর মাধ্যমে embedded objects ম্যানিপুলেশন এবং এক্সট্র্যাকশন সম্ভব, তবে এটি বেশ কিছু সীমাবদ্ধতার মধ্যে পড়ে। আপনি Excel, Word, এবং PowerPoint ডকুমেন্টে এম্বেডেড ইমেজ, PDF, Excel শীট, বা অন্যান্য ডেটা এক্সট্র্যাক্ট এবং এম্বেড করতে পারেন। তবে, কিছু ক্ষেত্রে যেমন OLE objects বা অন্যান্য ফাইলের এক্সট
্র্যাকশন করতে POI সরাসরি সমর্থন না দিলেও, Java এর অন্যান্য টুলস বা লাইব্রেরি ব্যবহার করে এই ধরনের ফিচার সম্পন্ন করা সম্ভব।
Read more