পিডিএফবক্স (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 ফাইল তৈরি হবে, যেখানে:
- প্রথম পৃষ্ঠায় টেক্সট থাকবে।
- একটি ছবি (যে ছবি
path/to/your/image.jpgএ অবস্থান করছে) থাকবে। - একটি নীল রঙের রেকটেঙ্গেল এবং হলুদ রঙের বৃত্ত থাকবে।
এভাবে পিডিএফবক্স (PDFBox) ব্যবহার করে একাধিক PDPageContentStream ব্যবহার করে জটিল পিডিএফ ডকুমেন্ট তৈরি করা সম্ভব। এটি পিডিএফে বিভিন্ন ধরনের কন্টেন্ট যেমন টেক্সট, ছবি, গ্রাফিক্স এবং আকার একত্রিত করার একটি শক্তিশালী পদ্ধতি।