JasperReports-এ Graphics এবং Images ব্যবহার করা যেতে পারে রিপোর্টের মধ্যে ভিজ্যুয়াল কন্টেন্ট অন্তর্ভুক্ত করতে। আপনি static images (যেমন, লগো, গ্রাফিক্স) বা dynamic images (যেগুলি ডেটা সোর্স থেকে পরিবর্তিত হয়) অন্তর্ভুক্ত করতে পারেন। এখানে static এবং dynamic images যোগ করার পদ্ধতি নিয়ে আলোচনা করা হবে।
Static Images যোগ করা:
Static images হল ইমেজ ফাইল যেগুলি নির্দিষ্ট এবং পরিবর্তনশীল নয়। উদাহরণস্বরূপ, আপনি একটি রিপোর্টে Company Logo বা Signature Image রাখতে পারেন।
Static Image যোগ করার জন্য JRXML ফাইলের উদাহরণ:
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="staticImageReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Static Image -->
<detail>
<band height="100">
<image>
<reportElement x="0" y="0" width="200" height="50"/>
<imageExpression><![CDATA["file:///C:/path_to_image/logo.png"]]></imageExpression>
</image>
</band>
</detail>
</jasperReport>
ব্যাখ্যা:
<image>ট্যাগের মাধ্যমে রিপোর্টে একটি static image যোগ করা হয়েছে।imageExpressionদিয়ে আপনি ছবির ফাইল পাথ প্রদান করেন, যেখানে"file:///C:/path_to_image/logo.png"ছবির অবস্থান নির্দেশ করে।
এটি static image ইনপুট হিসেবে JasperReports এ প্রদর্শন করবে, এবং ছবির অবস্থান পরিবর্তন হবে না।
Dynamic Images যোগ করা:
Dynamic images হল এমন ইমেজ যা রিপোর্টের কন্টেন্ট অনুযায়ী পরিবর্তিত হয়। উদাহরণস্বরূপ, আপনি ডেটাবেস থেকে product images বা chart images লোড করতে পারেন।
Dynamic Image যোগ করার জন্য JRXML ফাইলের উদাহরণ:
ধরা যাক, আপনার ডেটাবেসে প্রতিটি product এর ছবি রয়েছে এবং সেই ছবি রিপোর্টে প্রদর্শন করতে চান।
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="dynamicImageReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Dynamic Image (Image from DataSource) -->
<detail>
<band height="100">
<image>
<reportElement x="0" y="0" width="200" height="100"/>
<imageExpression><![CDATA[$F{product_image}]]></imageExpression>
</image>
</band>
</detail>
</jasperReport>
ব্যাখ্যা:
<image>কম্পোনেন্টটি dynamic image প্রদর্শন করতে ব্যবহার করা হয়েছে।imageExpressionএখানে$F{product_image}ব্যবহার করা হয়েছে, যেখানেproduct_imageহল ডেটাবেস ফিল্ড যা Image ডেটা ধারণ করে। সাধারণত, এটি byte array আকারে থাকে, যা ডেটাবেস থেকে সোজা রিপোর্টে লোড করা যায়।
Java কোড (ডেটাবেস থেকে ডায়নামিক ইমেজ লোড করা):
import net.sf.jasperreports.engine.*;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
public class JasperDynamicImageExample {
public static void main(String[] args) {
try {
// JRXML ফাইল কম্পাইল করা
JasperReport jasperReport = JasperCompileManager.compileReport("dynamicImageReport.jrxml");
// JDBC সংযোগ স্থাপন
String url = "jdbc:mysql://localhost:3306/your_database";
String username = "your_username";
String password = "your_password";
Connection connection = DriverManager.getConnection(url, username, password);
// রিপোর্টের প্যারামিটার
Map<String, Object> parameters = new HashMap<>();
// ডেটাবেস থেকে ইমেজসহ ডেটা নিয়ে রিপোর্ট তৈরি করা
String query = "SELECT product_name, product_image FROM products";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
// ResultSet কে DataSource হিসেবে ব্যবহার করা
JRResultSetDataSource jrResultSetDataSource = new JRResultSetDataSource(resultSet);
// রিপোর্ট ফিল করা
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, jrResultSetDataSource);
// PDF ফরম্যাটে রিপোর্ট এক্সপোর্ট করা
JasperExportManager.exportReportToPdfFile(jasperPrint, "dynamic_image_report.pdf");
System.out.println("Report with dynamic images generated successfully!");
} catch (SQLException | JRException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
$F{product_image}ডেটাবেসের একটি BLOB বা byte array ফিল্ডকে নির্দেশ করে, যা রিপোর্টে ডায়নামিক ইমেজ হিসেবে প্রদর্শিত হয়।- JDBC ResultSet থেকে image ফিল্ড JRResultSetDataSource ব্যবহার করে রিপোর্টে ইনজেক্ট করা হয়।
Graphics (Shapes) ব্যবহার করা:
JasperReports-এ Graphics (যেমন: লাইন, রেক্টেংগল, এবং সার্কেল) ব্যবহার করে আপনি রিপোর্টে গ্রাফিক্যাল উপাদান যোগ করতে পারেন।
Graphics Example (Drawing Shapes in JasperReports):
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="graphicsReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<detail>
<band height="100">
<!-- Drawing a Line -->
<line>
<reportElement x="0" y="10" width="555" height="0"/>
<linePen lineWidth="1.0"/>
</line>
<!-- Drawing a Rectangle -->
<rectangle>
<reportElement x="50" y="30" width="200" height="50"/>
<pen lineWidth="1.0" lineColor="#000000"/>
</rectangle>
<!-- Drawing a Circle -->
<ellipse>
<reportElement x="300" y="30" width="50" height="50"/>
<pen lineWidth="1.0" lineColor="#000000"/>
<fill fillColor="#FF0000"/>
</ellipse>
</band>
</detail>
</jasperReport>
ব্যাখ্যা:
<line>,<rectangle>, এবং<ellipse>ট্যাগ ব্যবহার করে রিপোর্টে গ্রাফিক্যাল শেপ যেমন লাইন, রেক্টেংগল এবং সার্কেল আঁকা হয়েছে।<pen>এবং<fill>ব্যবহার করে লাইন এবং শেপের স্টাইল কাস্টমাইজ করা হয়েছে।- Static Images: ডিরেক্ট ফাইল পাথ দিয়ে নির্দিষ্ট ইমেজ ফাইল (যেমন লোগো) রিপোর্টে যোগ করতে পারেন।
- Dynamic Images: ডেটাবেস বা অন্য ডেটা সোর্স থেকে পরিবর্তনশীল ইমেজ ইনপুট হিসেবে রিপোর্টে প্রদর্শন করতে পারেন।
- Graphics: রিপোর্টে বিভিন্ন গ্রাফিক্যাল উপাদান (যেমন লাইন, রেক্টেংগল, সার্কেল) যোগ করা যেতে পারে, যা রিপোর্টকে আরও আকর্ষণীয় এবং তথ্যপূর্ণ করে তোলে।
JasperReports এ Static এবং Dynamic Images ব্যবহার করা রিপোর্টকে আরও সমৃদ্ধ এবং কার্যকর করতে সাহায্য করে, যা আপনাকে আরও ভাল ভিজ্যুয়াল রিপ্রেজেন্টেশন এবং ইউজার ইন্টারফেস প্রদান করবে।
Read more