Skill

PDF ফাইলের জন্য ContentStream ম্যানেজমেন্ট

পিডিএফবক্স (PDFbox) - Java Technologies

363

পিডিএফবক্স (PDFBox) Java লাইব্রেরি ব্যবহার করে পিডিএফ ডকুমেন্টের কন্টেন্ট স্ট্রিম (ContentStream) ম্যানেজমেন্ট একটি গুরুত্বপূর্ণ কাজ। কন্টেন্ট স্ট্রিম পিডিএফ ফাইলের মধ্যে টেক্সট, গ্রাফিক্স, এবং অন্যান্য কন্টেন্ট উপাদান ধারণ করে। পিডিএফবক্সে কন্টেন্ট স্ট্রিম ব্যবহারের মাধ্যমে আপনি পিডিএফ ডকুমেন্টে টেক্সট, চিত্র, শেপ, লাইন, ইত্যাদি যোগ বা পরিবর্তন করতে পারবেন।

ContentStream এর ভূমিকা

ContentStream হল একটি স্ট্রিম যা পিডিএফ ডকুমেন্টের কন্টেন্ট ডেসক্রিপশন ধারণ করে, যেমন টেক্সট, গ্রাফিক্স, ছবি এবং অন্যান্য পৃষ্ঠার উপাদান। পিডিএফবক্সে কন্টেন্ট স্ট্রিম তৈরি করতে PDPageContentStream ক্লাস ব্যবহার করা হয়। এই ক্লাসের মাধ্যমে আপনি পিডিএফ পৃষ্ঠায় কন্টেন্ট অ্যাড, রিমুভ বা পরিবর্তন করতে পারেন।

ContentStream ব্যবহারের পদ্ধতি

পদ্ধতি ১: নতুন পিডিএফ ডকুমেন্টে কন্টেন্ট স্ট্রিম যোগ করা

একটি নতুন পিডিএফ ডকুমেন্টে কন্টেন্ট স্ট্রিম ব্যবহার করে টেক্সট বা গ্রাফিক্স যোগ করার একটি উদাহরণ নিচে দেওয়া হল:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import java.io.IOException;

public class PDFContentStreamExample {
    public static void main(String[] args) throws IOException {
        PDDocument document = new PDDocument();
        PDPage page = new PDPage();
        document.addPage(page);

        // ContentStream তৈরি
        PDPageContentStream contentStream = new PDPageContentStream(document, page);

        // টেক্সট যোগ করা
        contentStream.beginText();
        contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
        contentStream.newLineAtOffset(100, 700); // টেক্সটের অবস্থান নির্ধারণ
        contentStream.showText("Hello, PDFBox!"); // টেক্সট প্রদর্শন
        contentStream.endText();

        // কন্টেন্ট স্ট্রিম ক্লোজ করা
        contentStream.close();

        // পিডিএফ সেভ করা
        document.save("example.pdf");
        document.close();
    }
}

এখানে PDPageContentStream ব্যবহার করে একটি পিডিএফ পৃষ্ঠায় টেক্সট যোগ করা হয়েছে। beginText() এবং endText() মেথড দিয়ে টেক্সট ব্লকটি ডিফাইন করা হয়েছে।

পদ্ধতি ২: কন্টেন্ট স্ট্রিমের মাধ্যমে গ্রাফিক্স এবং শেপ যোগ করা

PDPageContentStream এর মাধ্যমে পিডিএফে গ্রাফিক্স যেমন লাইন, রেকট্যাঙ্গেল, সার্কেল ইত্যাদি আঁকা যায়। উদাহরণস্বরূপ:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;

import java.io.IOException;

