পিডিএফবক্স (PDFBox) ব্যবহার করে Java অ্যাপ্লিকেশন থেকে পিডিএফ ডকুমেন্টে গ্রাফিক্স এবং শেপস আঁকা খুবই সহজ। পিডিএফবক্স গ্রাফিক্স পরিচালনা করার জন্য PDPageContentStream ক্লাস ব্যবহার করে যা পৃষ্ঠায় লাইন, আয়তক্ষেত্র, বৃত্ত এবং অন্যান্য শেপ আঁকতে সহায়তা করে।
গ্রাফিক্স এবং শেপস আঁকার প্রক্রিয়া
পিডিএফবক্সে শেপ আঁকতে PDPageContentStream এর মধ্যে moveTo(), lineTo(), rectangle(), ellipse() এবং fill() মেথড ব্যবহার করা হয়। এগুলি ব্যবহার করে বিভিন্ন ধরনের গ্রাফিক্স এবং শেপ আঁকা যায়।
উদাহরণ: পিডিএফ ডকুমেন্টে আয়তক্ষেত্র, বৃত্ত এবং লাইন আঁকা
নিম্নলিখিত কোডে একটি পিডিএফ ডকুমেন্টে বিভিন্ন শেপ আঁকা হয়েছে:
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 PDFGraphicsExample {
public static void main(String[] args) {
try {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
// একটি নতুন পৃষ্ঠা (Page) তৈরি
PDPage page = new PDPage();
document.addPage(page);
// পৃষ্ঠায় কনটেন্ট যোগ করার জন্য ContentStream তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// আয়তক্ষেত্র আঁকা
contentStream.setLineWidth(1f); // লাইন ওয়াইডনেস
contentStream.setStrokeColor(0, 0, 1); // রং (নীল)
contentStream.rectangle(100, 600, 200, 100); // আয়তক্ষেত্রের অবস্থান এবং আকার
contentStream.stroke(); // আয়তক্ষেত্রের কনট্যুর আঁকা
// বৃত্ত আঁকা
contentStream.setStrokeColor(1, 0, 0); // রং (লাল)
contentStream.setLineWidth(2f); // বৃত্তের পুরুত্ব
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 500);
contentStream.showText("Circle below:");
contentStream.endText();
contentStream.moveTo(250, 450); // বৃত্তের কেন্দ্র
contentStream.curveTo(230, 450, 230, 470, 250, 470); // বৃত্তের বক্ররেখা
contentStream.stroke(); // বৃত্ত আঁকা
// লাইন আঁকা
contentStream.setStrokeColor(0, 1, 0); // রং (সবুজ)
contentStream.moveTo(100, 400); // লাইন শুরু পয়েন্ট
contentStream.lineTo(300, 400); // লাইন শেষ পয়েন্ট
contentStream.stroke(); // লাইন আঁকা
// কনটেন্ট স্ট্রিম বন্ধ করা
contentStream.close();
// পিডিএফ ডকুমেন্টটি সেভ করা
document.save("graphics_example.pdf");
// ডকুমেন্ট বন্ধ করা
document.close();
System.out.println("PDF with graphics created successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা
setLineWidth(float width): এই মেথড ব্যবহার করে গ্রাফিক্সের লাইনটির পুরুত্ব নির্ধারণ করা হয়।setStrokeColor(float r, float g, float b): এই মেথড দ্বারা লাইন বা শেপের রঙ নির্ধারণ করা হয়। এখানে RGB (রেড, গ্রীন, ব্লু) মানের মাধ্যমে রঙ সেট করা হয়।rectangle(float x, float y, float width, float height): এটি একটি আয়তক্ষেত্র আঁকতে ব্যবহৃত হয়। এখানেx, yহলো আয়তক্ষেত্রের শুরু পজিশন এবংwidth, heightহলো আয়তক্ষেত্রের প্রস্থ ও উচ্চতা।moveTo(float x, float y): এই মেথডের মাধ্যমে আপনি একটি পয়েন্টে যেতে পারেন যেখানে আপনি নতুন লাইন বা শেপ শুরু করতে চান।lineTo(float x, float y): এটি একটি লাইন আঁকতে ব্যবহৃত হয়, যেখানেmoveTo()থেকে দেওয়া পয়েন্টের সঙ্গে লাইন যুক্ত করা হয়।curveTo(float x1, float y1, float x2, float y2, float x3, float y3): এই মেথড দিয়ে বৃত্তের বক্ররেখা আঁকা হয়।fill()এবংstroke():fill()মেথড দ্বারা শেপটি পূর্ণ রঙে পূর্ণ করা যায়, আরstroke()মেথড দ্বারা শেপের কনট্যুর আঁকা হয়।
পিডিএফ সেভ করার পর
এই কোডটি চালানোর পর graphics_example.pdf নামক একটি পিডিএফ ফাইল তৈরি হবে, যার মধ্যে একটি আয়তক্ষেত্র, একটি বৃত্ত এবং একটি লাইন থাকবে, প্রতিটি ভিন্ন রঙে আঁকা হবে।
পিডিএফবক্স (PDFBox) ব্যবহার করে Java এ পিডিএফ ডকুমেন্টে গ্রাফিক্স এবং শেপস আঁকা একটি সহজ প্রক্রিয়া। এটি বিভিন্ন ধরনের শেপ এবং লাইন আঁকতে সহায়তা করে, যা পিডিএফ ডকুমেন্টে ভিজ্যুয়াল কন্টেন্ট যোগ করতে ব্যবহৃত হয়।
পিডিএফবক্স (PDFBox) শুধুমাত্র পিডিএফ ডকুমেন্ট তৈরি এবং টেক্সট ম্যানিপুলেশনের জন্য ব্যবহৃত নয়, এটি পিডিএফ ডকুমেন্টে গ্রাফিক্স (যেমন রেখা, আয়তন, বৃত্ত ইত্যাদি) ড্র করার জন্যও ব্যবহৃত হতে পারে। পিডিএফ ডকুমেন্টে গ্রাফিক্স অঙ্কন করতে PDPageContentStream ক্লাস ব্যবহার করা হয়, যা পিডিএফ পৃষ্ঠায় বিভিন্ন গ্রাফিক্যাল উপাদান যোগ করতে সহায়ক।
গ্রাফিক্স ড্র করার প্রক্রিয়া
পিডিএফবক্স ব্যবহার করে গ্রাফিক্স অঙ্কন করতে আপনাকে কয়েকটি স্টেপ অনুসরণ করতে হবে:
- PDDocument তৈরি করুন: এটি পিডিএফ ডকুমেন্টের একটি অবজেক্ট তৈরি করবে।
- PDPage যোগ করুন: পিডিএফ ডকুমেন্টে একটি বা একাধিক পেজ যোগ করতে হবে।
- PDPageContentStream তৈরি করুন: পৃষ্ঠার কনটেন্ট স্ট্রিম তৈরি করতে হবে যা গ্রাফিক্স অঙ্কন করতে সহায়ক।
- গ্রাফিক্স ড্র করুন:
moveTo(),lineTo(),drawLine(),drawCircle()ইত্যাদি গ্রাফিক্স অঙ্কনের পদ্ধতি ব্যবহার করে প্রয়োজনীয় গ্রাফিক্স অঙ্কন করা হয়। - ডকুমেন্ট সেভ করুন: গ্রাফিক্স ড্র করার পর ডকুমেন্ট সেভ করতে হয়।
উদাহরণ: একটি পিডিএফে গ্রাফিক্স ড্র করা
নিম্নলিখিত কোডটি একটি পিডিএফ ডকুমেন্টে রেখা, আয়তন এবং বৃত্ত ড্র করবে:
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import java.io.IOException;
public class PDFGraphicsExample {
public static void main(String[] args) {
// পিডিএফ ডকুমেন্ট তৈরি করুন
PDDocument document = new PDDocument();
// একটি নতুন পেজ তৈরি করুন
PDPage page = new PDPage();
document.addPage(page);
try {
// পৃষ্ঠায় কনটেন্ট যোগ করার জন্য ContentStream তৈরি করুন
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// রেখা আঁকুন (Line)
contentStream.setLineWidth(2); // রেখার প্রস্থ নির্ধারণ
contentStream.moveTo(100, 700); // রেখার শুরু পয়েন্ট
contentStream.lineTo(400, 700); // রেখার শেষ পয়েন্ট
contentStream.stroke(); // রেখা আঁকার জন্য stroke ব্যবহার করুন
// আয়তন আঁকুন (Rectangle)
contentStream.setLineWidth(1);
contentStream.moveTo(100, 600); // আয়তনের একটি কোণা
contentStream.lineTo(300, 600); // আয়তনের অন্য কোণা
contentStream.lineTo(300, 500); // আয়তনের আরেক কোণা
contentStream.lineTo(100, 500); // আয়তনের শেষ কোণা
contentStream.closePath(); // আয়তন আঁকা সম্পন্ন
contentStream.stroke(); // আয়তন আঁকার জন্য stroke ব্যবহার করুন
// বৃত্ত আঁকুন (Circle)
contentStream.setLineWidth(1);
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(150, 400);
contentStream.showText("Circle Below:");
contentStream.endText();
contentStream.drawCircle(200, 350, 50); // বৃত্ত আঁকুন (কেন্দ্রবিন্দু (200,350), ব্যাসার্ধ 50)
contentStream.stroke();
// কনটেন্ট স্ট্রিম বন্ধ করুন
contentStream.close();
// পিডিএফ ডকুমেন্টটি সেভ করুন
document.save("graphics_example.pdf");
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা
- PDDocument document = new PDDocument();
এটি একটি নতুন পিডিএফ ডকুমেন্ট তৈরি করে। - PDPage page = new PDPage();
এটি একটি নতুন পিডিএফ পেজ তৈরি করে এবংdocument.addPage(page);এর মাধ্যমে ডকুমেন্টে যোগ করা হয়। - PDPageContentStream contentStream = new PDPageContentStream(document, page);
এটি পিডিএফ পৃষ্ঠার কনটেন্ট স্ট্রিম তৈরি করে, যার মাধ্যমে পিডিএফে গ্রাফিক্স ড্র করা যায়। - contentStream.setLineWidth(2);
এটি রেখার প্রস্থ (width) নির্ধারণ করে। - contentStream.moveTo(x, y);
এটি রেখার শুরুর পয়েন্ট নির্ধারণ করে। - contentStream.lineTo(x, y);
এটি রেখার শেষ পয়েন্ট নির্ধারণ করে এবং রেখাটি ড্র করে। - contentStream.stroke();
এটি রেখাটি অঙ্কন করার জন্য ব্যবহৃত হয়। - contentStream.drawCircle(x, y, radius);
এটি বৃত্ত আঁকার জন্য ব্যবহৃত হয়, যেখানেxওyহচ্ছে বৃত্তের কেন্দ্র এবংradiusহচ্ছে বৃত্তের ব্যাসার্ধ। - document.save("graphics_example.pdf");
এটি পিডিএফ ডকুমেন্টটি সেভ করে এবংgraphics_example.pdfনামে ফাইলটি তৈরি হয়।
উপসংহার
পিডিএফবক্স (PDFBox) ব্যবহার করে Java-তে পিডিএফ ডকুমেন্টে গ্রাফিক্স অঙ্কন করা অত্যন্ত সহজ এবং কার্যকর। আপনি পিডিএফে রেখা, আয়তন, বৃত্ত এবং অন্যান্য গ্রাফিক্স উপাদান যোগ করতে পারবেন। এই বৈশিষ্ট্যটি পিডিএফ ডকুমেন্টে গ্রাফিক্যাল কন্টেন্ট যেমন ডায়াগ্রাম, চার্ট ইত্যাদি যোগ করতে সহায়ক।
পিডিএফবক্স (PDFBox) লাইব্রেরির PDPageContentStream ক্লাস ব্যবহার করে পিডিএফ ডকুমেন্টে বিভিন্ন ধরনের গ্রাফিক্স যেমন লাইন, আয়তক্ষেত্র, এবং বৃত্ত আঁকা সম্ভব। PDPageContentStream ক্লাসে বিভিন্ন মেথড রয়েছে যা দিয়ে আমরা পিডিএফ পৃষ্ঠায় গ্রাফিক্স উপাদান যোগ করতে পারি।
এই টিউটোরিয়ালে, আমরা PDFContentStream ব্যবহার করে কিভাবে লাইন, আয়তক্ষেত্র এবং বৃত্ত আঁকতে পারি, তা দেখবো।
Lines, Rectangles, এবং Circles আঁকার কোড উদাহরণ
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 GraphicsExample {
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(1f); // লাইন প্রশস্ততা সেট করা
contentStream.setStrokeColor(0, 0, 0); // লাইন রঙ (কালো)
contentStream.beginText();
contentStream.newLineAtOffset(100, 700); // লাইন শুরু করার স্থান
contentStream.moveTo(100, 700); // লাইন শুরু পয়েন্ট
contentStream.lineTo(400, 700); // লাইন শেষ পয়েন্ট
contentStream.stroke(); // লাইন আঁকা
contentStream.endText();
// আয়তক্ষেত্র আঁকা
contentStream.setLineWidth(2f); // আয়তক্ষেত্রের সীমানার প্রশস্ততা
contentStream.setStrokeColor(1, 0, 0); // রঙ (লাল)
contentStream.setFillColor(0, 1, 0); // পূর্ণ রঙ (সবুজ)
contentStream.addRect(100, 600, 200, 100); // আয়তক্ষেত্রের স্থান এবং আকার
contentStream.fillAndStroke(); // আয়তক্ষেত্র আঁকা এবং পূর্ণ করা
// বৃত্ত আঁকা
contentStream.setStrokeColor(0, 0, 1); // বৃত্তের রঙ (নীল)
contentStream.setLineWidth(3f); // বৃত্তের সীমানা প্রশস্ততা
contentStream.drawCircle(300, 500, 50); // বৃত্তের কেন্দ্র এবং ব্যাসার্ধ
contentStream.stroke(); // বৃত্ত আঁকা
// কনটেন্ট স্ট্রিম বন্ধ করা
contentStream.close();
// পিডিএফ ডকুমেন্টটি সেভ করা
document.save("graphics_example.pdf");
// ডকুমেন্ট বন্ধ করা
document.close();
System.out.println("PDF তৈরি সফলভাবে সম্পন্ন হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোড ব্যাখ্যা
- লেখার সীমানা এবং রঙ সেট করা:
setLineWidth(float)মেথডের মাধ্যমে আমরা লাইন, আয়তক্ষেত্র বা বৃত্তের সীমানার প্রশস্ততা নির্ধারণ করি।setStrokeColor(float r, float g, float b)মেথডের মাধ্যমে আমরা আউটলাইন বা সীমানার রঙ নির্ধারণ করি (এখানে RGB রঙ ব্যবহার করা হয়েছে)।setFillColor(float r, float g, float b)মেথড দিয়ে আয়তক্ষেত্র বা বৃত্তের অভ্যন্তরের রঙ নির্ধারণ করা যায়।
- লাইন আঁকা:
moveTo(float x, float y)মেথডের মাধ্যমে লাইন আঁকার শুরু পয়েন্ট নির্ধারণ করা হয়।lineTo(float x, float y)মেথডের মাধ্যমে লাইন আঁকার শেষ পয়েন্ট নির্ধারণ করা হয়।stroke()মেথড দিয়ে লাইন আঁকা হয়।
- আয়তক্ষেত্র আঁকা:
addRect(float x, float y, float width, float height)মেথডের মাধ্যমে আয়তক্ষেত্রের স্থান এবং আকার নির্ধারণ করা হয়।fillAndStroke()মেথড দিয়ে আয়তক্ষেত্রের আউটলাইন আঁকা এবং পূর্ণ করা হয়।
- বৃত্ত আঁকা:
drawCircle(float x, float y, float radius)মেথডের মাধ্যমে বৃত্তের কেন্দ্র এবং ব্যাসার্ধ নির্ধারণ করা হয়।stroke()মেথড দিয়ে বৃত্ত আঁকা হয়।
PDF এর আউটপুট
এই কোডটি চালানোর পর একটি graphics_example.pdf নামের ফাইল তৈরি হবে, যার মধ্যে একটি লাইন, আয়তক্ষেত্র, এবং বৃত্ত আঁকা থাকবে। PDFBox ব্যবহার করে গ্রাফিক্সের বিভিন্ন ধরনের অঙ্কন সহজে করা যায়, যা পিডিএফ ডকুমেন্টে ভিজ্যুয়াল উপাদান যোগ করার জন্য কার্যকরী।
পিডিএফবক্স (PDFBox) ব্যবহার করে পিডিএফ ডকুমেন্টে কন্টেন্ট লেখার সময় Color এবং Stroke সেট করা সম্ভব। এতে টেক্সট, শেপ, এবং লাইনগুলির রঙ এবং স্টাইল কাস্টমাইজ করা যায়। এই টিউটোরিয়ালে আমরা দেখব কীভাবে পিডিএফে রঙ (Color) এবং স্ট্রোক (Stroke) সেট করা যায়।
Color সেট করা
পিডিএফবক্সে টেক্সট বা শেপের রঙ সেট করার জন্য setNonStrokingColor() এবং setStrokingColor() মেথড ব্যবহার করা হয়। প্রথমটি ফিল (fill) রঙের জন্য এবং দ্বিতীয়টি স্ট্রোক (border/outline) রঙের জন্য ব্যবহৃত হয়।
Stroke সেট করা
স্ট্রোক হচ্ছে কোনো শেপ বা লাইনটির আউটলাইন। স্ট্রোকের প্রস্থ এবং স্টাইল পরিবর্তন করা সম্ভব। এটি setLineWidth() এবং setLineDashPattern() মেথড ব্যবহার করে কাস্টমাইজ করা যায়।
উদাহরণ: Color এবং Stroke সেট করা
নিচে একটি উদাহরণ দেওয়া হল, যেখানে একটি পিডিএফ ডকুমেন্টে লাল রঙের স্ট্রোক সহ নীল রঙের একটি বক্স আঁকা হয়েছে এবং ভিতরে একটি টেক্সট লেখা হয়েছে।
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;
import java.awt.Color;
public class AddColorAndStrokeToPDF {
public static void main(String[] args) {
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
try {
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// Color এবং Stroke সেট করা
// Fill color: Blue
contentStream.setNonStrokingColor(Color.BLUE);
// Stroke color: Red
contentStream.setStrokingColor(Color.RED);
// Set line width
contentStream.setLineWidth(2);
// Drawing a rectangle with stroke and fill colors
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Text inside a colored box!");
contentStream.endText();
// Draw a rectangle
contentStream.setLineWidth(2); // Set the line width for stroke
contentStream.moveTo(100, 650); // Starting point of the rectangle
contentStream.lineTo(300, 650); // Right point of the rectangle
contentStream.lineTo(300, 750); // Top point of the rectangle
contentStream.lineTo(100, 750); // Left point of the rectangle
contentStream.closePath();
// Apply color and draw the rectangle
contentStream.fill(); // Fill the rectangle with blue color
contentStream.stroke(); // Draw the rectangle border with red color
contentStream.close();
document.save("colored_and_stroked_example.pdf");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
কোডের ব্যাখ্যা
- setNonStrokingColor(Color.BLUE): এটি ফিল রঙ হিসেবে নীল (Blue) সেট করে।
- setStrokingColor(Color.RED): এটি স্ট্রোক (অথবা আউটলাইন) রঙ হিসেবে লাল (Red) সেট করে।
- setLineWidth(2): এটি লাইনটির প্রস্থ 2 পয়েন্টে সেট করে।
- fill(): এটি রঙ দ্বারা পূর্ণ করা (ফিলিং) অংশের জন্য ব্যবহৃত হয়।
- stroke(): এটি আউটলাইন (স্ট্রোক) অংশের জন্য ব্যবহৃত হয়।
Stroke কাস্টমাইজেশন
যদি আপনি স্ট্রোকের স্টাইল পরিবর্তন করতে চান, যেমন ড্যাশলাইন বা প্যাটার্ন, তবে setLineDashPattern() মেথড ব্যবহার করতে পারেন:
float[] dashPattern = { 10, 5 }; // 10 পয়েন্ট লাইন এবং 5 পয়েন্ট স্পেস
contentStream.setLineDashPattern(dashPattern, 0); // ড্যাশ প্যাটার্ন সেট করা
এটি লাইনটি ড্যাশড (ধারাবাহিক দাগ) স্টাইলের মতো তৈরি করবে।
এভাবে, পিডিএফবক্স ব্যবহার করে সহজেই পিডিএফ ডকুমেন্টে রঙ এবং স্ট্রোক সেট করা যায়। এটি আপনার পিডিএফ ফাইলকে আরও আকর্ষণীয় এবং কাস্টমাইজযোগ্য করে তোলে।
পিডিএফবক্স (PDFBox) এর সাহায্যে পিডিএফ ডকুমেন্টে গ্রাফিক্স (যেমন লাইন, রেকটাঙ্গল, বৃত্ত ইত্যাদি) যোগ করা যেতে পারে। এটি পিডিএফ ডকুমেন্টে ভিজ্যুয়াল উপাদান তৈরি করতে সাহায্য করে। এই টিউটোরিয়ালে আমরা দেখব কিভাবে পিডিএফ ডকুমেন্টে গ্রাফিক্স যোগ করা যায়।
গ্রাফিক্স যোগ করার জন্য প্রস্তুতি
প্রথমে পিডিএফবক্স লাইব্রেরি আপনার প্রোজেক্টে অন্তর্ভুক্ত থাকতে হবে। আপনি Maven অথবা Gradle ব্যবহার করে এটি যুক্ত করতে পারেন।
Maven (pom.xml):
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.28</version>
</dependency>
Gradle (build.gradle):
implementation 'org.apache.pdfbox:pdfbox:2.0.28'
PDF এ Graphics যোগ করার উদাহরণ
এখন, নিচে একটি উদাহরণ দেয়া হলো যেখানে পিডিএফ ডকুমেন্টে গ্রাফিক্স যেমন লাইন, রেকটাঙ্গল, এবং বৃত্ত যোগ করা হয়েছে:
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 AddGraphicsToPDF {
public static void main(String[] args) {
// পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
try {
// নতুন পিডিএফ পেজ যোগ করা
PDPage page = new PDPage();
document.addPage(page);
// কনটেন্ট স্ট্রিম তৈরি
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// টেক্সট শুরু করা
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 700); // পেজের স্থান নির্ধারণ
contentStream.showText("PDF with Graphics Example");
contentStream.endText();
// গ্রাফিক্স যোগ করা
// লাইন ড্র করা
contentStream.setLineWidth(1f);
contentStream.moveTo(100, 650); // শুরুর পয়েন্ট
contentStream.lineTo(200, 650); // শেষ পয়েন্ট
contentStream.stroke(); // স্ট্রোক করে লাইন ড্র
// রেকটাঙ্গল ড্র করা
contentStream.setLineWidth(2f);
contentStream.setStrokingColor(0, 0, 255); // নীল রঙ
contentStream.rectangle(100, 600, 150, 50); // x, y, width, height
contentStream.stroke();
// বৃত্ত ড্র করা
contentStream.setLineWidth(1f);
contentStream.setStrokingColor(255, 0, 0); // লাল রঙ
contentStream.circle(200, 500, 30); // x, y, radius
contentStream.stroke();
// কনটেন্ট স্ট্রিম বন্ধ করা
contentStream.close();
// পিডিএফ ডকুমেন্ট সংরক্ষণ
document.save("pdf_with_graphics_example.pdf");
// ডকুমেন্ট বন্ধ করা
document.close();
System.out.println("PDF successfully created with graphics!");
} catch (IOException e) {
System.err.println("Error while creating PDF with graphics: " + e.getMessage());
}
}
}
কোডের ব্যাখ্যা
- PDDocument: পিডিএফ ডকুমেন্ট তৈরি করতে ব্যবহৃত অবজেক্ট।
- PDPage: পিডিএফ পেজ, যেখানে গ্রাফিক্স এবং টেক্সট যোগ করা হবে।
- PDPageContentStream: এই অবজেক্টটি পিডিএফ পেজের কনটেন্ট স্ট্রিম, যা গ্রাফিক্স (লাইন, রেকটাঙ্গল, বৃত্ত) এবং টেক্সট যোগ করার জন্য ব্যবহৃত হয়।
- moveTo() এবং lineTo(): লাইন ড্র করার জন্য ব্যবহৃত ফাংশন।
moveTo()শুরুর পয়েন্ট এবংlineTo()শেষ পয়েন্ট নির্ধারণ করে। - rectangle(): একটি রেকটাঙ্গল ড্র করার জন্য ব্যবহৃত ফাংশন।
- circle(): একটি বৃত্ত ড্র করার জন্য ব্যবহৃত ফাংশন।
- setStrokingColor(): গ্রাফিক্সের রঙ সেট করতে ব্যবহৃত ফাংশন।
পিডিএফ সংরক্ষণ
document.save("pdf_with_graphics_example.pdf"); এর মাধ্যমে পিডিএফ ফাইলটি "pdf_with_graphics_example.pdf" নামে সংরক্ষণ করা হবে।
এভাবে পিডিএফবক্স ব্যবহার করে পিডিএফ ডকুমেন্টে গ্রাফিক্স যোগ করা সম্ভব। আপনি লাইন, রেকটাঙ্গল, বৃত্ত ইত্যাদি যোগ করে আপনার পিডিএফ ডকুমেন্টকে ভিজ্যুয়ালি আকর্ষণীয় করে তুলতে পারেন।
Read more