পিডিএফবক্স (PDFBox) লাইব্রেরি ব্যবহার করে Java প্রোগ্রামে পিডিএফ ফাইলের পেজ সাইজ এবং লেআউট পরিবর্তন করা সম্ভব। এটি পিডিএফ ডকুমেন্টের পেজ সাইজ কাস্টমাইজ করার জন্য অনেকগুলি স্ট্যান্ডার্ড সাইজ (A4, A3, Letter ইত্যাদি) প্রদান করে এবং আপনি চাইলে কাস্টম পেজ সাইজও সেট করতে পারেন।
পিডিএফ পেজ সাইজ পরিবর্তন
পিডিএফবক্সের মাধ্যমে পেজ সাইজ পরিবর্তন করার জন্য, পিডিএফের নতুন পেজ তৈরি করার সময় আপনি পেজের সাইজ নির্ধারণ করতে পারেন। নিচে পিডিএফ ফাইলের পেজ সাইজ এবং লেআউট পরিবর্তন করার একটি উদাহরণ দেওয়া হলো।
প্রয়োজনীয় লাইব্রেরি
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.IOException;
পিডিএফ ফাইলের পেজ সাইজ এবং লেআউট পরিবর্তন
এখানে একটি উদাহরণ দেওয়া হয়েছে যেখানে একটি নতুন পিডিএফ তৈরি করা হচ্ছে, যার পেজ সাইজ পরিবর্তন করা হয়েছে।
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 org.apache.pdfbox.pdmodel.PDRectangle;
import java.io.IOException;
public class ChangePageSize {
public static void main(String[] args) {
try {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
// নতুন পিডিএফ পেজ তৈরি, এখানে A3 সাইজ ব্যবহার করা হয়েছে
PDPage page = new PDPage(PDRectangle.A3);
document.addPage(page);
// পিডিএফ পেজে কন্টেন্ট স্ট্রিম তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(100, 750);
contentStream.showText("This is a PDF with A3 page size!");
contentStream.endText();
contentStream.close();
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("changed_page_size.pdf");
// ডকুমেন্ট বন্ধ করা
document.close();
System.out.println("পিডিএফ পেজ সাইজ পরিবর্তন করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- PDDocument: পিডিএফ ডকুমেন্ট তৈরি বা লোড করার জন্য ব্যবহৃত ক্লাস।
- PDPage: পিডিএফ ডকুমেন্টে একটি নতুন পেজ তৈরি করার জন্য ব্যবহৃত হয়। এখানে পেজ সাইজ
PDRectangle.A3ব্যবহার করা হয়েছে, তবে আপনিPDRectangle.A4,PDRectangle.LETTERইত্যাদি সাইজও ব্যবহার করতে পারেন। - PDPageContentStream: এটি পিডিএফ পেজে টেক্সট বা অন্যান্য কন্টেন্ট যোগ করতে ব্যবহৃত হয়।
- contentStream.newLineAtOffset(100, 750): এটি টেক্সটের অবস্থান নির্ধারণ করে।
কাস্টম পেজ সাইজ
যদি আপনি স্ট্যান্ডার্ড পেজ সাইজের বাইরে কিছু চান, তাহলে আপনি একটি কাস্টম পেজ সাইজও নির্ধারণ করতে পারেন। উদাহরণস্বরূপ:
PDPage customPage = new PDPage(new PDRectangle(600, 800)); // কাস্টম পেজ সাইজ 600x800
এখানে 600 (প্রস্থ) এবং 800 (উচ্চতা) পিক্সেলে কাস্টম পেজ সাইজ সেট করা হয়েছে।
পিডিএফ পেজ লেআউট পরিবর্তন
আপনি পিডিএফের পেজ লেআউটও পরিবর্তন করতে পারেন, যেমন পোর্ট্রেট (portrait) এবং ল্যান্ডস্কেপ (landscape) মোডে।
পোর্ট্রেট মোড (ডিফল্ট):
PDPage page = new PDPage(PDRectangle.A4); // A4 পেজ সাইজ
ল্যান্ডস্কেপ মোড:
PDPage page = new PDPage(PDRectangle.A4.rotate()); // A4 পেজ ল্যান্ডস্কেপ মোডে
এখানে rotate() মেথডটি পেজকে ল্যান্ডস্কেপ মোডে রূপান্তরিত করে।
বিভিন্ন পেজ সাইজ
পিডিএফবক্স বিভিন্ন পিডিএফ স্ট্যান্ডার্ড পেজ সাইজ সাপোর্ট করে, যেমন:
- A0, A1, A2, A3, A4, A5, A6, A7, A8, A9: এই সাইজগুলি স্ট্যান্ডার্ড A সিরিজ সাইজের মধ্যে পড়ে।
- LETTER: আমেরিকান লেটার সাইজ (8.5 x 11 ইঞ্চি)।
- LEGAL: লিগ্যাল পেজ সাইজ (8.5 x 14 ইঞ্চি)।
এইভাবে পিডিএফবক্স ব্যবহার করে Java দিয়ে পিডিএফ ডকুমেন্টের পেজ সাইজ এবং লেআউট পরিবর্তন করা যায়। আপনি কাস্টম সাইজ এবং লেআউট নির্ধারণ করে পিডিএফ ডকুমেন্টের ডিজাইন কাস্টমাইজ করতে পারবেন।
পিডিএফবক্স (PDFBox) ব্যবহার করে Java প্রোগ্রামে পিডিএফ ডকুমেন্টের পেজের সাইজ পরিবর্তন করা যায়। এটি বিশেষভাবে দরকারি যখন আপনি কোনো পিডিএফ ফাইলের পেজ সাইজ কাস্টমাইজ করতে চান, যেমন A4, A3, বা কাস্টম ডাইমেনশন ব্যবহার করে।
পিডিএফবক্সে পেজের সাইজ পরিবর্তন করার জন্য PDPage ক্লাসের setMediaBox() মেথড ব্যবহার করা হয়। এর মাধ্যমে আপনি পিডিএফ পেজের সাইজ পরিবর্তন করতে পারবেন।
পিডিএফ পেজের সাইজ পরিবর্তন করার পদ্ধতি
এখানে একটি উদাহরণ দেওয়া হলো যেখানে পিডিএফ পেজের সাইজ A4 থেকে A3 তে পরিবর্তন করা হচ্ছে:
কোড উদাহরণ
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageFormat;
import java.io.IOException;
public class ChangePageSize {
public static void main(String[] args) {
try {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("example.pdf"));
// প্রথম পেজটি নির্বাচন করা
PDPage page = document.getPage(0);
// নতুন পেজ সাইজ সেট করা (এখানে A3 সাইজ)
page.setMediaBox(PDPageFormat.A3);
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("modified_example.pdf");
// ডকুমেন্ট বন্ধ করা
document.close();
System.out.println("পিডিএফ পেজের সাইজ সফলভাবে পরিবর্তন করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- PDDocument.load(): এটি পিডিএফ ডকুমেন্ট লোড করার জন্য ব্যবহৃত হয়। এখানে
"example.pdf"পিডিএফ ফাইলটি লোড করা হচ্ছে। - getPage(0): এটি প্রথম পেজটি নির্বাচন করে (পেজের ইনডেক্স 0 থেকে শুরু হয়)।
- setMediaBox(PDPageFormat.A3): এখানে
setMediaBox()মেথডের মাধ্যমে পেজের সাইজ পরিবর্তন করা হচ্ছে।PDPageFormat.A3ব্যবহার করে A3 সাইজে পেজ সেট করা হয়েছে। আপনিPDPageFormat.A4,PDPageFormat.LETTERবা কাস্টম সাইজও ব্যবহার করতে পারেন। - document.save(): এটি পিডিএফ ডকুমেন্টটি সেভ করে নতুন ফাইলের নাম হিসেবে
"modified_example.pdf"দেওয়া হয়েছে।
পিডিএফ পেজের কাস্টম সাইজ সেট করা
যদি আপনি কাস্টম সাইজে পিডিএফ পেজ তৈরি করতে চান, তাহলে আপনি PDRectangle ব্যবহার করে কাস্টম সাইজ নির্ধারণ করতে পারেন:
import org.apache.pdfbox.pdmodel.PDRectangle;
PDRectangle customSize = new PDRectangle(600, 800); // 600x800 পিক্সেল সাইজ
page.setMediaBox(customSize);
এখানে, 600 এবং 800 হলো কাস্টম পেজের প্রস্থ এবং উচ্চতা, যা আপনি আপনার প্রয়োজন অনুসারে নির্ধারণ করতে পারবেন।
এভাবে পিডিএফবক্স ব্যবহার করে পিডিএফ পেজের সাইজ পরিবর্তন করা সম্ভব। এটি আপনাকে আপনার ডকুমেন্টের পেজ আকার কাস্টমাইজ করতে সাহায্য করে, যা বিশেষত প্রিন্টিং বা ডকুমেন্ট ভিউইং এর ক্ষেত্রে উপকারী হতে পারে।
পিডিএফবক্স (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; // মার্জিন ১০০ পিক্সেল
এটি পিডিএফ ডকুমেন্টের চারপাশে বড় মার্জিন যোগ করবে।
পিডিএফবক্সের মাধ্যমে পিডিএফ ডকুমেন্টের পেজ লেআউট এবং মার্জিন সহজে কাস্টমাইজ করা যায়। আপনি পৃষ্ঠার সাইজ এবং মার্জিনের মাধ্যমে ডকুমেন্টের ভিজ্যুয়াল উপস্থাপনাকে নিয়ন্ত্রণ করতে পারেন।
PDFBox ব্যবহার করে পিডিএফ ডকুমেন্টের পেজ কনফিগারেশন করা খুবই সহজ। আপনি পিডিএফ পেজের সাইজ, মার্জিন, অরিয়েন্টেশন, এবং পেজের অন্যান্য বৈশিষ্ট্যগুলো কনফিগার করতে পারেন। এখানে আমরা PDF পেজ কনফিগারেশন সম্পর্কিত বিভিন্ন সেটিংস এবং উদাহরণ দেখব।
পিডিএফ পেজ সাইজ কনফিগারেশন
PDF পেজের সাইজ কনফিগার করার জন্য PDPage ক্লাস ব্যবহার করা হয়। PDFBox কিছু পূর্বনির্ধারিত পেজ সাইজ (A4, Letter, Legal ইত্যাদি) সরবরাহ করে, কিন্তু আপনি কাস্টম সাইজও সেট করতে পারেন।
উদাহরণ - পিডিএফ পেজ সাইজ সেট করা
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 PDFPageConfigExample {
public static void main(String[] args) throws IOException {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
// A4 সাইজ পেজ তৈরি
PDPage pageA4 = new PDPage(PDPage.PAGE_SIZE_A4);
document.addPage(pageA4);
// কাস্টম সাইজ পেজ তৈরি (উদাহরণ: 600x800 পিক্সেল)
PDPage customPage = new PDPage(new PDRectangle(600, 800));
document.addPage(customPage);
// পেজে কন্টেন্ট লেখা
PDPageContentStream contentStream = new PDPageContentStream(document, pageA4);
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 700); // পেজে টেক্সটের অবস্থান
contentStream.showText("Hello, PDFBox on A4 Page!");
contentStream.endText();
contentStream.close();
// ডকুমেন্ট সংরক্ষণ
document.save("pageConfigExample.pdf");
document.close();
}
}
পিডিএফ পেজ মার্জিন কনফিগারেশন
মার্জিন নির্ধারণ করা খুবই গুরুত্বপূর্ণ যখন আপনি পিডিএফে কন্টেন্ট বসাবেন। এটি আপনাকে পেজের সীমানার মধ্যে টেক্সট বা অন্য কন্টেন্ট ঠিকভাবে সাজাতে সাহায্য করে। PDFBox-এ PDPageContentStream ক্লাসের মাধ্যমে আপনি পেজের মার্জিন কনফিগার করতে পারেন।
উদাহরণ - পিডিএফ পেজ মার্জিন কনফিগারেশন
float margin = 50; // মার্জিনের আকার (50 পিক্সেল)
PDPageContentStream contentStream = new PDPageContentStream(document, pageA4);
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA, 12);
contentStream.newLineAtOffset(margin, 750); // মার্জিন অনুযায়ী টেক্সটের অবস্থান
contentStream.showText("Text inside margin area!");
contentStream.endText();
contentStream.close();
পিডিএফ পেজ অরিয়েন্টেশন কনফিগারেশন
পিডিএফ পেজের অরিয়েন্টেশন (Landscape অথবা Portrait) কনফিগার করা যায়। সাধারণত, পিডিএফ পেজের ডিফল্ট অরিয়েন্টেশন হলো Portrait। তবে আপনি PDRectangle ব্যবহার করে Landscape অরিয়েন্টেশনেও পিডিএফ তৈরি করতে পারেন।
উদাহরণ - পিডিএফ পেজ অরিয়েন্টেশন পরিবর্তন
// Landscape Orientation (পোর্ট্রেট থেকে ল্যান্ডস্কেপে পরিবর্তন)
PDPage landscapePage = new PDPage(PDRectangle.A4.rotate());
document.addPage(landscapePage);
PDPageContentStream contentStream = new PDPageContentStream(document, landscapePage);
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 500); // টেক্সটের অবস্থান
contentStream.showText("Hello, PDFBox in Landscape!");
contentStream.endText();
contentStream.close();
পিডিএফ পেজ কনটেন্টে লাইন, রেকটাঙ্গেল এবং অন্যান্য শেপ যোগ করা
PDFBox ব্যবহার করে আপনি পিডিএফ পেজে কন্টেন্ট যোগ করার পাশাপাশি বিভিন্ন শেপ (লাইন, রেকটাঙ্গেল, সर्कেল ইত্যাদি)ও আঁকতে পারেন। এতে পিডিএফ ডকুমেন্টটি আরও ইন্টারেক্টিভ এবং আকর্ষণীয় হয়।
উদাহরণ - পিডিএফ পেজে লাইন এবং রেকটাঙ্গেল যোগ করা
PDPageContentStream contentStream = new PDPageContentStream(document, pageA4);
// লাইন আঁকা
contentStream.setLineWidth(1f);
contentStream.moveTo(100, 600);
contentStream.lineTo(500, 600);
contentStream.stroke();
// রেকটাঙ্গেল আঁকা
contentStream.setLineWidth(1f);
contentStream.rect(100, 550, 200, 100); // X, Y, Width, Height
contentStream.stroke();
contentStream.close();
পিডিএফ পেজের অন্যান্য কনফিগারেশন
- ফন্ট সাইজ এবং স্টাইল:
setFont()পদ্ধতি ব্যবহার করে আপনি পিডিএফ পেজে ব্যবহৃত ফন্ট সাইজ এবং স্টাইল কনফিগার করতে পারেন। - টেক্সট অরিয়েন্টেশন:
newLineAtOffset(x, y)ব্যবহার করে আপনি টেক্সটের অবস্থান নির্ধারণ করতে পারেন এবংsetTextRotation(angle)দ্বারা টেক্সটের অরিয়েন্টেশন পরিবর্তন করতে পারেন।
সারাংশ
PDFBox ব্যবহার করে পিডিএফ পেজ কনফিগারেশন করা খুবই সহজ। আপনি পেজ সাইজ, মার্জিন, অরিয়েন্টেশন এবং কন্টেন্টের জন্য বিভিন্ন কাস্টম সেটিংস প্রয়োগ করতে পারেন। এই প্রক্রিয়াগুলি আপনাকে পিডিএফ ডকুমেন্ট তৈরি এবং কাস্টমাইজ করার ক্ষেত্রে অনেক বেশি সুবিধা প্রদান করবে।
Read more