Spring Boot এ PDF ডকুমেন্ট জেনারেশন এবং ম্যানিপুলেশন

PDFBox এবং Spring Boot Integration - পিডিএফবক্স (PDFbox) - Java Technologies

281

Spring Boot এবং PDFBox Java লাইব্রেরি একত্রিত করে আপনি খুব সহজে পিডিএফ ডকুমেন্ট জেনারেট এবং ম্যানিপুলেট (Manipulate) করতে পারেন। Spring Boot একটি জনপ্রিয় Java ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন এবং RESTful API তৈরি করতে ব্যবহৃত হয়। PDFBox Java লাইব্রেরি পিডিএফ ফাইল তৈরি, রিড এবং ম্যানিপুলেট করতে ব্যবহৃত হয়।

এখানে আমরা দেখবো কিভাবে Spring Boot অ্যাপ্লিকেশনে PDF ডকুমেন্ট জেনারেট করা যায় এবং PDF ফাইলের কনটেন্ট ম্যানিপুলেট করা যায়।

প্রয়োজনীয় ডিপেনডেন্সি

Spring Boot অ্যাপ্লিকেশন শুরু করতে হলে, আপনাকে pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি গুলি যোগ করতে হবে:

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Apache PDFBox -->
    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.27</version>
    </dependency>

    <!-- Spring Boot Starter Thymeleaf (Optional if you want to generate PDF from HTML) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

1. PDF ডকুমেন্ট জেনারেশন

Spring Boot অ্যাপ্লিকেশন থেকে পিডিএফ ডকুমেন্ট জেনারেট করতে PDFBox ব্যবহার করা যায়। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যা Spring Boot REST API-তে PDF ডকুমেন্ট জেনারেট করে।

উদাহরণ: Spring Boot REST API দিয়ে PDF ডকুমেন্ট জেনারেট করা

package com.example.pdfdemo.controller;

import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

@RestController
@RequestMapping("/api/pdf")
public class PDFController {

    @GetMapping("/generate")
    public ResponseEntity<byte[]> generatePDF() 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);
        contentStream.beginText();
        contentStream.newLineAtOffset(100, 750); // পজিশন
        contentStream.showText("Hello, this is a PDF document generated by Spring Boot and PDFBox.");
        contentStream.endText();
        contentStream.close();

        // পিডিএফ ডকুমেন্ট থেকে আউটপুট স্ট্রিম তৈরি
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        document.save(byteArrayOutputStream);
        document.close();

        // HTTP রেসপন্সে পিডিএফ ফাইল পাঠানো
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Disposition", "attachment; filename=document.pdf");
        return new ResponseEntity<>(byteArrayOutputStream.toByteArray(), headers, HttpStatus.OK);
    }
}

কোড ব্যাখ্যা

  • PDDocument: এটি পিডিএফ ডকুমেন্ট তৈরি করতে ব্যবহৃত হয়।
  • PDPage: পিডিএফ পৃষ্ঠা তৈরি করে।
  • PDPageContentStream: পিডিএফ পৃষ্ঠায় টেক্সট এবং কনটেন্ট লেখার জন্য ব্যবহৃত হয়।
  • HttpHeaders: এটি HTTP রেসপন্সে পিডিএফ ফাইল সেভ করার জন্য Content-Disposition হেডার সেট করে।
  • ResponseEntity: এটি HTTP রেসপন্সে পিডিএফ ফাইল পাঠানোর জন্য ব্যবহৃত হয়।

এই API রিকোয়েস্ট করলে, পিডিএফ ডকুমেন্ট তৈরি হয়ে সেটি ব্রাউজারে ডাউনলোড হিসেবে আসবে।

2. PDF ম্যানিপুলেশন (Text Extraction, Modification)

পিডিএফ ডকুমেন্ট ম্যানিপুলেট করার জন্য, আপনি পিডিএফবক্সের বিভিন্ন ফিচার ব্যবহার করতে পারেন। যেমন, পিডিএফ থেকে টেক্সট এক্সট্র্যাক্ট করা, পিডিএফের কনটেন্ট মডিফাই করা ইত্যাদি।

উদাহরণ: PDF থেকে টেক্সট এক্সট্র্যাক্ট করা

package com.example.pdfdemo.controller;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;
import java.io.IOException;

@RestController
@RequestMapping("/api/pdf")
public class PDFManipulationController {

    @GetMapping("/extract-text")
    public String extractTextFromPDF() throws IOException {
        // পিডিএফ ডকুমেন্ট লোড করা
        PDDocument document = PDDocument.load(new File("example.pdf"));
        
        // টেক্সট এক্সট্র্যাক্ট করা
        PDFTextStripper stripper = new PDFTextStripper();
        String text = stripper.getText(document);
        
        // ডকুমেন্ট বন্ধ করা
        document.close();
        
        return text;
    }
}

কোড ব্যাখ্যা

  • PDFTextStripper: এটি পিডিএফ ডকুমেন্ট থেকে টেক্সট এক্সট্র্যাক্ট করতে ব্যবহৃত হয়।
  • PDDocument.load(): পিডিএফ ফাইল লোড করা।
  • getText(): এটি পিডিএফ থেকে সমস্ত টেক্সট এক্সট্র্যাক্ট করে।

3. PDF Modification (Text, Images যোগ করা)

পিডিএফবক্স ব্যবহার করে পিডিএফে টেক্সট বা ছবি যোগ করা যায়। এই প্রক্রিয়া Spring Boot অ্যাপ্লিকেশনে খুব সহজে একত্রিত করা যায়। নিচে একটি উদাহরণ দেয়া হলো যেখানে পিডিএফে টেক্সট এবং ছবি যোগ করা হয়েছে।

package com.example.pdfdemo.controller;

import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.PDImageXObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;
import java.io.IOException;

@RestController
@RequestMapping("/api/pdf")
public class PDFModificationController {

    @GetMapping("/add-image-text")
    public ResponseEntity<byte[]> addImageAndTextToPDF() 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);

        // টেক্সট যোগ করা
        contentStream.beginText();
        contentStream.newLineAtOffset(100, 750);
        contentStream.showText("This is an updated PDF with image and text.");
        contentStream.endText();

        // ছবি যোগ করা
        PDImageXObject image = PDImageXObject.createFromFile("image.png", document);
        contentStream.drawImage(image, 100, 600);

        contentStream.close();

        // পিডিএফ সেভ করা
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        document.save(byteArrayOutputStream);
        document.close();

        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Disposition", "attachment; filename=modified-document.pdf");
        return new ResponseEntity<>(byteArrayOutputStream.toByteArray(), headers, HttpStatus.OK);
    }
}

সারাংশ

Spring Boot এবং PDFBox একত্রিত করে পিডিএফ ডকুমেন্ট তৈরি, এক্সট্র্যাক্ট এবং মডিফাই করা সম্ভব। Spring Boot ব্যবহার করে পিডিএফ ডকুমেন্ট তৈরি এবং ম্যানিপুলেশন RESTful API এর মাধ্যমে পরিচালনা করা যেতে পারে। PDFBox দ্বারা পিডিএফের টেক্সট, ছবি যোগ করা এবং টেক্সট এক্সট্র্যাক্ট করা সহজেই করা সম্ভব, যা ওয়েব অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়।


Content added By
Promotion

Are you sure to start over?

Loading...