public class PDFGraphicsExample {
    public static void main(String[] args) throws IOException {
        PDDocument document = new PDDocument();
        PDPage page = new PDPage();
        document.addPage(page);

        // ContentStream তৈরি
        PDPageContentStream contentStream = new PDPageContentStream(document, page);

        // গ্রাফিক্স শুরু
        contentStream.setLineWidth(1f);
        contentStream.moveTo(100, 600);
        contentStream.lineTo(200, 600);
        contentStream.stroke(); // লাইন আঁকা

        // রেকট্যাঙ্গেল আঁকা
        contentStream.setLineWidth(2f);
        contentStream.rect(100, 500, 200, 50);
        contentStream.stroke(); // রেকট্যাঙ্গেল আঁকা

        // কন্টেন্ট স্ট্রিম ক্লোজ করা
        contentStream.close();

        // পিডিএফ সেভ করা
        document.save("example_graphics.pdf");
        document.close();
    }
}

এখানে moveTo(), lineTo(), এবং rect() মেথড ব্যবহার করে লাইন এবং রেকট্যাঙ্গেল আঁকা হয়েছে। stroke() মেথড দিয়ে লাইন বা শেপকে পৃষ্ঠায় আঁকা হয়েছে।

পদ্ধতি ৩: বিদ্যমান পিডিএফ ডকুমেন্টে কন্টেন্ট স্ট্রিম যোগ করা

পিডিএফবক্স ব্যবহার করে একটি বিদ্যমান পিডিএফ ডকুমেন্টে কন্টেন্ট স্ট্রিম অ্যাড করতে PDPageContentStream এর AppendMode.APPEND মোড ব্যবহার করা হয়। এটি বিদ্যমান কন্টেন্টের সাথে নতুন কন্টেন্ট যুক্ত করার জন্য ব্যবহৃত হয়।

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import java.io.File;
import java.io.IOException;

public class PDFAppendContentStreamExample {
    public static void main(String[] args) throws IOException {
        PDDocument document = PDDocument.load(new File("existing.pdf"));
        PDPage page = document.getPage(0); // প্রথম পৃষ্ঠা

        // ContentStream তৈরি (AppendMode.APPEND ব্যবহার করা হয়েছে)
        PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);

        // নতুন টেক্সট যোগ করা
        contentStream.beginText();
        contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
        contentStream.newLineAtOffset(100, 700);
        contentStream.showText("This is an appended text.");
        contentStream.endText();

        // কন্টেন্ট স্ট্রিম ক্লোজ করা
        contentStream.close();

        // পিডিএফ সেভ করা
        document.save("updated_existing.pdf");
        document.close();
    }
}

এখানে AppendMode.APPEND ব্যবহার করে একটি বিদ্যমান পিডিএফ ডকুমেন্টে নতুন টেক্সট যোগ করা হয়েছে।

কন্টেন্ট স্ট্রিমের কার্যকারিতা

  • টেক্সট যোগ করা: পিডিএফ ডকুমেন্টে টেক্সট যোগ করার জন্য beginText() এবং endText() মেথড ব্যবহার করা হয়।
  • গ্রাফিক্স এবং শেপ আঁকা: লাইন, রেকট্যাঙ্গেল বা অন্যান্য শেপ আঁকতে moveTo(), lineTo(), rect() ইত্যাদি মেথড ব্যবহার করা হয়।
  • অ্যাপেন্ড মোড: বিদ্যমান পিডিএফ ডকুমেন্টে নতুন কন্টেন্ট যোগ করতে AppendMode.APPEND মোড ব্যবহার করা হয়।

পিডিএফবক্স (PDFBox) Java লাইব্রেরি কন্টেন্ট স্ট্রিম ম্যানেজমেন্টের মাধ্যমে পিডিএফ ডকুমেন্টে টেক্সট, গ্রাফিক্স, শেপ এবং অন্যান্য কন্টেন্ট যুক্ত বা পরিবর্তন করা সম্ভব। এটি পিডিএফ ফাইলের কন্টেন্টকে আরও ইন্টারঅ্যাকটিভ এবং দৃষ্টিনন্দন করতে সাহায্য করে।

Content added By

