Track Changes এবং Revision Management

Java Technologies - অ্যাপাচি পিওআই (ওয়ার্ড)
216
216

Track Changes এবং Revision Management হল এমন দুটি গুরুত্বপূর্ণ ফিচার, যা Microsoft Word ডকুমেন্টে পরিবর্তনগুলি ট্র্যাক করার জন্য ব্যবহৃত হয়। এই ফিচারগুলি বিশেষভাবে Collaborative editing বা Document review প্রক্রিয়ায় ব্যবহৃত হয়, যেখানে একাধিক ব্যক্তি একসাথে ডকুমেন্টে পরিবর্তন করে এবং সেই পরিবর্তনগুলি পর্যালোচনা করা হয়।

Apache POI লাইব্রেরি ব্যবহার করে আপনি Track Changes (পরিবর্তন ট্র্যাক করা) এবং Revision Management (পরিবর্তন পরিচালনা) সিস্টেম তৈরি করতে পারেন, যা ডকুমেন্টে যে কোন ধরণের পরিবর্তন যেমন Insertions, Deletions, এবং Formatting Changes ট্র্যাক করতে সহায়তা করে।


Track Changes কনফিগারেশন (Tracking Changes)

Microsoft Word ডকুমেন্টে Track Changes ব্যবহার করতে হলে, আপনাকে ডকুমেন্টের পরিবর্তনগুলি চিহ্নিত করার জন্য XWPFDocument এর কিছু বিশেষ কনফিগারেশন এবং ফিচার ব্যবহার করতে হবে। যখন কোন পরিবর্তন করা হয়, এটি ডকুমেন্টের সাথে যুক্ত হয় এবং সেই পরিবর্তনগুলির চিহ্ন থাকে।

আপনি Insert, Delete, এবং Format পরিবর্তন ট্র্যাক করতে পারবেন।

