PDFBox ব্যবহার করে পিডিএফ ডকুমেন্টে টেবিল তৈরি করা একটি গুরুত্বপূর্ণ কাজ হতে পারে। PDFBox সরাসরি টেবিল তৈরির জন্য কোন ক্লাস সরবরাহ না করলেও, আমরা PDPageContentStream ব্যবহার করে টেবিলের কাস্টম লেআউট তৈরি করতে পারি। এখানে একটি উদাহরণ দেওয়া হচ্ছে যেখানে পিডিএফে টেবিল তৈরি করা হয়েছে।
প্রয়োজনীয় লাইব্রেরি
PDFBox লাইব্রেরি যদি আগে থেকেই আপনার প্রজেক্টে অন্তর্ভুক্ত না থাকে, তবে Maven ব্যবহার করলে আপনার pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
কোড উদাহরণ: PDF এ টেবিল তৈরি করা
এখন আমরা একটি টেবিল তৈরি করার উদাহরণ দেখব, যেখানে ৪টি কলাম ও কয়েকটি সারি থাকবে।
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 PDFTableExample {
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.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(100, 750); // অবস্থান নির্ধারণ
contentStream.showText("ID\tName\tAge\tCity");
contentStream.endText();
// টেবিলের ডাটা যোগ করা
contentStream.setFont(PDType1Font.HELVETICA, 10);
contentStream.beginText();
contentStream.newLineAtOffset(100, 730); // অবস্থান নির্ধারণ
contentStream.showText("1\tJohn Doe\t25\tNew York");
contentStream.newLineAtOffset(0, -15);
contentStream.showText("2\tJane Smith\t30\tLos Angeles");
contentStream.newLineAtOffset(0, -15);
contentStream.showText("3\tEmily Davis\t22\tChicago");
contentStream.newLineAtOffset(0, -15);
contentStream.showText("4\tMichael Brown\t35\tSan Francisco");
contentStream.endText();
// কনটেন্ট স্ট্রিম বন্ধ করুন
contentStream.close();
// পিডিএফ ফাইল সেভ করুন
document.save("PDFTableExample.pdf");
// ডকুমেন্ট বন্ধ করুন
document.close();
System.out.println("টেবিলসহ PDF ফাইল সফলভাবে তৈরি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড বিশ্লেষণ
- PDDocument: পিডিএফ ডকুমেন্ট তৈরি করার জন্য ব্যবহৃত হয়।
- PDPage: একটি নতুন পৃষ্ঠা তৈরি করা হয়েছে যেখানে টেবিলটি যুক্ত হবে।
- PDPageContentStream: এটি পিডিএফ পৃষ্ঠায় কনটেন্ট যোগ করার জন্য ব্যবহৃত হয়।
- setFont: টেক্সট ফন্ট এবং সাইজ সেট করা হয়। শিরোনামের জন্য বোল্ড ফন্ট এবং ডাটার জন্য সাধারণ ফন্ট ব্যবহার করা হয়েছে।
- newLineAtOffset: এটি টেবিলের প্রতিটি সেলের টেক্সটের অবস্থান সেট করতে ব্যবহৃত হয়।
XএবংYকোঅর্ডিনেট দ্বারা নির্ধারিত অবস্থানে টেক্সট লেখা হয়। - showText: টেক্সট প্রদর্শনের জন্য ব্যবহৃত হয়।
- save: পিডিএফ ডকুমেন্ট সেভ করা হয়।
- close: ডকুমেন্ট এবং কনটেন্ট স্ট্রিম বন্ধ করা হয়।
আউটপুট
এই কোডটি চালানোর পর একটি PDFTableExample.pdf নামক ফাইল তৈরি হবে, যেখানে একটি টেবিল থাকবে। টেবিলের শিরোনাম এবং ডাটার ৪টি কলাম থাকবে, যেমন:
ID Name Age City
1 John Doe 25 New York
2 Jane Smith 30 Los Angeles
3 Emily Davis 22 Chicago
4 Michael Brown 35 San Francisco
এটি একটি সহজ উদাহরণ, তবে আপনি আপনার প্রয়োজন অনুযায়ী কলাম এবং সারির সংখ্যা বৃদ্ধি বা পরিবর্তন করতে পারেন। টেবিলের জন্য গ্রিড লাইনের ব্যবহার বা আরও কাস্টম স্টাইল অ্যাড করার জন্য অতিরিক্ত কোড যুক্ত করা সম্ভব।