পিডিএফবক্স (PDFBox) লাইব্রেরি ব্যবহার করে Java প্রোগ্রামিং ভাষায় পিডিএফ ডকুমেন্টে কন্টেন্ট যোগ বা ম্যানেজ করতে PDPageContentStream ক্লাস ব্যবহৃত হয়। এই ক্লাসটি পিডিএফ পেজে টেক্সট, লাইন, শেপ, ইমেজ ইত্যাদি যোগ করতে সাহায্য করে। PDPageContentStream ব্যবহার করে আপনি কন্টেন্ট পেজে ইন্ডিকেটেড পজিশনে নির্ধারিত আকারে যোগ করতে পারেন এবং এর মাধ্যমে পিডিএফ ডকুমেন্টের কন্টেন্ট ম্যানেজমেন্ট অনেক সহজ হয়ে ওঠে।

PDPageContentStream এর ভূমিকা

PDPageContentStream পিডিএফ ডকুমেন্টে কন্টেন্ট লেখার জন্য ব্যবহৃত একটি ক্লাস। এটি পিডিএফ পেজে টেক্সট, লাইন, শেপ, পাথ এবং অন্যান্য কন্টেন্ট ড্র করার জন্য একাধিক মেথড সরবরাহ করে।

PDPageContentStream ব্যবহার করে কন্টেন্ট যোগ করার প্রক্রিয়া

১. পিডিএফ ডকুমেন্ট তৈরি এবং পেজ অ্যাড করা

প্রথমে আপনাকে পিডিএফ ডকুমেন্ট তৈরি করতে হবে এবং পিডিএফ পেজে কন্টেন্ট যোগ করার জন্য একটি PDPageContentStream অবজেক্ট তৈরি করতে হবে।

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.IOException;

