Cell Styling এবং Border সেট করা

PDF এ টেবিল তৈরি করা - পিডিএফবক্স (PDFbox) - Java Technologies

257

PDFBox ব্যবহার করে আপনি পিডিএফ ডকুমেন্টে টেবিল তৈরি করতে পারেন এবং প্রতিটি সেলের স্টাইলিং এবং বর্ডার নিয়ন্ত্রণ করতে পারেন। যদিও PDFBox সরাসরি টেবিল ম্যানেজমেন্টের জন্য কোনও বিল্ট-ইন ক্লাস বা ফিচার সরবরাহ করে না, তবে PDPageContentStream এবং অন্যান্য উপাদান ব্যবহার করে সেল স্টাইলিং এবং বর্ডার সেট করা সম্ভব।

এখানে পিডিএফে টেবিল তৈরি করার জন্য সেল স্টাইলিং এবং বর্ডার সেট করার একটি উদাহরণ দেওয়া হয়েছে।

পিডিএফবক্সে সেল স্টাইলিং এবং বর্ডার সেট করার জন্য কোড উদাহরণ

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 PDFTableExample {

    public static void main(String[] args) throws IOException {
        // নতুন পিডিএফ ডকুমেন্ট তৈরি
        PDDocument document = new PDDocument();
        PDPage page = new PDPage();
        document.addPage(page);

        PDPageContentStream contentStream = new PDPageContentStream(document, page);

        // টেবিলের কিছু কনস্ট্যান্টস
        float margin = 50;
        float yStart = 750;
        float yPosition = yStart;
        float rowHeight = 20;
        float cellMargin = 5f;
        float tableWidth = 500;
        float colWidth[] = {100f, 150f, 100f, 150f};

        // কলাম নাম
        String[][] tableData = {
                {"ID", "Name", "Age", "City"},
                {"1", "John Doe", "25", "New York"},
                {"2", "Jane Smith", "30", "Los Angeles"},
                {"3", "Alice Johnson", "35", "Chicago"}
        };

        // সেল স্টাইলিং
        contentStream.setLineWidth(1f);
        contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
        
        // টেবিলের বর্ডার সেট করা
        drawTable(contentStream, tableData, margin, yPosition, tableWidth, rowHeight, colWidth, cellMargin);

        contentStream.close();
        document.save("TableExample.pdf");
        document.close();
    }

    // টেবিল ড্র করবার মেথড
    public static void drawTable(PDPageContentStream contentStream, String[][] tableData, float margin, float yPosition, float tableWidth, float rowHeight, float[] colWidth, float cellMargin) throws IOException {
        // সারি এবং কলাম গুলোর জন্য বর্ডার এবং স্টাইলিং প্রয়োগ
        for (int row = 0; row < tableData.length; row++) {
            float xPosition = margin;

            for (int col = 0; col < tableData[row].length; col++) {
                // সেল বর্ডার
                contentStream.setLineWidth(1f);
                contentStream.setStrokeColor(0, 0, 0); // কালো বর্ডার
                contentStream.setFillColor(1f, 1f, 1f); // সাদা ব্যাকগ্রাউন্ড

                // সেল সীমানা তৈরি
                contentStream.beginText();
                contentStream.newLineAtOffset(xPosition + cellMargin, yPosition - rowHeight + cellMargin);
                contentStream.showText(tableData[row][col]);
                contentStream.endText();

                contentStream.setLineWidth(1f);
                contentStream.stroke();
                
                // সেলের বর্ডার
                contentStream.moveTo(xPosition, yPosition);
                contentStream.lineTo(xPosition + colWidth[col], yPosition);
                contentStream.lineTo(xPosition + colWidth[col], yPosition - rowHeight);
                contentStream.lineTo(xPosition, yPosition - rowHeight);
                contentStream.closePath();
                contentStream.stroke();

                xPosition += colWidth[col];
            }
            yPosition -= rowHeight;
        }
    }
}

কোড ব্যাখ্যা

  • টেবিল ডেটা: এখানে একটি 2D অ্যারে tableData ব্যবহার করা হয়েছে যেখানে টেবিলের ডেটা রাখা হয়েছে। প্রতিটি সারির জন্য আলাদা কলাম রয়েছে।
  • সেল বর্ডার: contentStream.moveTo, contentStream.lineTo, এবং contentStream.stroke() পদ্ধতিগুলি ব্যবহার করে সেল বর্ডার তৈরি করা হয়েছে। আপনি সেলের চারপাশে বর্ডার আঁকতে এই পদ্ধতিগুলি ব্যবহার করতে পারেন।
  • সেল স্টাইলিং: contentStream.setFont পদ্ধতির মাধ্যমে ফন্ট স্টাইল এবং সাইজ নির্ধারণ করা হয়েছে এবং contentStream.setFillColor এবং contentStream.setStrokeColor এর মাধ্যমে সেলের ব্যাকগ্রাউন্ড এবং বর্ডার কালার নির্ধারণ করা হয়েছে।
  • সেল মের্জিন: cellMargin ব্যবহার করে সেলের মধ্যে কিছু মার্জিন (স্পেস) যোগ করা হয়েছে যাতে টেক্সট সেলের চারপাশে সঠিকভাবে অবস্থান করে।

টেবিলের সেল স্টাইলিং এবং বর্ডার কাস্টমাইজেশন

  • ফন্ট পরিবর্তন: setFont(PDType1Font.HELVETICA_BOLD, 12) দ্বারা আপনি সেলের লেখার ফন্ট পরিবর্তন করতে পারেন। অন্য কোনো ফন্ট ব্যবহার করতে চাইলে, আপনি PDType1Font ক্লাসের অন্যান্য অপশনও ব্যবহার করতে পারেন।
  • কলাম প্রস্থ এবং সারি উচ্চতা: কোডে colWidth[] এবং rowHeight দিয়ে কলাম এবং সারির আকার নিয়ন্ত্রণ করা হয়েছে। আপনি এই মানগুলো পরিবর্তন করে সেলের আকার পরিবর্তন করতে পারেন।
  • সেল ব্যাকগ্রাউন্ড রঙ: setFillColor(r, g, b) ব্যবহার করে আপনি সেলের ব্যাকগ্রাউন্ডে রঙ দিতে পারেন। r, g, b মানগুলি 0 থেকে 1 এর মধ্যে হতে হবে।
  • বর্ডার রঙ পরিবর্তন: setStrokeColor(r, g, b) ব্যবহার করে আপনি সেলের বর্ডারের রঙ পরিবর্তন করতে পারেন।

PDFBox দিয়ে আপনি পিডিএফ ডকুমেন্টে টেবিল তৈরি করে সেল স্টাইলিং এবং বর্ডার সহজেই নিয়ন্ত্রণ করতে পারেন। উপরের কোডটি আপনাকে এটি করার একটি সহজ উপায় দেখিয়েছে।

Content added By
Promotion

Are you sure to start over?

Loading...