পিডিএফবক্স (PDFBox) Java লাইব্রেরি ব্যবহার করে পিডিএফ ডকুমেন্টের পেজ লেআউট এবং মার্জিন (Margin) সহজেই কনফিগার করা যায়। পিডিএফ ডকুমেন্টের পৃষ্ঠার সাইজ এবং মার্জিন নিয়ন্ত্রণ করার মাধ্যমে আপনি পিডিএফের কনটেন্ট আরও সঠিকভাবে উপস্থাপন করতে পারেন।
পেজ লেআউট এবং মার্জিন সেট করার প্রক্রিয়া
পিডিএফবক্সে পেজ লেআউট কনফিগার করার জন্য আপনি পিডিএফ পৃষ্ঠার সাইজ নির্ধারণ করতে পারেন, এবং মার্জিন নির্ধারণের মাধ্যমে পৃষ্ঠার বর্ডারের সাথে কনটেন্টের দূরত্ব নির্ধারণ করা যায়। নিচে পেজ সাইজ এবং মার্জিন সেট করার একটি উদাহরণ দেওয়া হল।
উদাহরণ: পেজ লেআউট এবং মার্জিন সেট করা
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.IOException;
public class PDFWithMargins {
public static void main(String[] args) throws IOException {
// পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
// পৃষ্ঠার সাইজ সেট করা (এ4 সাইজ)
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
// মার্জিন এবং পেজ কনফিগারেশন
float margin = 50; // মার্জিন ৫০ পিক্সেল
float yStart = 750;
float yPosition = yStart;
float rowHeight = 20;
float tableWidth = 500;
float colWidth[] = {150, 150, 150}; // কলামের প্রস্থ
// পিডিএফ পৃষ্ঠায় কন্টেন্ট স্ট্রিম তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// ফন্ট সেট করা
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
// মার্জিন অনুযায়ী টেক্সট লেখা
contentStream.beginText();
contentStream.newLineAtOffset(margin, yPosition); // মার্জিন থেকে শুরু
contentStream.showText("This is a PDF document with margin.");
contentStream.endText();
yPosition -= rowHeight;
// কলাম এবং রো রেন্ডারিং
String[][] tableData = {
{"ID", "Name", "Age"},
{"1", "John Doe", "28"},
{"2", "Jane Smith", "32"},
{"3", "Sam Brown", "45"}
};
// টেবিলের হেডার রেন্ডারিং
for (int i = 0; i < tableData[0].length; i++) {
contentStream.beginText();
contentStream.newLineAtOffset(margin + colWidth[i] * i, yPosition);
contentStream.showText(tableData[0][i]);
contentStream.endText();
}
yPosition -= rowHeight;
// টেবিলের বডি রেন্ডারিং
for (int i = 1; i < tableData.length; i++) {
for (int j = 0; j < tableData[i].length; j++) {
contentStream.beginText();
contentStream.newLineAtOffset(margin + colWidth[j] * j, yPosition);
contentStream.showText(tableData[i][j]);
contentStream.endText();
}
yPosition -= rowHeight;
}
// কন্টেন্ট স্ট্রিম বন্ধ করা
contentStream.close();
// পিডিএফ ফাইল সেভ করা
document.save("pdf_with_margins.pdf");
document.close();
}
}
কোড ব্যাখ্যা
- PDRectangle.A4: এখানে পৃষ্ঠার সাইজ হিসেবে A4 সাইজ নির্ধারণ করা হয়েছে। পিডিএফবক্সে বিভিন্ন ধরনের পৃষ্ঠার সাইজ রয়েছে, যেমন A4, A3, Letter ইত্যাদি।
- margin: পৃষ্ঠার চারপাশের মার্জিন সেট করা হয়েছে। এখানে ৫০ পিক্সেল মার্জিন ব্যবহার করা হয়েছে, যাতে কনটেন্ট পৃষ্ঠার বর্ডারের থেকে ৫০ পিক্সেল দূরে থাকে।
- newLineAtOffset(): এই ফাংশনটি পৃষ্ঠায় টেক্সট এবং অন্যান্য কনটেন্টের অবস্থান নির্ধারণ করে। মার্জিন থেকে শুরু করার জন্য এখানে
marginব্যবহার করা হয়েছে।
পেজ সাইজ কাস্টমাইজেশন
আপনি যদি কাস্টম পেজ সাইজ তৈরি করতে চান, তাহলে আপনি পিডিএফবক্সের PDRectangle ক্লাসে সাইজের প্যারামিটার সেট করতে পারেন:
PDPage page = new PDPage(new PDRectangle(600, 800)); // কাস্টম সাইজ
এটি 600x800 পিক্সেলের পিডিএফ পৃষ্ঠা তৈরি করবে।
মার্জিন কাস্টমাইজেশন
মার্জিনের মান আপনি আপনার প্রয়োজন অনুসারে পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, যদি আপনি ১০০ পিক্সেল মার্জিন চান:
float margin = 100; // মার্জিন ১০০ পিক্সেল
এটি পিডিএফ ডকুমেন্টের চারপাশে বড় মার্জিন যোগ করবে।
পিডিএফবক্সের মাধ্যমে পিডিএফ ডকুমেন্টের পেজ লেআউট এবং মার্জিন সহজে কাস্টমাইজ করা যায়। আপনি পৃষ্ঠার সাইজ এবং মার্জিনের মাধ্যমে ডকুমেন্টের ভিজ্যুয়াল উপস্থাপনাকে নিয়ন্ত্রণ করতে পারেন।
Read more