JasperReports হল একটি শক্তিশালী ওপেন সোর্স রিপোর্টিং টুল যা বিভিন্ন ফরম্যাটে রিপোর্ট তৈরি করতে পারে, যেমন PDF, HTML, Excel, CSV, ইত্যাদি। এই নিবন্ধে আমরা দেখব কিভাবে JasperReports থেকে PDF এক্সপোর্ট করতে হয়।
JasperReports থেকে PDF Export করার জন্য একটি রিপোর্টের তৈরি হওয়া JasperPrint অবজেক্টকে PDF ফরম্যাটে এক্সপোর্ট করা হয়। JasperExportManager ক্লাস এই কাজটি পরিচালনা করে।
JasperReports থেকে PDF Export করার ধাপসমূহ
1. JasperReports Library এবং Dependencies Setup
প্রথমে, আপনি যদি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিচের dependency যোগ করতে হবে:
<dependencies>
<!-- JasperReports Dependency -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.18.1</version> <!-- Latest version -->
</dependency>
<!-- JFreeChart for charts (Optional) -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.3</version>
</dependency>
</dependencies>
আপনি JasperReports Library ডাউনলোড করে JAR ফাইলগুলি আপনার প্রজেক্টে যোগ করলেও এই কাজটি করতে পারেন।
2. JasperReports থেকে PDF Export এর জন্য Code Example
এখন, JasperReports তৈরি করে সেই রিপোর্টের আউটপুট PDF ফরম্যাটে এক্সপোর্ট করার জন্য নিচের ধাপগুলো অনুসরণ করতে হবে।
- Report Design (JRXML):
- প্রথমে আপনাকে একটি JRXML ফাইল তৈরি করতে হবে যেটি রিপোর্টের layout এবং data structure নির্ধারণ করে।
- JRXML থেকে JasperReport তৈরি:
- JasperCompileManager ব্যবহার করে JRXML ফাইলটি jasper ফাইলে কম্পাইল করা হয়।
- Fill the Report:
- JasperFillManager ব্যবহার করে JasperPrint অবজেক্টে রিপোর্টটি পূর্ণ (fill) করা হয়।
- Export to PDF:
- JasperExportManager ব্যবহার করে JasperPrint থেকে PDF ফরম্যাটে রপ্তানি করা হয়।
Code Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class JasperPDFExportExample {
public static void main(String[] args) {
try {
// Step 1: Prepare the data source (using a collection of JavaBeans)
List<Person> personList = new ArrayList<>();
personList.add(new Person("John Doe", 30));
personList.add(new Person("Jane Smith", 25));
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(personList);
// Step 2: Compile the report (from JRXML file)
String reportPath = "path/to/your_report.jrxml";
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// Step 3: Fill the report with data (parameters and data source)
Map<String, Object> parameters = new HashMap<>();
parameters.put("Title", "Person Report");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Step 4: Export the report to PDF
String outputPdfFile = "output/person_report.pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint, outputPdfFile);
System.out.println("PDF report exported successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getters
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
ব্যাখ্যা:
- Data Source: এখানে,
JRBeanCollectionDataSourceব্যবহার করা হয়েছে যা JavaBeans বা Collections থেকে ডেটা নিয়ে রিপোর্টে ব্যবহার করে। - Jasper Report:
JasperCompileManager.compileReport()মেথডের মাধ্যমে JRXML ফাইল থেকে JasperReport অবজেক্ট তৈরি করা হয়। - Filling the Report:
JasperFillManager.fillReport()মেথড ব্যবহার করে রিপোর্টে ডেটা পূর্ণ করা হয়। - Export to PDF:
JasperExportManager.exportReportToPdfFile()মেথড ব্যবহার করে jasperPrint অবজেক্ট থেকে PDF তৈরি করা হয়।
3. Additional PDF Export Options
JasperReports-এ PDF এক্সপোর্ট করার সময় আপনি কিছু অতিরিক্ত কনফিগারেশনও করতে পারেন যেমন:
- Password Protection:
- PDF ফাইলের ওপর পাসওয়ার্ড সেট করতে পারেন।
- Compression:
- PDF ফাইলের আকার ছোট করার জন্য compression সক্রিয় করতে পারেন।
- Metadata:
- PDF ফাইলের জন্য metadata যোগ করতে পারেন, যেমন author, title, subject ইত্যাদি।
Example: PDF with Password and Metadata
import net.sf.jasperreports.export.*;
public class JasperPDFExportWithOptions {
public static void main(String[] args) {
try {
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your_report.jrxml");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, new JREmptyDataSource());
// Export to PDF with options (password, metadata)
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "output/protected_report.pdf");
// Set password
exporter.setParameter(JRPdfExporterParameter.PDF_PASSWORD, "securePassword123");
// Set metadata
exporter.setParameter(JRPdfExporterParameter.PDF_CREATOR, "My Company");
exporter.setParameter(JRPdfExporterParameter.PDF_AUTHOR, "John Doe");
exporter.setParameter(JRPdfExporterParameter.PDF_TITLE, "Sample Report");
// Export the report
exporter.exportReport();
System.out.println("PDF with password and metadata exported successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
4. Error Handling and Best Practices
- Error Handling: JasperReports-এ JRException এবং IOException যেমন এররগুলো আসতে পারে। এসব এক্সসেপশনের জন্য try-catch ব্লক ব্যবহার করুন।
- Performance Optimization: বড় রিপোর্টের জন্য আপনি subreports ব্যবহার করতে পারেন, এবং যদি রিপোর্টের আউটপুট বড় হয় তবে memory management এর দিকে খেয়াল রাখতে হবে।
- Export Options: আপনাকে যদি অন্য ফরম্যাটে (যেমন Excel বা CSV) রিপোর্ট এক্সপোর্ট করতে হয়, তবে
JasperExportManager.exportReportToXlsFile()বাJasperExportManager.exportReportToCsvFile()ব্যবহার করতে পারেন।
JasperReports থেকে PDF এক্সপোর্ট করা সহজ এবং সরল। JasperExportManager-এর মাধ্যমে আপনি JasperPrint অবজেক্ট থেকে PDF তৈরি করতে পারেন এবং password protection, metadata এবং compression সহ আরও অনেক কাস্টমাইজেশন করতে পারেন।
এটি একটি শক্তিশালী টুল যা রিপোর্ট তৈরি করার প্রক্রিয়া এবং রিপোর্টের আউটপুটকে আরও উন্নত এবং নিরাপদ করে তোলে।
Read more