public class PDFContentManagement {
    public static void main(String[] args) {
        try {
            // নতুন পিডিএফ ডকুমেন্ট তৈরি
            PDDocument document = new PDDocument();
            
            // নতুন পিডিএফ পেজ তৈরি
            PDPage page = new PDPage();
            document.addPage(page);

            // PDPageContentStream অবজেক্ট তৈরি
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            
            // কন্টেন্ট স্ট্রিম শুরু করা
            contentStream.beginText();
            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
            contentStream.newLineAtOffset(100, 700); // টেক্সটের অবস্থান নির্ধারণ
            contentStream.showText("Hello, PDFBox!"); // টেক্সট প্রদর্শন
            contentStream.endText();
            
            // কন্টেন্ট স্ট্রিম ক্লোজ করা
            contentStream.close();
            
            // পিডিএফ ডকুমেন্ট সেভ করা
            document.save("example.pdf");
            document.close();
            
            System.out.println("কন্টেন্ট সফলভাবে পিডিএফে যোগ করা হয়েছে!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে, PDPageContentStream ব্যবহার করে পিডিএফ পেজে "Hello, PDFBox!" টেক্সট যোগ করা হয়েছে।

PDPageContentStream এর মাধ্যমে বিভিন্ন কন্টেন্ট যোগ করা

২. লাইন, শেপ এবং পাথ ড্র করা

PDPageContentStream দিয়ে আপনি পিডিএফ পেজে লাইন, শেপ এবং পাথও ড্র করতে পারেন। নিচে কিছু উদাহরণ দেওয়া হলো:

লাইন ড্র করা
contentStream.setLineWidth(1f); // লাইনের প্রস্থ
contentStream.moveTo(100, 700); // লাইন শুরু করার স্থান
contentStream.lineTo(200, 700); // লাইন শেষ হওয়ার স্থান
contentStream.stroke(); // লাইন আঁকা
রেকট্যাঙ্গেল (Rectangle) ড্র করা
contentStream.setLineWidth(2f); // লাইনের প্রস্থ নির্ধারণ
contentStream.rectangle(100, 650, 200, 100); // রেকট্যাঙ্গেলের অবস্থান এবং আকার
contentStream.stroke(); // রেকট্যাঙ্গেল আঁকা
পাথ (Path) ড্র করা
contentStream.moveTo(100, 600); // পাথ শুরু
contentStream.lineTo(200, 600); // পাথের প্রথম অংশ
contentStream.lineTo(200, 500); // পাথের দ্বিতীয় অংশ
contentStream.closePath(); // পাথের শেষ
contentStream.stroke(); // পাথ আঁকা

৩. ইমেজ যোগ করা

পিডিএফ পেজে ইমেজ যোগ করতে PDImageXObject ক্লাস ব্যবহার করতে হয়। এটি পিডিএফ পেজে ইমেজ ড্র করার জন্য ব্যবহৃত হয়।

import org.apache.pdfbox.pdmodel.PDImageXObject;
import java.io.File;

PDImageXObject image = PDImageXObject.createFromFile("image.png", document);
contentStream.drawImage(image, 100, 500, image.getWidth()/2, image.getHeight()/2); // ইমেজের পজিশন এবং আকার নির্ধারণ

৪. কাস্টম ফন্ট ব্যবহার

PDPageContentStream দিয়ে আপনি কাস্টম ফন্টও ব্যবহার করতে পারেন। এটি পিডিএফ ডকুমেন্টে টেক্সট প্রদর্শনের জন্য স্টাইল এবং ফন্ট নির্ধারণের জন্য কার্যকরী।

contentStream.setFont(PDType1Font.HELVETICA_OBLIQUE, 12); // কাস্টম ফন্ট ব্যবহার
contentStream.showText("This is Italic text!"); // টেক্সট প্রদর্শন

PDPageContentStream এর মাধ্যমে কন্টেন্ট ম্যানেজমেন্টের সুবিধা

  • ফ্লেক্সিবিলিটি: এটি পিডিএফ পেজে টেক্সট, শেপ, ইমেজ, লাইন ইত্যাদি অ্যাড করার জন্য খুবই ফ্লেক্সিবল এবং কাস্টমাইজযোগ্য।
  • স্টাইলিং: টেক্সটের ফন্ট, আকার, রং এবং অন্যান্য স্টাইল প্যারামিটার কাস্টমাইজ করতে পারবেন।
  • পজিশনিং: আপনি টেক্সট এবং অন্যান্য কন্টেন্টের অবস্থান নির্ধারণ করতে পারবেন এবং কাস্টমাইজযোগ্য পজিশনে তা রাখবেন।
  • রিচ কন্টেন্ট: এটি একাধিক লেয়ার বা কন্টেন্টের উপাদান একত্রে পিডিএফ ডকুমেন্টে সাজানোর সুযোগ দেয়।

এইভাবে PDPageContentStream ব্যবহার করে আপনি পিডিএফ ডকুমেন্টে কন্টেন্ট যোগ, ম্যানেজ এবং কাস্টমাইজ করতে পারেন। এটি পিডিএফ ডকুমেন্টের কন্টেন্ট ম্যানেজমেন্টের জন্য একটি শক্তিশালী টুল যা Java ডেভেলপারদের জন্য অত্যন্ত উপযোগী।

Content added By

পিডিএফবক্স (PDFBox) Java লাইব্রেরি ব্যবহার করে আপনি সহজেই পিডিএফ ডকুমেন্ট তৈরি এবং সম্পাদনা করতে পারেন। একাধিক PDPageContentStream (ContentStream) ব্যবহার করে আপনি একাধিক কন্টেন্ট একসাথে ম্যানিপুলেট এবং পিডিএফ পৃষ্ঠায় যোগ করতে পারেন। একাধিক কন্টেন্ট স্ট্রিম ব্যবহার করলে আপনি বিভিন্ন ধরনের কন্টেন্ট যেমন টেক্সট, ছবি, টেবিল, গ্রাফিক্স ইত্যাদি একে অপরের সঙ্গে সমন্বিতভাবে যুক্ত করতে পারবেন।

নিচে একটি উদাহরণ দেওয়া হয়েছে, যেখানে একাধিক PDPageContentStream ব্যবহার করে একটি জটিল (complex) পিডিএফ ডকুমেন্ট তৈরি করা হয়েছে, যাতে রয়েছে টেক্সট, ছবি এবং গ্রাফিক্স।

Multiple ContentStream ব্যবহার করে Complex PDF তৈরি করার উদাহরণ

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 org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.PDRectangle;

import java.io.IOException;

public class ComplexPDFExample {

    public static void main(String[] args) {
        try {
            // নতুন পিডিএফ ডকুমেন্ট তৈরি
            PDDocument document = new PDDocument();

            // একটি পিডিএফ পেজ তৈরি করা
            PDPage page = new PDPage(PDRectangle.A4);
            document.addPage(page);

            // প্রথম ContentStream: টেক্সট যোগ করা
            PDPageContentStream contentStream1 = new PDPageContentStream(document, page);
            contentStream1.beginText();
            contentStream1.setFont(PDType1Font.HELVETICA_BOLD, 14);
            contentStream1.setLeading(14.5f);
            contentStream1.newLineAtOffset(100, 750);
            contentStream1.showText("Complex PDF with multiple ContentStream Example");
            contentStream1.newLine();
            contentStream1.showText("This is a line of text.");
            contentStream1.endText();
            contentStream1.close();

            // দ্বিতীয় ContentStream: ছবি যোগ করা
            PDImageXObject image = PDImageXObject.createFromFile("path/to/your/image.jpg", document);
            PDPageContentStream contentStream2 = new PDPageContentStream(document, page);
            contentStream2.drawImage(image, 100, 500, 150, 150);  // ছবি অবস্থান এবং আকার
            contentStream2.close();

            // তৃতীয় ContentStream: গ্রাফিক্স (বিভিন্ন আকার) যোগ করা
            PDPageContentStream contentStream3 = new PDPageContentStream(document, page);
            contentStream3.setLineWidth(1f);
            contentStream3.setStrokeColor(0, 0, 1);  // নীল রঙ
            contentStream3.setFillColor(0, 1, 0);    // সবুজ রঙ
            contentStream3.beginText();
            contentStream3.setFont(PDType1Font.HELVETICA_BOLD, 12);
            contentStream3.newLineAtOffset(100, 400);
            contentStream3.showText("A Rectangle and Circle");
            contentStream3.endText();
            contentStream3.setLineWidth(2f);
            contentStream3.setStrokeColor(1f, 0f, 0f);  // লাল রঙ
            contentStream3.rect(100, 300, 150, 100);  // একটি রেকটেঙ্গেল আঁকুন
            contentStream3.stroke();
            contentStream3.setFillColor(1f, 1f, 0f);   // হলুদ রঙ
            contentStream3.circle(300, 300, 50);      // একটি বৃত্ত আঁকুন
            contentStream3.fillAndStroke();
            contentStream3.close();

            // পিডিএফ ডকুমেন্ট সেভ করা
            document.save("complex_example.pdf");

            // ডকুমেন্ট বন্ধ করা
            document.close();

            System.out.println("জটিল পিডিএফ সফলভাবে তৈরি করা হয়েছে।");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

কোড ব্যাখ্যা

  • PDPageContentStream contentStream1: প্রথম কন্টেন্ট স্ট্রিম, যেখানে টেক্সট যোগ করা হয়েছে। এটি beginText() এবং endText() পদ্ধতির মধ্যে টেক্সট সংযোজন করে।
  • PDImageXObject image: ছবি যোগ করার জন্য এই ক্লাসটি ব্যবহার করা হয়। আপনি পিডিএফে একটি ইমেজ যোগ করতে পারেন।
  • contentStream2.drawImage(): এটি পিডিএফ পৃষ্ঠায় একটি ছবি আঁকতে ব্যবহৃত হয়। ছবির অবস্থান এবং আকার নির্ধারণ করা হয়।
  • PDPageContentStream contentStream3: তৃতীয় কন্টেন্ট স্ট্রিমে গ্রাফিক্স (যেমন রেকটেঙ্গেল ও বৃত্ত) যোগ করা হয়েছে। setStrokeColor(), setFillColor(), rect(), circle() ইত্যাদি পদ্ধতিগুলি গ্রাফিক্স আঁকার জন্য ব্যবহৃত হয়।
  • document.save("complex_example.pdf"): এখানে পিডিএফ ডকুমেন্টটি সেভ করা হচ্ছে।

আউটপুট

এই কোডটি রান করলে একটি complex_example.pdf ফাইল তৈরি হবে, যেখানে:

  1. প্রথম পৃষ্ঠায় টেক্সট থাকবে।
  2. একটি ছবি (যে ছবি path/to/your/image.jpg এ অবস্থান করছে) থাকবে।
  3. একটি নীল রঙের রেকটেঙ্গেল এবং হলুদ রঙের বৃত্ত থাকবে।

এভাবে পিডিএফবক্স (PDFBox) ব্যবহার করে একাধিক PDPageContentStream ব্যবহার করে জটিল পিডিএফ ডকুমেন্ট তৈরি করা সম্ভব। এটি পিডিএফে বিভিন্ন ধরনের কন্টেন্ট যেমন টেক্সট, ছবি, গ্রাফিক্স এবং আকার একত্রিত করার একটি শক্তিশালী পদ্ধতি।

Content added By

পিডিএফবক্স (PDFBox) লাইব্রেরি ব্যবহার করে Java-তে পিডিএফ ডকুমেন্টে কন্টেন্ট যোগ করার জন্য PDPageContentStream ব্যবহার করা হয়। এটি পিডিএফ পেজে টেক্সট, গ্রাফিক্স, ছবি, লাইন এবং অন্যান্য কন্টেন্ট যোগ করতে সাহায্য করে। PDPageContentStream সঠিকভাবে ব্যবহার করতে গেলে কিছু গুরুত্বপূর্ণ ধারণা এবং মেথড জানা দরকার, যা কন্টেন্ট ম্যানেজমেন্টের ক্ষেত্রে খুবই কার্যকর।

PDPageContentStream এর ভূমিকা

PDPageContentStream হলো একটি স্ট্রিম যা পিডিএফ পেজের কন্টেন্ট অ্যাড বা মডিফাই করতে ব্যবহৃত হয়। এটি পিডিএফ পেজে নতুন কন্টেন্ট যোগ করার জন্য একটি গুরুত্বপূর্ণ টুল। আপনি এটি ব্যবহার করে পেজে:

  • টেক্সট যোগ
  • লাইন এবং আকার আঁকা
  • ছবি সংযোজন
  • অন্যান্য গ্রাফিক্স কাজ করতে পারেন।

প্রয়োজনীয় লাইব্রেরি

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.IOException;

ContentStream ম্যানেজমেন্টের উদাহরণ

এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি পিডিএফ ডকুমেন্টে টেক্সট, লাইন, এবং শেপ যোগ করা হচ্ছে।

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import java.io.IOException;

public class ContentStreamExample {
    public static void main(String[] args) {
        try {
            // নতুন পিডিএফ ডকুমেন্ট তৈরি
            PDDocument document = new PDDocument();
            
            // নতুন পিডিএফ পেজ তৈরি
            PDPage page = new PDPage();
            document.addPage(page);
            
            // পিডিএফ পেজে কন্টেন্ট স্ট্রিম তৈরি
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            
            // টেক্সট যোগ করা
            contentStream.beginText();
            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
            contentStream.newLineAtOffset(100, 700); // টেক্সটের অবস্থান নির্ধারণ
            contentStream.showText("Hello, this is a PDF with text and shapes!");
            contentStream.endText();
            
            // লাইন আঁকা
            contentStream.setLineWidth(1f);
            contentStream.moveTo(100, 650); // শুরুর পয়েন্ট
            contentStream.lineTo(300, 650); // শেষ পয়েন্ট
            contentStream.stroke();
            
            // আর্চ আকৃতি আঁকা
            contentStream.setLineWidth(2f);
            contentStream.moveTo(100, 600);
            contentStream.lineTo(300, 600);
            contentStream.lineTo(200, 550); // ত্রিভুজের শীর্ষ
            contentStream.closePath();
            contentStream.stroke();
            
            // কন্টেন্ট স্ট্রিম বন্ধ করা
            contentStream.close();
            
            // পিডিএফ ডকুমেন্ট সেভ করা
            document.save("content_stream_example.pdf");
            
            // ডকুমেন্ট বন্ধ করা
            document.close();
            
            System.out.println("কন্টেন্ট স্ট্রিম সহ পিডিএফ তৈরি করা হয়েছে!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

কোড ব্যাখ্যা

  • PDPageContentStream: এটি পিডিএফ পেজে কন্টেন্ট (টেক্সট, গ্রাফিক্স, ইত্যাদি) যোগ করার জন্য ব্যবহৃত হয়।
  • beginText() এবং endText(): টেক্সট লিখতে ব্যবহৃত মেথড। beginText() দিয়ে টেক্সট প্রক্রিয়া শুরু এবং endText() দিয়ে এটি শেষ হয়।
  • showText(): এখানে পিডিএফ পেজে টেক্সট যোগ করা হয়।
  • moveTo() এবং lineTo(): লাইন আঁকার জন্য ব্যবহৃত মেথড। moveTo(x, y) পয়েন্টে কাস্টম পজিশন তৈরি এবং lineTo(x, y) দিয়ে নতুন পয়েন্টে লাইন আঁকা হয়।
  • setLineWidth(): লাইনটির প্রস্থ নির্ধারণ করে।
  • closePath(): গ্রাফিক্স আঁকার পর এটি ব্যবহার করে আঁকা যেকোনো পথ বন্ধ করা হয়।
  • stroke(): এটি গঠন করা যেকোনো লাইন বা শেপ দৃশ্যমান করতে ব্যবহৃত হয়।

ContentStream ম্যানেজমেন্টের গুরুত্বপূর্ণ পয়েন্ট

  1. ফন্ট পরিবর্তন: আপনি setFont() মেথড ব্যবহার করে পিডিএফে ভিন্ন ভিন্ন ফন্ট ব্যবহার করতে পারেন।
  2. রঙ পরিবর্তন: লাইন বা টেক্সটের রঙ পরিবর্তন করতে setStrokingColor() এবং setNonStrokingColor() মেথড ব্যবহার করতে পারেন।
  3. পেজে টেক্সট এবং গ্রাফিক্স কাস্টমাইজেশন: আপনি বিভিন্ন ধরণের গ্রাফিক্স যেমন বৃত্ত, ত্রিভুজ বা মাল্টিপল লাইন একত্রে যোগ করতে পারেন।
  4. টেক্সট স্টাইল: setFont() মেথডে ফন্ট পরিবর্তন করলে টেক্সটের স্টাইল পরিবর্তন হবে, এবং পিডিএফ পেজের কন্টেন্ট আরও স্টাইলিশ এবং কার্যকরী হতে পারে।

ContentStream এর অ্যাডভান্সড ম্যানেজমেন্ট

আপনি চাইলে যতটুকু সম্ভব কন্টেন্ট স্ট্রিম এর সাথে কাজ করে আরও উন্নত টেবিল, ফর্ম, এবং অন্যান্য গ্রাফিক্স তৈরি করতে পারেন। যেহেতু পিডিএফবক্স সরাসরি টেবিল ম্যানেজমেন্ট সাপোর্ট করে না, আপনি নিজেই কাস্টম টেবিল তৈরি করতে পারবেন ContentStream ব্যবহার করে।


এভাবে পিডিএফবক্স (PDFBox) লাইব্রেরি দিয়ে পিডিএফ পেজে কন্টেন্ট স্ট্রিম ম্যানেজমেন্ট করা সম্ভব, যা টেক্সট, গ্রাফিক্স এবং অন্যান্য কন্টেন্টের জন্য একটি অত্যন্ত শক্তিশালী উপায়।

Content added By
Promotion

Are you sure to start over?

Loading...