পিডিএফবক্স (PDFBox) একটি অত্যন্ত নমনীয় লাইব্রেরি, যা Java প্রোগ্রামিং ভাষায় পিডিএফ ফাইল তৈরি, রিড, ম্যানিপুলেশন এবং আরও অনেক কিছু করতে সক্ষম। যেহেতু এটি ওপেন সোর্স, তাই আপনি এটি কাস্টমাইজ এবং এক্সটেন্ড (extension) করতে পারেন আপনার প্রয়োজন অনুযায়ী। পিডিএফবক্সের কাস্টমাইজেশন এবং এক্সটেনশন আপনাকে আরও উন্নত কার্যকারিতা এবং ফিচার তৈরি করতে সাহায্য করতে পারে, যা প্রজেক্টের বিশেষ প্রয়োজনের সাথে মেলে।
পিডিএফবক্স কাস্টমাইজেশন
পিডিএফবক্সের কাস্টমাইজেশন মূলত পিডিএফ ডকুমেন্টের তৈরি, রিড, বা ম্যানিপুলেশন করার প্রক্রিয়ায় বিভিন্ন ফিচার বা ফাংশনালিটি যোগ করা এবং পরিবর্তন করার মাধ্যমে করা যায়। এই কাস্টমাইজেশন সাধারণত নিম্নলিখিত ক্ষেত্রে হয়ে থাকে:
- পিডিএফ ফন্ট কাস্টমাইজেশন: পিডিএফ ডকুমেন্টে বিভিন্ন ধরনের ফন্ট যোগ করা অথবা কাস্টম ফন্ট ব্যবহার করা।
- গ্রাফিক্স কাস্টমাইজেশন: পিডিএফ ডকুমেন্টে গ্রাফিক্স বা শেপ আঁকার সময় কাস্টম স্টাইল বা রঙ সেট করা।
- পিডিএফ রিডিং কাস্টমাইজেশন: টেক্সট এক্সট্র্যাকশন বা পিডিএফের তথ্য পড়ার প্রক্রিয়া কাস্টমাইজ করা।
- পিডিএফ লেখার কাস্টমাইজেশন: পিডিএফ ডকুমেন্টে টেক্সট, ইমেজ বা অন্য কোনো কন্টেন্ট যোগ করার কাস্টম পদ্ধতি তৈরি করা।
উদাহরণ: কাস্টম ফন্ট ব্যবহার করা
নিম্নলিখিত কোডে কাস্টম ফন্ট ব্যবহার করে পিডিএফ ডকুমেন্ট তৈরি করা হয়েছে:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import java.io.File;
import java.io.IOException;
public class PDFWithCustomFont {
public static void main(String[] args) {
try {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
// কাস্টম ফন্ট লোড করা
PDType0Font customFont = PDType0Font.load(document, new File("path_to_custom_font.ttf"));
// পৃষ্ঠায় কনটেন্ট যোগ করার জন্য ContentStream তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.beginText();
contentStream.setFont(customFont, 12); // কাস্টম ফন্ট ব্যবহার করা
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello, this is a custom font!");
contentStream.endText();
contentStream.close();
// পিডিএফ ডকুমেন্টটি সেভ করা
document.save("pdf_with_custom_font.pdf");
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
পিডিএফবক্স এক্সটেনশন (Extensions)
পিডিএফবক্সের এক্সটেনশন ব্যবহার করে আপনি এর মৌলিক কার্যকারিতাগুলি আরও উন্নত করতে পারেন, যেমন:
- এডভান্সড ফিচার যোগ করা: যেমন OCR (Optical Character Recognition) মডিউল, যা পিডিএফে স্ক্যান করা চিত্র থেকে টেক্সট এক্সট্র্যাক্ট করতে সক্ষম।
- ডিজিটাল সিগনেচার: পিডিএফ ডকুমেন্টে ডিজিটাল সিগনেচার যোগ করতে পারেন, যা নিরাপত্তা নিশ্চিত করে।
- পিডিএফ রিডার কাস্টমাইজেশন: পিডিএফ রিডারের কাস্টম ফাংশন তৈরি করতে পারেন যেমন বিভিন্ন ধরণের পিডিএফ ভিউ বা ইন্টারঅ্যাকটিভ ফিচার।
উদাহরণ: পিডিএফে ডিজিটাল সিগনেচার যোগ করা
পিডিএফবক্স দিয়ে পিডিএফে ডিজিটাল সিগনেচার যোগ করার জন্য আপনাকে PDSignature ক্লাস ব্যবহার করতে হবে। নীচে একটি উদাহরণ দেওয়া হলো:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDSignature;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDResources;
import java.io.File;
import java.io.IOException;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import org.apache.pdfbox.pdmodel.signatures.ExternalSigningSupport;
public class PDFWithSignature {
public static void main(String[] args) {
try {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
// পিডিএফে সিগনেচার যোগ করার জন্য PDSignature ব্যবহার
PDSignature signature = new PDSignature();
signature.setName("John Doe");
signature.setLocation("New York");
signature.setSignDate(Calendar.getInstance());
// সিগনেচার সাপোর্ট সেট করা
document.addSignature(signature);
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("pdf_with_signature.pdf");
document.close();
System.out.println("PDF with digital signature created.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কাস্টমাইজেশন এবং এক্সটেনশন প্রয়োগের সুবিধা
- ইউজার ইন্টারফেস উন্নয়ন: পিডিএফ ডকুমেন্টে কাস্টম ফিচার যোগ করার মাধ্যমে এটি আরও ইন্টারঅ্যাকটিভ বা ইউজার-ফ্রেন্ডলি হয়ে ওঠে।
- নিরাপত্তা বৃদ্ধি: ডিজিটাল সিগনেচার বা এনক্রিপশন ব্যবহার করে পিডিএফ ফাইলের নিরাপত্তা বাড়ানো যায়।
- এডভান্সড ফিচার: বিভিন্ন ধরণের কাস্টমাইজড বা এক্সটেনডেড ফিচার, যেমন OCR বা পিডিএফ ফর্ম ফিলিং, পিডিএফবক্সে এক্সটেনশন যোগ করা যায়।
সারাংশ
পিডিএফবক্স (PDFBox) Java টেকনোলজির কাস্টমাইজেশন এবং এক্সটেনশন আপনাকে পিডিএফ ডকুমেন্টের উপরে বিভিন্ন কাস্টম ফিচার এবং কার্যকারিতা যোগ করতে সাহায্য করে। আপনি ফন্ট কাস্টমাইজেশন, ডিজিটাল সিগনেচার, গ্রাফিক্স, এবং অন্যান্য অ্যাডভান্সড ফিচারগুলিকে কাস্টমাইজ করে উন্নত পিডিএফ ফাইল তৈরি করতে পারেন। এছাড়াও, আপনি এটি এক্সটেন্ড করে পিডিএফ সম্পর্কিত আরও বৈশিষ্ট্য এবং ফাংশনালিটি অর্জন করতে পারেন।
পিডিএফবক্স (PDFBox) Java ব্যবহার করে কাস্টম পিডিএফ কম্পোনেন্ট তৈরি করা সম্ভব। পিডিএফের বিভিন্ন কম্পোনেন্ট যেমন টেক্সট, ছবি, আয়তন, এবং লাইন ইত্যাদি কাস্টমাইজ করতে হলে, আপনাকে PDPageContentStream ক্লাসের মাধ্যমে কাস্টম গ্রাফিক্স এবং কন্টেন্ট তৈরি করতে হবে। আপনি আপনার প্রয়োজন অনুযায়ী পিডিএফে কাস্টম উপাদান যেমন ফর্ম, কাস্টম গ্রাফিক্স, টেবিল ইত্যাদি তৈরি করতে পারেন।
কাস্টম পিডিএফ কম্পোনেন্ট তৈরির প্রক্রিয়া
কাস্টম পিডিএফ কম্পোনেন্ট তৈরি করতে, সাধারণত নিচের স্টেপগুলো অনুসরণ করতে হয়:
- PDDocument তৈরি করুন: একটি নতুন পিডিএফ ডকুমেন্ট তৈরি করুন।
- PDPage যোগ করুন: একটি নতুন পিডিএফ পেজ তৈরি করুন।
- PDPageContentStream ব্যবহার করুন: পিডিএফ পৃষ্ঠায় কাস্টম কন্টেন্ট বা গ্রাফিক্স যোগ করার জন্য
PDPageContentStreamব্যবহার করুন। - টেক্সট, আয়তন, ছবি ইত্যাদি যোগ করুন: পিডিএফ পৃষ্ঠায় কাস্টম কম্পোনেন্ট যোগ করুন।
- ডকুমেন্ট সেভ করুন: কাস্টম কম্পোনেন্ট সহ পিডিএফ ডকুমেন্টটি সেভ করুন।
উদাহরণ: কাস্টম পিডিএফ কম্পোনেন্ট তৈরি করা
নিম্নলিখিত কোডটি একটি কাস্টম পিডিএফ কম্পোনেন্ট তৈরি করবে, যেখানে একটি টেক্সট, আয়তন এবং একটি গ্রাফিক্স উপাদান থাকবে:
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.IOException;
public class CustomPDFComponentExample {
public static void main(String[] args) {
// পিডিএফ ডকুমেন্ট তৈরি করুন
PDDocument document = new PDDocument();
// একটি নতুন পেজ তৈরি করুন
PDPage page = new PDPage();
document.addPage(page);
try {
// কাস্টম কন্টেন্ট যোগ করার জন্য PDPageContentStream তৈরি করুন
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// টেক্সট যোগ করুন
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 16); // ফন্ট এবং আকার নির্ধারণ
contentStream.newLineAtOffset(100, 700); // টেক্সটের পজিশন
contentStream.showText("Custom PDF Component Example"); // টেক্সট প্রদর্শন
contentStream.endText();
// আয়তন (Rectangle) যোগ করুন
contentStream.setLineWidth(1);
contentStream.moveTo(100, 650); // আয়তনের একটি কোণা
contentStream.lineTo(300, 650); // আয়তনের অন্য কোণা
contentStream.lineTo(300, 550); // আয়তনের আরেক কোণা
contentStream.lineTo(100, 550); // আয়তনের শেষ কোণা
contentStream.closePath(); // আয়তন আঁকা সম্পন্ন
contentStream.stroke(); // আয়তন আঁকার জন্য stroke ব্যবহার করুন
// কাস্টম গ্রাফিক্স (যেমন, একটি বৃত্ত) যোগ করুন
contentStream.setLineWidth(2);
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(150, 450);
contentStream.showText("Circle Below:");
contentStream.endText();
contentStream.drawCircle(200, 400, 50); // বৃত্ত আঁকুন (কেন্দ্রবিন্দু (200,400), ব্যাসার্ধ 50)
contentStream.stroke();
// কনটেন্ট স্ট্রিম বন্ধ করুন
contentStream.close();
// পিডিএফ ডকুমেন্টটি সেভ করুন
document.save("custom_component_example.pdf");
document.close();
System.out.println("Custom PDF Component Created Successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা
- PDDocument document = new PDDocument();
এটি একটি নতুন পিডিএফ ডকুমেন্ট তৈরি করে। - PDPage page = new PDPage();
এটি একটি নতুন পিডিএফ পৃষ্ঠা তৈরি করে এবং ডকুমেন্টে যোগ করা হয়। - PDPageContentStream contentStream = new PDPageContentStream(document, page);
এটি পিডিএফ পৃষ্ঠার কনটেন্ট স্ট্রিম তৈরি করে, যা পৃষ্ঠায় কাস্টম কন্টেন্ট যোগ করতে ব্যবহৃত হয়। - contentStream.beginText();
এটি টেক্সট যোগ করার জন্য ব্যবহৃত হয় এবংcontentStream.showText()এর মাধ্যমে টেক্সট পৃষ্ঠায় যোগ করা হয়। - contentStream.moveTo(x, y); contentStream.lineTo(x, y);
এটি আয়তন (rectangle) আঁকার জন্য ব্যবহৃত হয়।moveTo()দিয়ে আয়তনের শুরু এবংlineTo()দিয়ে আয়তনের শেষ নির্ধারণ করা হয়। - contentStream.drawCircle(x, y, radius);
এটি বৃত্ত আঁকার জন্য ব্যবহৃত হয়। এখানে(x, y)হচ্ছে বৃত্তের কেন্দ্রবিন্দু এবংradiusহচ্ছে বৃত্তের ব্যাসার্ধ। - document.save("custom_component_example.pdf");
এটি কাস্টম কম্পোনেন্টসহ পিডিএফ ডকুমেন্টটি সেভ করে। - document.close();
ডকুমেন্টটি বন্ধ করা হয় যাতে রিসোর্স মুক্ত থাকে।
কাস্টম ফর্ম এবং অন্যান্য কম্পোনেন্ট
আপনি কাস্টম ফর্ম তৈরি করতে চাইলে পিডিএফবক্সের PDAnnotationWidget, PDTextField, PDBooleanCheckBox ইত্যাদি ক্লাস ব্যবহার করতে পারেন, যা আপনাকে ফর্ম তৈরি এবং পূর্ণ করতে সাহায্য করবে।
উপসংহার
পিডিএফবক্স (PDFBox) Java ব্যবহার করে কাস্টম পিডিএফ কম্পোনেন্ট তৈরি করা খুবই সহজ। আপনি PDPageContentStream ক্লাস ব্যবহার করে পিডিএফে টেক্সট, গ্রাফিক্স, আয়তন, বৃত্ত এবং অন্যান্য কাস্টম কম্পোনেন্ট যোগ করতে পারবেন। এই কাস্টমাইজেশন পিডিএফ ফাইলকে আরো ইন্টারেকটিভ এবং প্রফেশনাল করে তুলতে সহায়ক।
পিডিএফবক্স (PDFBox) একটি শক্তিশালী লাইব্রেরি যা পিডিএফ ডকুমেন্ট তৈরি, রিড, এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। এটি Java প্রোগ্রামিং ভাষার জন্য তৈরি, তবে কখনও কখনও আপনি PDFBox কে অন্যান্য কাস্টম লাইব্রেরির সাথে ইন্টিগ্রেট করতে চাইবেন, যেমন ডাটাবেস থেকে তথ্য এক্সট্র্যাক্ট করা বা কাস্টম রিপোর্ট তৈরি করা। এই টিউটোরিয়ালে আমরা দেখব কীভাবে PDFBox কে কাস্টম লাইব্রেরির সাথে ইন্টিগ্রেট করা যায়।
কাস্টম লাইব্রেরি ইন্টিগ্রেশনের প্রয়োজনীয়তা
কাস্টম লাইব্রেরি ইন্টিগ্রেশন করতে হয় যখন আপনি PDF ফাইল তৈরি বা ম্যানিপুলেশনের জন্য অন্য লাইব্রেরি বা ফাংশনালিটি ব্যবহার করতে চান। উদাহরণস্বরূপ:
- ডাটাবেস ইন্টিগ্রেশন: পিডিএফ ফাইল তৈরি করার সময় ডাটাবেস থেকে ডেটা এক্সট্র্যাক্ট করা।
- কাস্টম ফন্ট বা ইমেজ: আপনার নিজস্ব ফন্ট বা গ্রাফিক্স ব্যবহার করা।
- ইমেল পাঠানো: পিডিএফ ফাইল তৈরি হওয়ার পর তা ইমেল এর মাধ্যমে পাঠানো।
কাস্টম লাইব্রেরি ইন্টিগ্রেট করার পদ্ধতি
এখানে একটি উদাহরণ দেওয়া হলো যেখানে PDFBox কে একটি কাস্টম লাইব্রেরির সাথে ইন্টিগ্রেট করা হয়েছে, যেটি ডাটাবেস থেকে তথ্য নিয়ে পিডিএফ ডকুমেন্ট তৈরি করবে।
উদাহরণ: PDFBox এবং JDBC (ডাটাবেস) ইন্টিগ্রেশন
ধরা যাক, আমাদের একটি ডাটাবেস থেকে ব্যবহারকারীদের তথ্য নেওয়ার প্রয়োজন এবং সেই তথ্যকে একটি পিডিএফ ডকুমেন্টে সংরক্ষণ করতে হবে। এখানে আমরা PDFBox এবং JDBC লাইব্রেরি একত্রে ব্যবহার করব।
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;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class PDFWithDatabase {
public static void main(String[] args) {
try {
// ডাটাবেস সংযোগ তৈরি করা
String url = "jdbc:mysql://localhost:3306/your_database";
String user = "username";
String password = "password";
Connection connection = DriverManager.getConnection(url, user, password);
// SQL কুয়েরি রান করা
String query = "SELECT * FROM users";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
// নতুন পিডিএফ ডকুমেন্ট তৈরি
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, 750);
// ডাটাবেসের তথ্য পিডিএফে লেখানো
while (resultSet.next()) {
String userName = resultSet.getString("name");
String userEmail = resultSet.getString("email");
contentStream.showText("Name: " + userName);
contentStream.newLineAtOffset(0, -20);
contentStream.showText("Email: " + userEmail);
contentStream.newLineAtOffset(0, -20);
}
contentStream.endText();
contentStream.close();
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("user_report.pdf");
document.close();
// ডাটাবেস সংযোগ বন্ধ করা
resultSet.close();
statement.close();
connection.close();
System.out.println("PDF তৈরি এবং ডাটাবেস থেকে তথ্য এক্সট্র্যাক্ট করা হয়েছে!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা:
- JDBC ব্যবহার: ডাটাবেস থেকে তথ্য এক্সট্র্যাক্ট করার জন্য JDBC (Java Database Connectivity) ব্যবহার করা হয়েছে।
DriverManager.getConnection()মেথডের মাধ্যমে ডাটাবেসে সংযোগ স্থাপন করা হয়েছে। - SQL কুয়েরি:
SELECT * FROM usersকুয়েরি ব্যবহার করেusersটেবিল থেকে ডেটা এক্সট্র্যাক্ট করা হয়েছে। - PDFBox ব্যবহার: পিডিএফ ফাইল তৈরি এবং ডাটাবেস থেকে পাওয়া তথ্য পিডিএফে লেখা হয়েছে।
PDDocument,PDPage,PDPageContentStreamব্যবহার করে পিডিএফ তৈরি করা হয়েছে এবং ডাটাবেস থেকে পাওয়া নাম ও ইমেইল পিডিএফে প্রদর্শন করা হয়েছে।
কাস্টম লাইব্রেরি ইন্টিগ্রেশন এর আরও কিছু উদাহরণ
- ফাইল সিস্টেম ইন্টিগ্রেশন: পিডিএফ তৈরি করার পর, আপনি কাস্টম লাইব্রেরি ব্যবহার করে সেই পিডিএফ ফাইলটি একটি নির্দিষ্ট ডিরেক্টরিতে সংরক্ষণ করতে পারেন।
- ইমেল ইন্টিগ্রেশন: তৈরি করা পিডিএফ ফাইলটি ইমেল এর মাধ্যমে পাঠানোর জন্য JavaMail API ব্যবহার করতে পারেন।
- গ্রাফিক্স বা চার্ট ইন্টিগ্রেশন: কোনো কাস্টম লাইব্রেরি যেমন JFreeChart ব্যবহার করে ডেটা চার্ট তৈরি করতে পারেন এবং সেটি পিডিএফ ডকুমেন্টে অন্তর্ভুক্ত করতে পারেন।
সারাংশ
PDFBox কে কাস্টম লাইব্রেরির সাথে ইন্টিগ্রেট করা Java অ্যাপ্লিকেশনে পিডিএফ ডকুমেন্ট তৈরি ও ম্যানিপুলেশনের শক্তিশালী কার্যক্ষমতা প্রদান করে। এটি ডাটাবেস, ফাইল সিস্টেম, ইমেল, গ্রাফিক্স ইত্যাদি সঙ্গে ইন্টিগ্রেশন করার জন্য খুবই কার্যকর। এই ধরনের ইন্টিগ্রেশন আপনি আপনার বিশেষ প্রয়োজনে কাস্টম ফিচার যুক্ত করার জন্য ব্যবহার করতে পারেন।
পিডিএফবক্স (PDFBox) লাইব্রেরি Java ডেভেলপারদের পিডিএফ ডকুমেন্টের বিভিন্ন অংশ কাস্টমাইজ করার জন্য শক্তিশালী ফিচার প্রদান করে। আপনি পিডিএফ ডকুমেন্টে কাস্টম ফন্ট, স্টাইল, গ্রাফিক্স, এবং লেআউট কাস্টমাইজ করতে পারেন। এই টিউটোরিয়ালে, আমরা বিভিন্ন কাস্টমাইজেশন অপশনগুলির উদাহরণ সহ আলোচনা করব।
পিডিএফ ফন্ট কাস্টমাইজেশন
পিডিএফবক্সে, আপনি কাস্টম ফন্ট ব্যবহার করে পিডিএফ ডকুমেন্টের টেক্সট ফরম্যাট কাস্টমাইজ করতে পারেন। এটি PDType1Font বা PDTrueTypeFont এর মাধ্যমে করা যায়।
কাস্টম ফন্ট ব্যবহার করার উদাহরণ:
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 CustomFontExample {
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, 16); // কাস্টম ফন্ট এবং সাইজ
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello, this is a custom font!");
contentStream.endText();
contentStream.close();
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("custom_font_example.pdf");
document.close();
System.out.println("কাস্টম ফন্ট সফলভাবে ব্যবহার করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- PDType1Font.HELVETICA_BOLD: এখানে Helvetica Bold ফন্ট ব্যবহার করা হয়েছে। আপনি এটি পরিবর্তন করে আপনার পছন্দের ফন্ট ব্যবহার করতে পারেন।
- setFont(): এই মেথডে ফন্ট এবং সাইজ সেট করা হয়।
পিডিএফ পৃষ্ঠায় গ্রাফিক্স কাস্টমাইজেশন
পিডিএফ ডকুমেন্টে গ্রাফিক্স যেমন লাইন, আয়তক্ষেত্র, বৃত্ত আঁকা এবং কাস্টম স্টাইল যুক্ত করা সম্ভব। পিডিএফবক্সের PDPageContentStream ক্লাস ব্যবহার করে এসব গ্রাফিক্স কাস্টমাইজ করা যায়।
গ্রাফিক্স কাস্টমাইজ করার উদাহরণ (আয়তক্ষেত্র, লাইন, বৃত্ত):
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import java.awt.Color;
import java.io.IOException;
public class GraphicsCustomizationExample {
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.setLineWidth(2f);
contentStream.setStrokeColor(Color.RED); // লাল রঙ
contentStream.setFillColor(Color.GREEN); // সবুজ পূর্ণতা
contentStream.addRect(100, 500, 200, 100);
contentStream.fillAndStroke();
// লাইন আঁকা
contentStream.setLineWidth(1f);
contentStream.setStrokeColor(Color.BLACK); // কালো রঙ
contentStream.moveTo(100, 400);
contentStream.lineTo(300, 400);
contentStream.stroke();
// বৃত্ত আঁকা
contentStream.setLineWidth(3f);
contentStream.setStrokeColor(Color.BLUE); // নীল রঙ
contentStream.drawCircle(200, 200, 50); // কেন্দ্র এবং ব্যাসার্ধ
contentStream.stroke();
contentStream.close();
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("graphics_customization_example.pdf");
document.close();
System.out.println("গ্রাফিক্স কাস্টমাইজেশন সফলভাবে সম্পন্ন হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- setLineWidth(): এটি লাইনটির প্রস্থ সেট করে।
- setStrokeColor() এবং setFillColor(): স্ট্রোক এবং ফিল রঙ সেট করার জন্য ব্যবহৃত হয়।
- addRect(): আয়তক্ষেত্র আঁকার জন্য ব্যবহৃত।
- drawCircle(): বৃত্ত আঁকার জন্য ব্যবহৃত।
পিডিএফ লেআউট কাস্টমাইজেশন
পিডিএফ ডকুমেন্টের লেআউট যেমন পৃষ্ঠা সাইজ, মার্জিন, বা পৃষ্ঠা সজ্জা কাস্টমাইজ করা যায়। পিডিএফবক্সে, আপনি PDPage ক্লাসের মাধ্যমে পৃষ্ঠা সাইজ এবং মার্জিন কাস্টমাইজ করতে পারেন।
পিডিএফ পৃষ্ঠার সাইজ এবং মার্জিন কাস্টমাইজ করার উদাহরণ:
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 java.io.IOException;
public class PageLayoutCustomizationExample {
public static void main(String[] args) {
try {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
// কাস্টম পৃষ্ঠা সাইজ (A4)
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
// পৃষ্ঠা কনটেন্ট স্ট্রিম তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// মার্জিন সেট করা
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(50, 750); // বাম থেকে 50 পয়েন্ট, উপরে 750 পয়েন্ট
contentStream.showText("Text with custom margin");
contentStream.endText();
contentStream.close();
// পিডিএফ ডকুমেন্ট সেভ করা
document.save("page_layout_customization_example.pdf");
document.close();
System.out.println("লেআউট কাস্টমাইজেশন সফলভাবে সম্পন্ন হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- PDRectangle.A4: A4 সাইজের পৃষ্ঠা তৈরি করা হয়েছে।
- newLineAtOffset(): টেক্সটের অবস্থান নির্ধারণের জন্য ব্যবহৃত, যা মার্জিন কাস্টমাইজ করতে সাহায্য করে।
সারাংশ
পিডিএফবক্স (PDFBox) Java লাইব্রেরি ব্যবহার করে পিডিএফ ডকুমেন্ট কাস্টমাইজেশন সহজে করা যায়। আপনি কাস্টম ফন্ট, গ্রাফিক্স, এবং পৃষ্ঠা সাইজ কাস্টমাইজ করতে পারেন। PDType1Font এবং PDTrueTypeFont ব্যবহার করে ফন্ট কাস্টমাইজেশন, PDPageContentStream ব্যবহার করে গ্রাফিক্স কাস্টমাইজেশন, এবং PDPage এর মাধ্যমে পৃষ্ঠা সাইজ এবং মার্জিন কাস্টমাইজ করা যায়। এই কাস্টমাইজেশন পিডিএফ ডকুমেন্টকে আরও আকর্ষণীয় এবং ব্যবহারকারীর চাহিদা অনুযায়ী তৈরি করতে সাহায্য করে।
Read more