Spring Boot একটি জনপ্রিয় Java ফ্রেমওয়ার্ক, যা দ্রুত এবং সহজে অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। পিডিএফবক্স (PDFBox) একটি শক্তিশালী লাইব্রেরি যা Java অ্যাপ্লিকেশনগুলিতে পিডিএফ ডকুমেন্ট তৈরি, ম্যানিপুলেট, এবং এক্সট্র্যাক্ট করতে ব্যবহৃত হয়। এই দুটি প্রযুক্তি একত্রে ব্যবহারের মাধ্যমে Spring Boot অ্যাপ্লিকেশনে পিডিএফ জেনারেশন এবং ম্যানিপুলেশন কার্যক্রম সহজভাবে সম্পাদিত হতে পারে।
Spring Boot এবং PDFBox ইন্টিগ্রেশন সাধারণত ওয়েব অ্যাপ্লিকেশনগুলোতে পিডিএফ জেনারেশন বা কাস্টম পিডিএফ ডকুমেন্ট তৈরি করার জন্য ব্যবহৃত হয়, যেখানে ডাইনামিক কনটেন্ট (যেমন ডাটাবেস থেকে প্রাপ্ত তথ্য) ব্যবহার করে পিডিএফ ফাইল তৈরি করা হয়।
Spring Boot এবং PDFBox ইন্টিগ্রেশন শুরু করা
Spring Boot প্রোজেক্টে PDFBox ইন্টিগ্রেট করার জন্য প্রথমে আপনাকে প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে।
১. Maven ডিপেনডেন্সি
Maven প্রোজেক্টে PDFBox লাইব্রেরি যোগ করতে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.28</version>
</dependency>
২. Spring Boot Controller তৈরি করা
Spring Boot অ্যাপ্লিকেশনকে পিডিএফ জেনারেটর হিসেবে কনফিগার করতে একটি REST API তৈরি করতে হবে, যা পিডিএফ ফাইল জেনারেট করবে।
package com.example.pdfgeneration.controller;
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.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.RestController;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@RestController
public class PdfController {
@GetMapping("/generate-pdf")
public ResponseEntity<byte[]> generatePDF() throws IOException {
// নতুন পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
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("Hello, this is a PDF generated by Spring Boot and PDFBox!");
contentStream.endText();
contentStream.close();
// পিডিএফ ফাইল আউটপুট স্ট্রিমে সংরক্ষণ করা
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
document.save(byteArrayOutputStream);
document.close();
// পিডিএফ ফাইল রেসপন্স হিসেবে পাঠানো
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "inline; filename=generated.pdf");
return new ResponseEntity<>(byteArrayOutputStream.toByteArray(), headers, HttpStatus.OK);
}
}
কোডের ব্যাখ্যা
PDDocument: এটি পিডিএফ ডকুমেন্টের অবজেক্ট তৈরি করতে ব্যবহৃত হয়।PDPage: এটি পিডিএফ ডকুমেন্টে একটি নতুন পৃষ্ঠা যোগ করতে ব্যবহৃত হয়।PDPageContentStream: এটি পিডিএফ পৃষ্ঠায় কন্টেন্ট লিখতে ব্যবহৃত হয়।ByteArrayOutputStream: পিডিএফ কন্টেন্টকে বাইনারি আউটপুট হিসেবে সংরক্ষণ করতে ব্যবহৃত হয়।ResponseEntity<byte[]>: পিডিএফ কনটেন্ট HTTP রেসপন্স হিসেবে ফেরত পাঠানোর জন্য ব্যবহৃত হয়।
৩. Spring Boot অ্যাপ্লিকেশন কনফিগারেশন
Spring Boot অ্যাপ্লিকেশন চালাতে, আপনার @SpringBootApplication ক্লাসটি থাকতে হবে:
package com.example.pdfgeneration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class PdfGenerationApplication {
public static void main(String[] args) {
SpringApplication.run(PdfGenerationApplication.class, args);
}
}
৪. অ্যাপ্লিকেশন চালানো
Spring Boot অ্যাপ্লিকেশনটি চালানোর পর, আপনি http://localhost:8080/generate-pdf URL এ HTTP GET রিকোয়েস্ট পাঠালে একটি পিডিএফ ফাইল পাবেন, যা Hello, this is a PDF generated by Spring Boot and PDFBox! লেখা থাকবে।
পিডিএফ ডকুমেন্টে ডাইনামিক কনটেন্ট যোগ করা
Spring Boot অ্যাপ্লিকেশনে পিডিএফ জেনারেশন আরও শক্তিশালী করতে, আপনি ডাটাবেস থেকে ডাইনামিক ডেটা এক্সট্র্যাক্ট করে তা পিডিএফে অন্তর্ভুক্ত করতে পারেন। উদাহরণস্বরূপ, একটি রিপোর্ট বা ইনভয়েস পিডিএফ তৈরি করার সময়, ব্যবহারকারীর তথ্য বা অন্যান্য ডাটাবেস রেকর্ডগুলি পিডিএফে ইনপুট হিসেবে ব্যবহার করা যেতে পারে।
উদাহরণ: ডাইনামিক টেবিল এবং তথ্য পিডিএফে যোগ করা
contentStream.showText("Invoice ID: " + invoiceId);
contentStream.newLineAtOffset(100, 650);
contentStream.showText("Customer Name: " + customerName);
contentStream.newLineAtOffset(100, 630);
contentStream.showText("Amount: $" + amount);
এখানে invoiceId, customerName, এবং amount ডাইনামিক ভ্যালু যা ডাটাবেস বা অন্য কোনো সোর্স থেকে পাওয়া যেতে পারে।
Spring Boot এবং PDFBox ইন্টিগ্রেশন ব্যবহার করে পিডিএফ ডকুমেন্ট জেনারেশন এবং ম্যানিপুলেশন একটি সহজ এবং কার্যকরী উপায় হয়ে ওঠে। আপনি খুব সহজেই ওয়েব অ্যাপ্লিকেশনগুলিতে পিডিএফ ফাইল জেনারেট করতে পারেন এবং ডাইনামিক ডেটা সহ পিডিএফ কনটেন্ট তৈরি করতে পারেন।
পিডিএফবক্স (PDFBox) লাইব্রেরি Java ব্যবহার করে পিডিএফ ফাইল তৈরি, সম্পাদনা, এবং প্রক্রিয়াকরণ করতে ব্যবহৃত হয়। যখন আপনি একটি Spring Boot প্রজেক্টে PDFBox ব্যবহার করতে চান, তখন আপনি এটি Spring Boot এর ডিপেন্ডেন্সি ম্যানেজমেন্টে সংযুক্ত করে এবং Spring Boot এর সুবিধা নিয়ে পিডিএফ ফাইল নিয়ে কাজ করতে পারবেন।
এখানে আমরা দেখব কিভাবে Spring Boot প্রজেক্টে PDFBox লাইব্রেরি ইনস্টল ও কনফিগার করে পিডিএফ ফাইল তৈরি এবং রিড করা যায়।
Spring Boot প্রজেক্টে PDFBox লাইব্রেরি যুক্ত করা
Spring Boot প্রজেক্টে PDFBox লাইব্রেরি ব্যবহার করতে প্রথমে Maven বা Gradle ডিপেন্ডেন্সি হিসেবে এটি যুক্ত করতে হবে।
Maven ডিপেন্ডেন্সি
pom.xml ফাইলে PDFBox লাইব্রেরির ডিপেন্ডেন্সি যুক্ত করতে হবে:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version> <!-- সর্বশেষ ভার্সন চেক করুন -->
</dependency>
Gradle ডিপেন্ডেন্সি
build.gradle ফাইলে PDFBox ডিপেন্ডেন্সি যুক্ত করতে হবে:
dependencies {
implementation 'org.apache.pdfbox:pdfbox:2.0.27' // সর্বশেষ ভার্সন চেক করুন
}
Spring Boot এ PDFBox ব্যবহার করে PDF তৈরি করা
Spring Boot অ্যাপ্লিকেশন তৈরি করার পর, PDFBox ব্যবহার করে PDF তৈরি করা বা রিড করা সম্ভব। এখানে একটি উদাহরণ দেওয়া হল যেখানে আমরা Spring Boot এর মধ্যে PDFBox ব্যবহার করে একটি পিডিএফ ফাইল তৈরি করব।
পিডিএফ তৈরি করার উদাহরণ
package com.example.pdfdemo;
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.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("/pdf")
public class PdfController {
@GetMapping("/generate")
public String generatePdf() {
try {
// পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
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("Hello, Spring Boot with PDFBox!"); // টেক্সট
contentStream.endText();
// পিডিএফ ডকুমেন্ট সংরক্ষণ
File file = new File("generated-pdf.pdf");
document.save(file);
document.close();
return "PDF created successfully at: " + file.getAbsolutePath();
} catch (IOException e) {
e.printStackTrace();
return "Error while creating PDF: " + e.getMessage();
}
}
}
কোডের ব্যাখ্যা
- PDDocument: পিডিএফ ডকুমেন্ট তৈরি করতে ব্যবহৃত হয়।
- PDPage: পিডিএফ ডকুমেন্টে পেজ যোগ করতে ব্যবহৃত হয়।
- PDPageContentStream: পিডিএফ পৃষ্ঠায় কন্টেন্ট লিখতে ব্যবহৃত হয়।
- setFont(): পিডিএফে টেক্সট লেখার জন্য ফন্ট এবং সাইজ নির্ধারণ করা হয়।
- newLineAtOffset(): টেক্সটের অবস্থান নির্ধারণ করা হয়।
- showText(): পিডিএফ পৃষ্ঠায় টেক্সট প্রদর্শন করা হয়।
- document.save(): পিডিএফ ডকুমেন্ট সংরক্ষণ করা হয়।
API Endpoints
উপরের কোডে একটি Spring Boot REST API তৈরি করা হয়েছে যেটি /pdf/generate URL এ পিডিএফ তৈরি করে। আপনি এই URL এ GET রিকোয়েস্ট পাঠিয়ে একটি পিডিএফ ফাইল তৈরি করতে পারবেন।
Spring Boot প্রজেক্টে পিডিএফ রিড করা
PDFBox লাইব্রেরি ব্যবহার করে পিডিএফ ফাইলের কনটেন্ট রিড করাও সম্ভব। নিচে একটি উদাহরণ দেওয়া হল যেখানে আমরা একটি পিডিএফ ফাইল থেকে টেক্সট এক্সট্র্যাক্ট করব।
পিডিএফ রিড করার উদাহরণ
package com.example.pdfdemo;
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("/pdf")
public class PdfController {
@GetMapping("/read")
public String readPdf() {
try {
// পিডিএফ ডকুমেন্ট লোড করা
PDDocument document = PDDocument.load(new File("generated-pdf.pdf"));
// পিডিএফ থেকে টেক্সট এক্সট্র্যাক্ট করা
PDFTextStripper pdfStripper = new PDFTextStripper();
String text = pdfStripper.getText(document);
// পিডিএফ ডকুমেন্ট বন্ধ করা
document.close();
return "Extracted Text: " + text;
} catch (IOException e) {
e.printStackTrace();
return "Error while reading PDF: " + e.getMessage();
}
}
}
কোডের ব্যাখ্যা
- PDDocument.load(): পিডিএফ ফাইল লোড করতে ব্যবহৃত হয়।
- PDFTextStripper: পিডিএফ ডকুমেন্ট থেকে টেক্সট এক্সট্র্যাক্ট করার জন্য ব্যবহৃত হয়।
- getText(): পিডিএফ ডকুমেন্ট থেকে টেক্সট পাওয়া যায়।
API Endpoints
এই কোডটি একটি GET API তৈরি করে যা /pdf/read URL তে পাঠানো GET রিকোয়েস্টে পিডিএফ ফাইল থেকে টেক্সট এক্সট্র্যাক্ট করবে।
Spring Boot প্রজেক্টে PDFBox ব্যবহার করে পিডিএফ ফাইল তৈরি, সম্পাদনা এবং রিড করা সহজ। এটি Spring Boot অ্যাপ্লিকেশনগুলির মধ্যে পিডিএফ ডকুমেন্টের সাথে কাজ করার জন্য একটি শক্তিশালী টুল হিসেবে কাজ করে।
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 দ্বারা পিডিএফের টেক্সট, ছবি যোগ করা এবং টেক্সট এক্সট্র্যাক্ট করা সহজেই করা সম্ভব, যা ওয়েব অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়।
Spring Boot একটি শক্তিশালী ফ্রেমওয়ার্ক যা Java-তে দ্রুত এবং সহজে অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে, এবং পিডিএফবক্স (PDFBox) Java লাইব্রেরি পিডিএফ ফাইল তৈরির জন্য একটি জনপ্রিয় টুল। Spring Boot অ্যাপ্লিকেশনে পিডিএফবক্স ইন্টিগ্রেট করা খুবই সহজ এবং আপনাকে পিডিএফ তৈরি এবং ম্যানিপুলেশন করতে সাহায্য করে।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে Spring Boot অ্যাপ্লিকেশনে পিডিএফবক্স ইন্টিগ্রেট করা যায় এবং একটি সিম্পল পিডিএফ ডকুমেন্ট জেনারেট করা যায়।
১. প্রকল্প কনফিগারেশন
Spring Boot এবং PDFBox ব্যবহার করার জন্য প্রথমে আপনার pom.xml ফাইলে পিডিএফবক্স লাইব্রেরি যুক্ত করতে হবে। এটি Maven দিয়ে প্যাকেজ ম্যানেজমেন্টের মাধ্যমে করা যেতে পারে।
pom.xml ফাইল:
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
২. Spring Boot Controller তৈরি করা
এখন আমরা একটি Spring Boot Controller তৈরি করব যা HTTP রিকোয়েস্টের মাধ্যমে পিডিএফ ডকুমেন্ট জেনারেট করবে।
PDFController.java
package com.example.pdfdemo.controller;
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.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.RestController;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@RestController
public class PDFController {
@GetMapping("/generate-pdf")
public ResponseEntity<byte[]> generatePDF() throws IOException {
// পিডিএফ ডকুমেন্ট তৈরি
PDDocument document = new PDDocument();
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("Hello, this is a PDF generated using PDFBox and Spring Boot!");
contentStream.endText();
// কন্টেন্ট স্ট্রিম বন্ধ করা
contentStream.close();
// পিডিএফ আউটপুটে লেখা
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
document.save(byteArrayOutputStream);
document.close();
// HTTP Response দিয়ে পিডিএফ পাঠানো
byte[] pdfBytes = byteArrayOutputStream.toByteArray();
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=generated_pdf.pdf");
return new ResponseEntity<>(pdfBytes, headers, HttpStatus.OK);
}
}
কোড ব্যাখ্যা
- PDDocument: এটি পিডিএফ ডকুমেন্ট তৈরি করে।
- PDPage: পিডিএফ পৃষ্ঠা তৈরি করে।
- PDPageContentStream: পিডিএফ পৃষ্ঠায় কন্টেন্ট (যেমন টেক্সট) যোগ করার জন্য ব্যবহৃত হয়।
- ByteArrayOutputStream: পিডিএফ ডকুমেন্টটি আউটপুট স্ট্রিম হিসেবে স্টোর করতে ব্যবহৃত হয়।
- ResponseEntity: Spring Boot-এর মাধ্যমে পিডিএফ আউটপুট হিসেবে HTTP রেসপন্স ফেরত দেয়।
৩. Spring Boot অ্যাপ্লিকেশন চালানো
Spring Boot অ্যাপ্লিকেশন চালানোর জন্য @SpringBootApplication অ্যানোটেশন সহ একটি মূল ক্লাস তৈরি করতে হবে।
PdfDemoApplication.java
package com.example.pdfdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class PdfDemoApplication {
public static void main(String[] args) {
SpringApplication.run(PdfDemoApplication.class, args);
}
}
৪. পিডিএফ জেনারেট করার জন্য HTTP রিকোয়েস্ট পাঠানো
Spring Boot অ্যাপ্লিকেশন চালু করার পর, আপনি ব্রাউজারে বা Postman ব্যবহার করে /generate-pdf এ GET রিকোয়েস্ট পাঠাতে পারেন। এটি একটি পিডিএফ ডকুমেন্ট ডাউনলোড করবে, যার মধ্যে পিডিএফবক্স ব্যবহার করে তৈরি করা টেক্সট থাকবে।
সার্ভার চালানোর পর:
- URL:
http://localhost:8080/generate-pdf - ফাইল:
generated_pdf.pdf(পিডিএফ ডাউনলোড হবে)
সারাংশ
- Spring Boot Integration: পিডিএফবক্সকে Spring Boot অ্যাপ্লিকেশনের মধ্যে ইন্টিগ্রেট করা সহজ এবং দ্রুত।
- PDF Generation: Spring Boot Controller এর মাধ্যমে পিডিএফ ডকুমেন্ট তৈরি এবং HTTP Response হিসেবে পাঠানো সম্ভব।
- ByteArrayOutputStream: পিডিএফ ফাইল আউটপুটে পাঠানোর জন্য ব্যবহার করা হয়।
এভাবে Spring Boot এবং PDFBox ব্যবহার করে পিডিএফ ডকুমেন্ট সহজে তৈরি ও ডাউনলোড করা যায়।
Read more