Color এবং Stroke সেট করা

PDF এ Graphics এবং Shapes আঁকা - পিডিএফবক্স (PDFbox) - Java Technologies

270

পিডিএফবক্স (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); // ড্যাশ প্যাটার্ন সেট করা

এটি লাইনটি ড্যাশড (ধারাবাহিক দাগ) স্টাইলের মতো তৈরি করবে।


এভাবে, পিডিএফবক্স ব্যবহার করে সহজেই পিডিএফ ডকুমেন্টে রঙ এবং স্ট্রোক সেট করা যায়। এটি আপনার পিডিএফ ফাইলকে আরও আকর্ষণীয় এবং কাস্টমাইজযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...