Rows এবং Columns যোগ করা

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

312

পিডিএফবক্স (PDFBox) Java লাইব্রেরি ব্যবহার করে পিডিএফ ডকুমেন্টে টেবিল (Rows এবং Columns) তৈরি করা সম্ভব। যদিও পিডিএফবক্সে সরাসরি টেবিল তৈরির জন্য কোনো বিল্ট-ইন ক্লাস নেই, তবে আপনি নিজেই কাস্টম লেআউট তৈরি করতে পারেন এবং প্রয়োজনীয় রো (Row) এবং কলাম (Column) যোগ করতে পারেন। সাধারণত, পিডিএফবক্সে টেক্সট বা অন্যান্য কনটেন্ট ড্রয়িংয়ের মাধ্যমে টেবিল তৈরি করা হয়।

Rows এবং Columns তৈরি করার প্রক্রিয়া

পিডিএফবক্সে টেবিল তৈরি করতে হলে, প্রথমে টেবিলের জন্য পৃষ্ঠায় নির্দিষ্ট গ্রিড (Rows এবং Columns) তৈরি করতে হয় এবং তারপর প্রতিটি সেলে প্রয়োজনীয় ডেটা রাখতে হয়।

উদাহরণ: Rows এবং Columns যোগ করা

import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.PDRectangle;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import java.io.IOException;

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

        // পিডিএফ পৃষ্ঠায় কন্টেন্ট স্ট্রিম তৈরি
        PDPageContentStream contentStream = new PDPageContentStream(document, page);

        // ফন্ট সেট করা
        contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);

        // টেবিলের সেলগুলোর মাপ এবং অবস্থান
        float margin = 50;
        float yStart = 750;
        float yPosition = yStart;
        float rowHeight = 20;
        float cellMargin = 5;
        float tableWidth = 500;
        float colWidth[] = {150, 150, 150}; // কলামের প্রস্থ

        // টেবিলের হেডার
        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("table_output.pdf");
        document.close();
    }
}

কোড ব্যাখ্যা

  • PDDocument: এটি একটি পিডিএফ ডকুমেন্ট তৈরি করে।
  • PDPage: নতুন একটি পিডিএফ পৃষ্ঠা তৈরি করে।
  • PDPageContentStream: এটি পিডিএফ পৃষ্ঠায় কন্টেন্ট (টেক্সট, টেবিল, ইমেজ ইত্যাদি) রেন্ডার করতে ব্যবহৃত হয়।
  • setFont(): এটি টেক্সটের ফন্ট সেট করে।
  • beginText() এবং endText(): টেক্সট রেন্ডারিং শুরু ও শেষ করার জন্য ব্যবহৃত হয়।
  • newLineAtOffset(): এটি নির্দিষ্ট কোরডিনেটে টেক্সট শুরু করার জন্য ব্যবহৃত হয়।
  • showText(): এটি টেক্সট প্রদর্শন করে।

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

  • কোলাম উইডথ: colWidth[] অ্যারে ব্যবহার করে কলামের প্রস্থ নির্ধারণ করা হয়েছে।
  • রো হাইট: টেবিলের প্রতিটি রো এর উচ্চতা rowHeight দিয়ে কন্ট্রোল করা হয়েছে।
  • মার্জিন এবং পজিশন: টেবিলের শুরু থেকে মার্জিন এবং সেল পজিশন ঠিক করার জন্য নির্দিষ্ট মান দেওয়া হয়েছে।

গুরুত্বপূর্ণ বিষয়

  • টেবিল কন্টেন্ট: টেবিলের ডেটা একটি দ্বিমাত্রিক অ্যারে (2D array) ব্যবহার করে স্টোর করা হয়, যেখানে প্রতিটি রো এবং কলামের ডেটা রাখা হয়।
  • টেবিল স্টাইলিং: পিডিএফবক্সে সরাসরি টেবিলের সেল স্টাইলিং (যেমন ব্যাকগ্রাউন্ড কালার, বর্ডার) করার জন্য অতিরিক্ত কোড লিখতে হয়। তবে এখানে আমরা শুধুমাত্র টেক্সট প্রদর্শন করেছি।

পিডিএফবক্সের মাধ্যমে Java-তে রো (Rows) এবং কলাম (Columns) তৈরি করা সম্ভব, যা ডকুমেন্টে টেবিল ভিত্তিক ডেটা প্রদর্শন করার জন্য ব্যবহার করা হয়। এই টেবিল কাস্টমাইজড হয়ে থাকতে পারে, এবং আপনি প্রয়োজনমতো গ্রিড, সেল সাইজ, এবং টেক্সট কনটেন্ট নিয়ন্ত্রণ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...