উদাহরণ: Track Changes এর জন্য Insert এবং Delete পরিবর্তন ট্র্যাক করা

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class TrackChangesExample {
    public static void main(String[] args) {
        try {
            // নতুন Word ডকুমেন্ট তৈরি করা
            XWPFDocument document = new XWPFDocument();

            // প্রথম প্যারাগ্রাফ
            XWPFParagraph paragraph1 = document.createParagraph();
            XWPFRun run1 = paragraph1.createRun();
            run1.setText("This is the original text.");

            // Delete পরিবর্তন (এটি ডিলিট করে)
            XWPFRun deletedText = paragraph1.createRun();
            deletedText.setText("This part will be deleted.");
            deletedText.setStrikeThrough(true); // এটি স্ট্রাইকথ্রু (কাটা) হবে

            // Insert পরিবর্তন (এটি নতুন টেক্সট ইনসার্ট করে)
            XWPFRun insertedText = paragraph1.createRun();
            insertedText.setText("This is inserted text.");
            insertedText.setBold(true); // ইনসার্ট করা টেক্সট বোল্ড হবে

            // Word ডকুমেন্ট সেভ করা
            FileOutputStream out = new FileOutputStream("track_changes_example.docx");
            document.write(out);
            out.close();

            System.out.println("Word document created with tracked changes.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • setStrikeThrough(true) ব্যবহার করে একটি অংশ Delete পরিবর্তন হিসেবে ট্র্যাক করা হয়েছে, অর্থাৎ, এটি ডিলিট করা হবে।
  • setBold(true) ব্যবহার করে নতুন টেক্সট Insert পরিবর্তন হিসেবে ট্র্যাক করা হয়েছে, অর্থাৎ, এটি ডকুমেন্টে নতুন ইনসার্ট হবে।

Revision Management (পরিবর্তন পরিচালনা)

Revision Management হল ডকুমেন্টের সমস্ত পরিবর্তন এবং সংশোধন ট্র্যাক করার প্রক্রিয়া। Word ডকুমেন্টে যে কোন পরিবর্তন বা সংশোধন Revisions হিসেবে চিহ্নিত করা যায়। এই পরিবর্তনগুলি আপনি অনুমোদন বা অস্বীকার করতে পারেন এবং সেগুলি প্রদর্শিত হতে পারে বা সরানো যেতে পারে।

Apache POI লাইব্রেরি Track Changes এর মাধ্যমে পরিবর্তনগুলি পরিচালনা করতে সহায়তা করে, কিন্তু নেটিভভাবে Word Revisions তৈরি বা পরিচালনা করার জন্য কিছু অতিরিক্ত কনফিগারেশন প্রয়োজন।

যদিও Apache POI লাইব্রেরি এখনও সরাসরি রিভিশনগুলি পরিচালনা বা অনুমোদন/অস্বীকার করতে সক্ষম নয়, তবে এটি Track Changes সিস্টেমের মাধ্যমে কিছু মৌলিক পরিবর্তন ট্র্যাক করতে সহায়তা করে।

উদাহরণ: Track Changes-এর মাধ্যমে পরিবর্তন পরিচালনা

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class RevisionManagementExample {
    public static void main(String[] args) {
        try {
            // নতুন Word ডকুমেন্ট তৈরি করা
            XWPFDocument document = new XWPFDocument();

            // প্রথম প্যারাগ্রাফ
            XWPFParagraph paragraph1 = document.createParagraph();
            XWPFRun run1 = paragraph1.createRun();
            run1.setText("Original text for revision tracking.");

            // প্রথম পরিবর্তন: Deletion (Text will be struck through)
            XWPFRun deletedText = paragraph1.createRun();
            deletedText.setText("This text is deleted.");
            deletedText.setStrikeThrough(true); // Strike-through means deleted

            // দ্বিতীয় পরিবর্তন: Insertion (New text inserted)
            XWPFRun insertedText = paragraph1.createRun();
            insertedText.setText("Inserted text in the document.");
            insertedText.setItalic(true); // Inserted text will be italic

            // Word ডকুমেন্ট সেভ করা
            FileOutputStream out = new FileOutputStream("revision_management_example.docx");
            document.write(out);
            out.close();

            System.out.println("Word document created with revision tracking.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Strike-through এবং Italic স্টাইল ব্যবহার করে ডকুমেন্টে Insertion এবং Deletion পরিবর্তনগুলো চিহ্নিত করা হয়েছে।
  • রিভিশনগুলি টেক্সটের মাধ্যমে চিহ্নিত হচ্ছে, যা Track Changes এর মাধ্যমে করা হয়েছে।

Track Changes এবং Revision Management এর মধ্যে পার্থক্য

  1. Track Changes: এই ফিচারটি ব্যবহার করে আপনি ডকুমেন্টে যে কোনো পরিবর্তন ট্র্যাক করতে পারেন, যেমন ইনসার্ট বা ডিলিট। এর মাধ্যমে ডকুমেন্টে কী কী পরিবর্তন হয়েছে এবং কী পরিবর্তন অনুমোদিত হয়েছে তা দেখা যায়।
  2. Revision Management: এই ফিচারটি ডকুমেন্টে সমস্ত সংশোধন এবং পরিবর্তন ব্যবস্থাপনা করতে সহায়তা করে। এটি সাধারণত accept বা reject করার অপশন দেয় এবং রিভিশনগুলিকে অনুমোদিত বা অস্বীকার করতে পারে।

সারাংশ

Apache POI লাইব্রেরি ব্যবহার করে আপনি Word ডকুমেন্টে Track Changes এবং Revision Management কনফিগারেশন করতে পারেন। আপনি Insertions এবং Deletions ট্র্যাক করতে পারেন এবং Strike-throughBold এর মাধ্যমে পরিবর্তনগুলো চিহ্নিত করতে পারেন। যদিও Revision Management এর পূর্ণাঙ্গ ফিচারগুলি Apache POI এ সরাসরি সমর্থিত নয়, তবে Track Changes এর মাধ্যমে মৌলিক পরিবর্তন পরিচালনা করা সম্ভব।

common.content_added_by

Track Changes ফিচার ব্যবহারের কৌশল

113
113

Apache POI লাইব্রেরি ব্যবহার করে আপনি Word ডকুমেন্টে Track Changes ফিচার ব্যবহার করতে পারেন, যা মূলত ডকুমেন্টের পরিবর্তনগুলির ট্র্যাকিং এবং revisions দেখার জন্য ব্যবহৃত হয়। এই ফিচারটি comments, insertions, deletions এবং format changes ট্র্যাক করতে সক্ষম। যখন একজন ব্যবহারকারী ডকুমেন্টে কোনো পরিবর্তন করে, এই পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে চিহ্নিত হয়।

এখানে আমরা দেখাবো কীভাবে Track Changes যোগ করা যায় এবং কিভাবে তা কাস্টমাইজ করা যায়।


Track Changes ফিচার ব্যবহার করার উদাহরণ

import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;

import java.io.*;

public class TrackChangesExample {
    public static void main(String[] args) {
        try {
            // নতুন Word ডকুমেন্ট তৈরি করা
            XWPFDocument document = new XWPFDocument();

            // প্রথম প্যারাগ্রাফ তৈরি
            XWPFParagraph paragraph = document.createParagraph();
            XWPFRun run = paragraph.createRun();
            run.setText("এই ডকুমেন্টে Track Changes ফিচার ব্যবহার করা হচ্ছে।");

            // ইনসার্ট এবং ডিলিট টেক্সট ট্র্যাকিং
            XWPFRun run1 = paragraph.createRun();
            run1.setText("এটি ইনসার্ট করা টেক্সট।");
            run1.getCTR().addNewRPr().addNewRStyle().setVal("TrackChangesIn");

            // ডিলিট টেক্সট
            XWPFRun run2 = paragraph.createRun();
            run2.setText("এটি ডিলিট করা টেক্সট।");
            run2.getCTR().addNewRPr().addNewRStyle().setVal("TrackChangesDel");

            // ট্র্যাক করা মন্তব্য যোগ করা
            paragraph = document.createParagraph();
            XWPFRun run3 = paragraph.createRun();
            run3.setText("এই অংশে একটি মন্তব্য রয়েছে।");
            paragraph.setComment("Commenter Name", "2024-12-17", "মন্তব্যের বিষয়বস্তু");

            // ডকুমেন্টটি সেভ করা
            FileOutputStream out = new FileOutputStream("document_with_track_changes.docx");
            document.write(out);
            out.close();

            System.out.println("Track Changes সফলভাবে যোগ করা হয়েছে!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

কোড বিশ্লেষণ:

  1. XWPFDocument: একটি নতুন .docx ডকুমেন্ট তৈরি করা হয়।
  2. createParagraph(): একটি নতুন প্যারাগ্রাফ তৈরি করা হয়।
  3. createRun(): একটি রান তৈরি করে, যা টেক্সট ধারণ করবে।
  4. setText(): রান-এর মধ্যে টেক্সট সেট করা হয়।
  5. Track Changes:
    • Insertion (ইনসার্ট): run1.getCTR().addNewRPr().addNewRStyle().setVal("TrackChangesIn") এই কোডটি ইনসার্ট করা টেক্সটের জন্য ব্যবহার করা হয়, যা ট্র্যাক করা পরিবর্তন দেখায়।
    • Deletion (ডিলিট): run2.getCTR().addNewRPr().addNewRStyle().setVal("TrackChangesDel") এই কোডটি ডিলিট করা টেক্সটের জন্য ব্যবহৃত হয়।
  6. setComment(): মন্তব্য যোগ করার জন্য এটি ব্যবহার করা হয়, যাতে মন্তব্যের টেক্সট এবং মন্তব্যকারী নাম সঠিকভাবে ট্র্যাক হয়।
  7. FileOutputStream: ডকুমেন্টটি সেভ করা হয়।

এই কোডটি একটি Word ডকুমেন্ট তৈরি করবে, যার মধ্যে Track Changes এর মাধ্যমে ইনসার্ট এবং ডিলিট করা টেক্সট সহ মন্তব্য যোগ করা হয়েছে।


Track Changes কাস্টমাইজেশন

আপনি Track Changes কাস্টমাইজ করতে পারেন যেমন:

  • ইনসার্টেড টেক্সটের ফন্ট কালার পরিবর্তন।
  • ডিলিটেড টেক্সট এর জন্য স্টাইল বা লাইন স্ট্রাইক করা।

১. ইনসার্ট করা টেক্সটের জন্য ফন্ট স্টাইল কাস্টমাইজ করা:

run1.getCTR().addNewRPr().addNewRStyle().setVal("TrackChangesIn");
run1.setColor("FF5733");  // ইনসার্ট করা টেক্সটের জন্য লাল রঙ

২. ডিলিট করা টেক্সটের জন্য লাইন স্ট্রাইক করা:

run2.getCTR().addNewRPr().addNewStrike();

৩. ট্র্যাক করা মন্তব্যের কাস্টমাইজেশন:

paragraph.setComment("Commenter Name", "2024-12-17", "এই অংশে মন্তব্য করা হয়েছে।");

সারাংশ

Apache POI লাইব্রেরি ব্যবহার করে আপনি Track Changes ফিচার অ্যাক্টিভেট করতে পারেন, যা insertions, deletions, এবং formatting changes ট্র্যাক করতে সক্ষম। XWPFRun ক্লাসের মাধ্যমে ইনসার্ট এবং ডিলিট করা টেক্সটের স্টাইল এবং setComment() মেথডের মাধ্যমে মন্তব্য যোগ করা যায়। আপনি কাস্টম স্টাইল এবং অন্যান্য ফরম্যাটিং অপশন ব্যবহার করে ট্র্যাক করা পরিবর্তনগুলির চেহারা পরিবর্তন করতে পারবেন।


common.content_added_by

Revision History Extraction

138
138

Apache POI এর XWPF API ব্যবহার করে আপনি Word ডকুমেন্ট থেকে Revision History (সংশোধন ইতিহাস) বের করতে পারেন। Word ডকুমেন্টে যখন কেউ কোনো পরিবর্তন বা সংশোধন করে, তখন সেই সংশোধনগুলি "Track Changes" বা "Revision History" হিসেবে সংরক্ষিত হয়। এটি সাধারণত ডকুমেন্টের সংশোধন, পর্যালোচনা এবং সম্পাদনার ইতিহাস বোঝাতে ব্যবহৃত হয়।

যদিও Apache POI এর মাধ্যমে Track Changes বা Revision History এর পুরোপুরি বিস্তারিত বের করা খুব সহজ নয়, তবে আপনি কিছুটা সংশোধন ইতিহাস এবং সংশোধন করা বিষয়গুলো অ্যাক্সেস করতে পারেন।


Revision History Extraction - প্রাথমিক ধারণা

Word ডকুমেন্টের সংশোধন ইতিহাস সাধারণত XML ফরম্যাটে সঞ্চিত থাকে। Apache POI ব্যবহার করে আপনি ডকুমেন্টে XWPFRuns, XWPFParagraphs, এবং সংশ্লিষ্ট ডেটা ম্যানিপুলেট করতে পারেন, কিন্তু Track Changes বা Revision History সংক্রান্ত তথ্যগুলি আনলক করা কিছুটা জটিল হতে পারে।

Apache POI মূলত ডকুমেন্টের পাঠ্য, প্যারাগ্রাফ এবং রানে কনটেন্ট অ্যাক্সেস করে, তবে "Track Changes" বা Revision History থেকে সম্পূর্ণ তথ্য অ্যাক্সেস করার জন্য কিছু নির্দিষ্ট XML প্রসেসিং প্রয়োজন হয়।


Track Changes বা Revision History Extraction কিভাবে করবেন

Word ডকুমেন্টে Track Changes সম্বলিত সংশোধন ইতিহাস অ্যাক্সেস করতে, আপনাকে ডকুমেন্টের XML অংশ খোলার এবং সংশোধন সম্পর্কিত ট্যাগগুলি খুঁজে বের করতে হবে। এজন্য Apache POI'র XWPFDocument এবং XWPFParagraph ইন্টারফেসগুলির সাহায্যে ডকুমেন্টের পাঠ্য বিশ্লেষণ করা হয়।

Example: Track Changes / Revision History Extraction

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) টেক্সট শনাক্ত করতে সাহায্য করে।

  • Inserted Text: এটি সেই টেক্সট যা ডকুমেন্টে নতুনভাবে যোগ করা হয়েছে।
  • Deleted Text: এটি সেই টেক্সট যা ডকুমেন্ট থেকে মুছে ফেলা হয়েছে।

XML Parsing মাধ্যমে Track Changes বা Revision History Extraction

এছাড়া, Word ডকুমেন্টের underlying XML ফাইলের মাধ্যমে আরও গভীরভাবে Track Changes অ্যাক্সেস করা সম্ভব। XWPFDocument এর মাধ্যমে XML কন্টেন্ট পার্স করার জন্য আপনি XmlCursor ব্যবহার করতে পারেন।

Example: XML Parsing এর মাধ্যমে Track Changes

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.content_added_by

পরিবর্তিত ডকুমেন্টে Accept এবং Reject করা

126
126

Apache POI-এর মাধ্যমে আপনি Microsoft Word ডকুমেন্টে Track Changes (পরিবর্তন ট্র্যাকিং) পরিচালনা করতে পারেন। পরিবর্তন ট্র্যাকিং ব্যবহৃত হয় যখন ডকুমেন্টে কিছু সংশোধন বা পরিবর্তন করা হয় এবং আপনি সেগুলিকে Accept (গ্রহণ) বা Reject (অস্বীকার) করতে চান। এই প্রক্রিয়া সাধারণত ডকুমেন্টের রিভিউ প্রক্রিয়ার অংশ হিসেবে ব্যবহৃত হয়, যেখানে ব্যবহারকারীরা মন্তব্য করে এবং সংশোধন সুপারিশ করতে পারেন।

Apache POI লাইব্রেরি সরাসরি পরিবর্তন ট্র্যাকিংয়ের কার্যকারিতা (যেমন, Accept এবং Reject করা) নিয়ে কাজ করতে সক্ষম নয়, কারণ এটি মূলত XWPF API দিয়ে Word ডকুমেন্টের কনটেন্টে পরিবর্তন বা সংশোধন করা সমর্থন করে। তবে, POI লাইব্রেরির মাধ্যমে Track Changes এবং সংশোধিত কনটেন্ট দেখতে এবং প্রোগ্রাম্যাটিকভাবে কার্যক্রম পরিচালনা করতে কিছু workaround বা টেকনিক্যাল কৌশল ব্যবহার করা সম্ভব।

নিচে কিছু উদাহরণ দেওয়া হয়েছে যেখানে Track Changes ব্যবহৃত ডকুমেন্টের মধ্যে Accept এবং Reject করার কৌশল নিয়ে আলোচনা করা হয়েছে:


১. Word ডকুমেন্টে Track Changes সক্রিয় করা

Track Changes বা পরিবর্তন ট্র্যাকিং সক্রিয় করার জন্য, প্রথমে আপনাকে Word ডকুমেন্টের Track Changes ফিচারটি চালু করতে হবে। এটি সাধারণত Word এ রিভিউ ট্যাবের মাধ্যমে করা হয়, তবে POI API দিয়ে সরাসরি এই কাজটি করা সম্ভব নয়। তবে, আপনি যদি আগে থেকেই ট্র্যাকড ডকুমেন্ট পেয়ে থাকেন, তখন আপনি তার পরিবর্তনগুলো পড়তে বা সমন্বয় করতে পারবেন।


২. Word ডকুমেন্টে Track Changes পড়া

Apache POI-এ Track Changes পড়ার জন্য, XML ফরম্যাটে থাকা Word ডকুমেন্টের পরিবর্তনগুলোর উপর কাজ করতে হয়। নিচে একটি উদাহরণ দেয়া হল যেখানে Track Changes থেকে সংশোধিত অংশ বের করা হয়েছে।

import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadTrackChangesExample {
    public static void main(String[] args) throws IOException {
        // ডকুমেন্ট লোড করা
        XWPFDocument document = new XWPFDocument(new FileInputStream("track_changes_example.docx"));
        
        // ডকুমেন্টে থাকা সকল ট্র্যাকড পরিবর্তন (Track Changes) পড়া
        XmlCursor cursor = document.getDocument().newCursor();
        cursor.selectPath("./*");
        while (cursor.toNextSelection()) {
            if (cursor.getName().getLocalPart().equals("w:ins")) { // Inserted text (Addition)
                System.out.println("Inserted Text: " + cursor.getTextValue());
            } else if (cursor.getName().getLocalPart().equals("w:del")) { // Deleted text
                System.out.println("Deleted Text: " + cursor.getTextValue());
            }
        }
    }
}

এই কোডের মাধ্যমে, আপনি ডকুমেন্টে Inserted (নতুন টেক্সট) এবং Deleted (মুছে ফেলা টেক্সট) অংশগুলি পড়তে পারবেন।


৩. Changes (পরিবর্তন) গ্রহণ করা (Accept)

Changes বা সংশোধনগুলো Accept করতে POI লাইব্রেরি সরাসরি কাজ করে না, কারণ এটি মূলত ডকুমেন্টের কনটেন্ট ম্যানিপুলেশন করে, কিন্তু Track Changes-এর মধ্যে কার্যকরভাবে Accept বা Reject পরিচালনা করতে POI-এর অভ্যন্তরীণ ফিচার প্রয়োজন হয় যা বর্তমানে POI-এর মধ্যে নেই।

তবে, আপনি পরিবর্তনগুলোকে কাস্টমভাবে Accept করার জন্য নতুন কনটেন্ট ম্যানিপুলেশন করতে পারেন, যেমন একটি inserted text (নতুন টেক্সট) গ্রহণ করা এবং মুছে ফেলা অংশ সরিয়ে ফেলা। নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে Inserted Text গ্রহণ করা হয়েছে:

import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class AcceptChangesExample {
    public static void main(String[] args) throws IOException {
        // ডকুমেন্ট লোড করা
        XWPFDocument document = new XWPFDocument(new FileInputStream("track_changes_example.docx"));
        
        // ডকুমেন্টে ট্র্যাকড পরিবর্তনগুলির ওপর কাজ করা
        XmlCursor cursor = document.getDocument().newCursor();
        cursor.selectPath("./*");
        
        while (cursor.toNextSelection()) {
            // Insertion (Inserted text) গ্রহণ করা
            if (cursor.getName().getLocalPart().equals("w:ins")) {
                String insertedText = cursor.getTextValue();
                System.out.println("Accepted Text: " + insertedText);
                
                // নতুন টেক্সট যোগ করা (Accepted Change)
                XWPFParagraph para = document.createParagraph();
                XWPFRun run = para.createRun();
                run.setText(insertedText);  // Accept the inserted text
            }
        }
        
        // পরিবর্তিত ডকুমেন্ট সেভ করা
        FileOutputStream out = new FileOutputStream("accepted_changes.docx");
        document.write(out);
        out.close();
    }
}

এখানে, Inserted Text (নতুন টেক্সট) গ্রহণ করা হয়েছে এবং ডকুমেন্টে নতুন টেক্সট যোগ করা হয়েছে।


৪. Changes (পরিবর্তন) প্রত্যাখ্যান করা (Reject)

Reject বা বাতিল করার জন্য, আপনি deleted text বা inserted text-কে প্রোগ্রাম্যাটিকভাবে মুছে ফেলতে পারেন। এই কাজটি করতে, Track Changes-এর মধ্যে deleted text (মুছে ফেলা টেক্সট) থেকে উপযুক্ত অংশগুলো সরিয়ে দিতে হবে।

import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class RejectChangesExample {
    public static void main(String[] args) throws IOException {
        // ডকুমেন্ট লোড করা
        XWPFDocument document = new XWPFDocument(new FileInputStream("track_changes_example.docx"));
        
        // ডকুমেন্টে ট্র্যাকড পরিবর্তনগুলির ওপর কাজ করা
        XmlCursor cursor = document.getDocument().newCursor();
        cursor.selectPath("./*");

        while (cursor.toNextSelection()) {
            // Deleted text (বাতিল করা টেক্সট) সরিয়ে ফেলা
            if (cursor.getName().getLocalPart().equals("w:del")) {
                System.out.println("Rejected Text: " + cursor.getTextValue());
                
                // Deleted text বাদ দেওয়া (Reject the change)
                // এখানে আপনি কনটেন্ট মুছে ফেলতে পারেন বা কিছু পরিবর্তন করতে পারেন
            }
        }
        
        // পরিবর্তিত ডকুমেন্ট সেভ করা
        FileOutputStream out = new FileOutputStream("rejected_changes.docx");
        document.write(out);
        out.close();
    }
}

এখানে, Deleted Text (মুছে ফেলা টেক্সট) Reject করা হয়েছে এবং সেই অংশ ডকুমেন্ট থেকে সরিয়ে ফেলা হয়েছে।


৫. সারাংশ

Apache POI সরাসরি Track Changes থেকে Accept এবং Reject করার জন্য পূর্ণাঙ্গ সমর্থন প্রদান না করলেও, Inserted Text এবং Deleted Text-এর ওপর কার্যক্রম পরিচালনা করা সম্ভব। আপনি Track Changes পদ্ধতিতে তৈরি ডকুমেন্টে মন্তব্যের মতো সংশোধনগুলো কাস্টমভাবে Accept বা Reject করতে পারেন, যদিও এটি POI-এর সরাসরি সমর্থন নয়।

এছাড়া, Track Changes-এর ডেটা XML স্ট্রাকচার হিসেবে থাকে, যাকে আপনি XmlCursor ব্যবহার করে প্রসেস করতে পারেন এবং সংশোধনগুলো হাতে সমন্বয় করতে পারেন।

common.content_added_by

Comments এবং Changes এর সম্পর্ক ব্যবস্থাপনা

109
109

Apache POI ব্যবহার করে Microsoft Word (DOCX) ডকুমেন্টে comments এবং changes (যেমন, track changes বা revisions) যোগ করা এবং তাদের সম্পর্ক ব্যবস্থাপনা করা সম্ভব। Track changes ফিচারটি ডকুমেন্টের পরিবর্তনগুলির ইতিহাস এবং সংশোধনীকে সঠিকভাবে ট্র্যাক করতে সহায়তা করে, যেখানে comments ব্যবহারকারীদের মন্তব্য এবং পরামর্শ যোগ করার জন্য ব্যবহৃত হয়।

এই টিউটোরিয়ালে আমরা দেখবো কিভাবে comments এবং changes যোগ করা যায় এবং কীভাবে তাদের সম্পর্ককে track changes এর মাধ্যমে প্রাকটিক্যালভাবে সংযুক্ত করা যায়।


১. Track Changes এবং Comments যোগ করা

প্রথমে, comments এবং changes যোগ করার জন্য Word ডকুমেন্টে revisions ট্র্যাক করা প্রয়োজন। এটি সাধারণত insertions, deletions, এবং formatting changes এর ক্ষেত্রে কার্যকর হয়।

উদাহরণ: Comments এবং Changes যোগ করা

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.XWPFComment;

import java.io.FileOutputStream;
import java.io.IOException;

public class TrackChangesAndCommentsExample {
    public static void main(String[] args) throws IOException {
        // একটি নতুন Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText("এটি একটি ডকুমেন্টের উদাহরণ, যেখানে কমেন্ট এবং পরিবর্তন ট্র্যাক করা হবে।");

        // প্রথম কমেন্ট যোগ করা
        XWPFComment comment1 = new XWPFComment();
        comment1.setAuthor("Author1");
        comment1.setText("এটি প্রথম মন্তব্য।");
        run.addComment(comment1);  // কমেন্ট রানটিতে যুক্ত করা

        // একটি টেক্সট পরিবর্তন যোগ করা (বোল্ড টেক্সট যোগ করা)
        XWPFRun run2 = paragraph.createRun();
        run2.setBold(true);
        run2.setText(" এই অংশটি পরিবর্তন করা হয়েছে।");

        // দ্বিতীয় কমেন্ট যোগ করা
        XWPFComment comment2 = new XWPFComment();
        comment2.setAuthor("Author2");
        comment2.setText("এটি দ্বিতীয় মন্তব্য।");
        run2.addComment(comment2);  // দ্বিতীয় কমেন্ট রানটিতে যুক্ত করা

        // Word ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("TrackChangesAndCommentsExample.docx")) {
            document.write(out);
        }

        System.out.println("Comments and changes added successfully!");
    }
}

কোড ব্যাখ্যা:

  • XWPFComment: এটি মন্তব্য তৈরি করার জন্য ব্যবহৃত হয় এবং তা নির্দিষ্ট run এর সাথে যুক্ত করা হয়।
  • run.setBold(true): একটি পরিবর্তন হিসেবে টেক্সট বোল্ড করা হয়েছে, যা track changes হিসেবে সেভ হবে।
  • run.addComment(comment1): প্রথম মন্তব্যটি প্রথম run এর সাথে যুক্ত করা হয়েছে।
  • run2.addComment(comment2): দ্বিতীয় মন্তব্যটি দ্বিতীয় run এর সাথে যুক্ত করা হয়েছে।

২. Track Changes (Revisions) ব্যবহার করা

Track Changes ফিচারটি ডকুমেন্টে insertions, deletions, এবং formatting changes ট্র্যাক করতে সহায়তা করে। এতে ডকুমেন্টের পরিবর্তনগুলো স্বয়ংক্রিয়ভাবে চিহ্নিত হয় এবং আপনি সেই পরিবর্তনগুলো দেখার জন্য মন্তব্যও যোগ করতে পারেন।

উদাহরণ: Insertions এবং Deletions ট্র্যাক করা

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.FileOutputStream;
import java.io.IOException;

public class TrackInsertionsAndDeletions {
    public static void main(String[] args) throws IOException {
        // একটি নতুন Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run1 = paragraph.createRun();
        run1.setText("এই ডকুমেন্টে পরিবর্তনগুলো ট্র্যাক করা হবে।");

        // টেক্সট ইনসার্ট করা (Insertions)
        XWPFRun run2 = paragraph.createRun();
        run2.setText(" এই অংশটি নতুনভাবে যোগ করা হয়েছে।");
        run2.setBold(true);  // নতুন যোগ করা অংশটিতে বোল্ড স্টাইল দেওয়া হয়েছে।

        // টেক্সট মুছে ফেলা (Deletions)
        XWPFRun run3 = paragraph.createRun();
        run3.setText("এই অংশটি মুছে ফেলা হবে।");
        run3.setStrike(true);  // মুছে ফেলা অংশটি স্ট্রাইকথ্রু করা হয়েছে।

        // Word ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("TrackInsertionsAndDeletions.docx")) {
            document.write(out);
        }

        System.out.println("Insertions and deletions tracked successfully!");
    }
}

কোড ব্যাখ্যা:

  • run2.setBold(true): নতুন যোগ করা অংশের মধ্যে bold স্টাইল প্রয়োগ করা হয়েছে।
  • run3.setStrike(true): মুছে ফেলা অংশকে strike-through করা হয়েছে, যা পরিবর্তনের চিহ্ন হিসেবে দেখা যায়।

৩. Track Changes এবং Comments এর সম্পর্ক ব্যবস্থাপনা

Track Changes এবং Comments দুটি ফিচারই ডকুমেন্টের পরিবর্তন এবং পর্যালোচনা ইতিহাস ট্র্যাক করতে ব্যবহৃত হয়, কিন্তু তাদের মধ্যে পার্থক্য হলো:

  • Track Changes: এটি ডকুমেন্টে যে সমস্ত পরিবর্তন হয়েছে, তা স্বয়ংক্রিয়ভাবে চিহ্নিত করে এবং দেখায় (যেমন, ইনসার্ট এবং ডিলিট করা অংশ)।
  • Comments: এটি ডকুমেন্টে বিশদ মন্তব্য যোগ করার জন্য ব্যবহৃত হয়, যা লেখকের মতামত বা সংশোধনী পরামর্শ প্রকাশ করে।

যখন track changes ফিচার ব্যবহার করা হয়, তখন comments সেই পরিবর্তনগুলোর পাশে নির্দিষ্ট করে দেয়া যায়, যেমন কে কী পরিবর্তন করেছেন বা কেন সেই পরিবর্তনটি করা হয়েছে।

উদাহরণ: Changes এবং Comments এর সম্পর্ক

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.XWPFComment;

import java.io.FileOutputStream;
import java.io.IOException;

public class TrackChangesWithComments {
    public static void main(String[] args) throws IOException {
        // একটি নতুন Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText("এই ডকুমেন্টে পরিবর্তন এবং মন্তব্য যোগ করা হয়েছে।");

        // প্রথম টেক্সট পরিবর্তন (Bold)
        XWPFRun run1 = paragraph.createRun();
        run1.setBold(true);
        run1.setText(" এই অংশটি বোল্ড করা হয়েছে।");

        // প্রথম কমেন্ট
        XWPFComment comment1 = new XWPFComment();
        comment1.setAuthor("Author1");
        comment1.setText("এটি একটি বোল্ড কমেন্ট।");
        run1.addComment(comment1);  // কমেন্ট রানটিতে যুক্ত করা

        // দ্বিতীয় টেক্সট পরিবর্তন (Strike-through)
        XWPFRun run2 = paragraph.createRun();
        run2.setText(" এই অংশটি মুছে ফেলা হবে।");
        run2.setStrike(true); // স্ট্রাইকথ্রু অ্যাপ্লাই করা

        // দ্বিতীয় কমেন্ট
        XWPFComment comment2 = new XWPFComment();
        comment2.setAuthor("Author2");
        comment2.setText("এটি একটি মুছে ফেলা কমেন্ট।");
        run2.addComment(comment2);  // কমেন্ট রানটিতে যুক্ত করা

        // Word ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("TrackChangesWithComments.docx")) {
            document.write(out);
        }

        System.out.println("Track changes and comments relationship created successfully!");
    }
}

কোড ব্যাখ্যা:

  • run1.setBold(true): প্রথম পরিবর্তনটি bold হয়েছে এবং তার সাথে একটি মন্তব্য যোগ করা হয়েছে।
  • run2.setStrike(true): দ্বিতীয় পরিবর্তনটি strike-through হয়েছে এবং তার সাথে একটি মন্তব্য যোগ করা হয়েছে।

সারাংশ

Track Changes এবং Comments ডকুমেন্টে পরিবর্তন এবং পর্যালোচনা প্রক্রিয়া পরিচালনার দুটি গুরুত্বপূর্ণ অংশ। **Track Changes

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion