Apache POI এর XWPF API ব্যবহার করে আপনি Word ডকুমেন্ট থেকে Revision History (সংশোধন ইতিহাস) বের করতে পারেন। Word ডকুমেন্টে যখন কেউ কোনো পরিবর্তন বা সংশোধন করে, তখন সেই সংশোধনগুলি "Track Changes" বা "Revision History" হিসেবে সংরক্ষিত হয়। এটি সাধারণত ডকুমেন্টের সংশোধন, পর্যালোচনা এবং সম্পাদনার ইতিহাস বোঝাতে ব্যবহৃত হয়।
যদিও Apache POI এর মাধ্যমে Track Changes বা Revision History এর পুরোপুরি বিস্তারিত বের করা খুব সহজ নয়, তবে আপনি কিছুটা সংশোধন ইতিহাস এবং সংশোধন করা বিষয়গুলো অ্যাক্সেস করতে পারেন।
Word ডকুমেন্টের সংশোধন ইতিহাস সাধারণত XML ফরম্যাটে সঞ্চিত থাকে। Apache POI ব্যবহার করে আপনি ডকুমেন্টে XWPFRuns, XWPFParagraphs, এবং সংশ্লিষ্ট ডেটা ম্যানিপুলেট করতে পারেন, কিন্তু Track Changes
বা Revision History
সংক্রান্ত তথ্যগুলি আনলক করা কিছুটা জটিল হতে পারে।
Apache POI মূলত ডকুমেন্টের পাঠ্য, প্যারাগ্রাফ এবং রানে কনটেন্ট অ্যাক্সেস করে, তবে "Track Changes" বা Revision History থেকে সম্পূর্ণ তথ্য অ্যাক্সেস করার জন্য কিছু নির্দিষ্ট XML প্রসেসিং প্রয়োজন হয়।
Word ডকুমেন্টে Track Changes সম্বলিত সংশোধন ইতিহাস অ্যাক্সেস করতে, আপনাকে ডকুমেন্টের XML অংশ খোলার এবং সংশোধন সম্পর্কিত ট্যাগগুলি খুঁজে বের করতে হবে। এজন্য Apache POI'র XWPFDocument এবং XWPFParagraph ইন্টারফেসগুলির সাহায্যে ডকুমেন্টের পাঠ্য বিশ্লেষণ করা হয়।
import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class RevisionHistoryExample {
public static void main(String[] args) throws IOException {
// ডকুমেন্ট লোড করা
FileInputStream fis = new FileInputStream("TrackChangesExample.docx");
XWPFDocument document = new XWPFDocument(fis);
// ডকুমেন্টে থাকা সকল প্যারাগ্রাফের জন্য লুপ
List<XWPFParagraph> paragraphs = document.getParagraphs();
for (XWPFParagraph paragraph : paragraphs) {
// প্যারাগ্রাফের মধ্যে থাকা টেক্সট রানে কাজ করা
for (XWPFRun run : paragraph.getRuns()) {
// এখানে আপনি সংশোধিত রানের তথ্য (যদি থাকে) অ্যাক্সেস করতে পারবেন
if (run.getCTR().isSetIns()) { // যদি ইনসার্টেড টেক্সট থাকে
System.out.println("Inserted Text: " + run.getText(0));
}
if (run.getCTR().isSetDel()) { // যদি ডিলিটেড টেক্সট থাকে
System.out.println("Deleted Text: " + run.getText(0));
}
}
}
fis.close();
}
}
এখানে run.getCTR().isSetIns() এবং run.getCTR().isSetDel() ব্যবহার করা হয়েছে। এই মেথডগুলো Word ডকুমেন্টে সংশোধন (inserted) বা মুছে ফেলা (deleted) টেক্সট শনাক্ত করতে সাহায্য করে।
এছাড়া, Word ডকুমেন্টের underlying XML ফাইলের মাধ্যমে আরও গভীরভাবে Track Changes অ্যাক্সেস করা সম্ভব। XWPFDocument এর মাধ্যমে XML কন্টেন্ট পার্স করার জন্য আপনি XmlCursor ব্যবহার করতে পারেন।
import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;
import java.io.FileInputStream;
import java.io.IOException;
public class TrackChangesXMLParsing {
public static void main(String[] args) throws IOException {
// ডকুমেন্ট লোড করা
FileInputStream fis = new FileInputStream("TrackChangesExample.docx");
XWPFDocument document = new XWPFDocument(fis);
// ডকুমেন্টের underlying XML কন্টেন্টে প্রবেশ করা
XmlCursor cursor = document.getDocument().newCursor();
// XML ট্যাগ অনুসন্ধান
cursor.selectPath("./*");
while(cursor.toNextSelection()) {
String tagName = cursor.getName().getLocalPart();
if (tagName.equals("w:ins")) {
System.out.println("Inserted text detected in XML: " + cursor.getTextValue());
}
if (tagName.equals("w:del")) {
System.out.println("Deleted text detected in XML: " + cursor.getTextValue());
}
}
fis.close();
}
}
এখানে, XmlCursor ব্যবহার করে ডকুমেন্টের underlying XML ফাইলের মধ্যে "inserted" (w:ins) এবং "deleted" (w:del) ট্যাগগুলি অনুসন্ধান করা হচ্ছে।
Apache POI ব্যবহার করে Track Changes বা Revision History এর তথ্য অ্যাক্সেস করতে হলে, আপনাকে মূলত XML ফরম্যাটে সঞ্চিত সংশোধিত (inserted) এবং মুছে ফেলা (deleted) টেক্সটের উপর নজর রাখতে হবে। যদিও Apache POI সরাসরি পুরো সংশোধন ইতিহাস বা "Track Changes" এর বিস্তারিত প্রদর্শন করতে সক্ষম নয়, তবে আপনি কিছুটা টেক্সট সংশোধন যেমন inserted এবং deleted অংশগুলো অ্যাক্সেস করতে পারবেন। XmlCursor এবং XWPFRun এর মাধ্যমে XML প্রসেসিং করার মাধ্যমে এটি সম্ভব।
common.read_more