JasperReports একটি অত্যন্ত ফিচার সমৃদ্ধ রিপোর্ট জেনারেশন লাইব্রেরি যা ডেটা রিপোর্টিং প্রক্রিয়াকে সহজ এবং ফ্লেক্সিবল করে। রিপোর্ট তৈরির সময় Pagination (পাতার সংখ্যা) এবং Subreport ব্যবহারের জন্য কিছু নির্দিষ্ট কনফিগারেশন প্রয়োজন। চলুন, JasperReports-এ Pagination এবং Subreport এর জন্য আউটপুট কনফিগারেশন কীভাবে করা যায় তা আলোচনা করি।
1. Pagination Configuration
Pagination হল একটি ফিচার যা রিপোর্টের ডেটাকে পৃষ্ঠায় ভাগ করে প্রদর্শন করতে সাহায্য করে। এটি বিশেষত তখন প্রয়োজন হয় যখন রিপোর্টে বড় ডেটাসেট থাকে এবং আপনি ডেটা একাধিক পৃষ্ঠায় দেখাতে চান।
JasperReports-এ pagination সেট করতে band, page, এবং column কনফিগারেশন করা হয়। রিপোর্টের পৃষ্ঠা নির্ধারণের জন্য, আপনাকে pageHeader, detail, এবং pageFooter যেমন page number সহ বিভিন্ন band কনফিগার করতে হয়।
Pagination Example:
<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/jasperreports.xsd"
name="PaginationReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<!-- Page Header -->
<pageHeader>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA["Page Header"]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<!-- Detail Section (Where Data is Displayed) -->
<detail>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA[$F{fieldName}]]></textFieldExpression>
</textField>
</band>
</detail>
<!-- Page Footer (Page Number) -->
<pageFooter>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA["Page " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</pageFooter>
</jasperReport>
Pagination Explanation:
- PageHeader: পৃষ্ঠার শিরোনাম, যেখানে আপনি সাধারণত রিপোর্টের নাম বা শিরোনাম দেখাতে পারেন।
- Detail: এখানে রিপোর্টের ডেটা প্রদর্শন করা হয়, যেমন আপনি আপনার ডেটাবেস থেকে পাওয়া ডেটা এখানে দেখাতে পারেন।
- PageFooter: পৃষ্ঠার ফুটার, যেখানে পৃষ্ঠার সংখ্যা বা অন্যান্য তথ্য থাকতে পারে।
PAGE_NUMBERব্যবহার করে পৃষ্ঠার সংখ্যা প্রদর্শন করতে পারেন।
Additional Pagination Controls:
pageBreakBefore: এটি আপনাকে নির্দিষ্ট তথ্যের পর পেজ ব্রেক প্রয়োগ করতে সাহায্য করে।<textField> <reportElement x="0" y="0" width="515" height="50" pageBreakBefore="true"/> <textFieldExpression><![CDATA["Page Break Here"]]></textFieldExpression> </textField>splitType: এটি আপনাকে ডেটা সেগমেন্টের জন্য পেজ স্লিপিং নিয়ন্ত্রণ করতে দেয়। যেমন, এক পৃষ্ঠায় একাধিক রেকর্ড থাকতে পারে।<detail> <band height="20" splitType="Immediate"> <!-- Data content here --> </band> </detail>
2. Subreport Configuration
Subreport হল একটি রিপোর্ট যা মূল রিপোর্টের অংশ হিসেবে অন্তর্ভুক্ত করা হয়। এটি আপনাকে রিপোর্টে অন্যান্য রিপোর্টের আউটপুট যুক্ত করতে সহায়তা করে, যা মূল রিপোর্টের সাথে সম্পর্কিত হতে পারে। সাধারণত One-to-Many relationships বা Complex Data Reporting এর জন্য Subreport ব্যবহৃত হয়।
Subreport Example:
- Main Report:
- প্রথমে মূল রিপোর্ট তৈরি করুন যা Subreport ধারণ করবে।
<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/jasperreports.xsd"
name="MainReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<!-- Main Report Detail Section -->
<detail>
<band height="200">
<subreport>
<reportElement x="0" y="0" width="515" height="200"/>
<subreportExpression><![CDATA["Subreport.jasper"]]></subreportExpression>
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
</subreport>
</band>
</detail>
</jasperReport>
- Subreport:
- তারপর একটি Subreport তৈরি করুন যা মূল রিপোর্টের Detail Section-এ অন্তর্ভুক্ত করা হবে।
<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/jasperreports.xsd"
name="Subreport" pageWidth="515" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<detail>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA["Subreport Data Here"]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Subreport Explanation:
<subreport>: মূল রিপোর্টে subreport অন্তর্ভুক্ত করার জন্য এই ট্যাগ ব্যবহার করা হয়। এখানেsubreportExpressionদিয়ে subreport ফাইলের নাম দেওয়া হয়।<dataSourceExpression>: Subreport এর জন্য প্রয়োজনীয় ডেটা সোর্স প্রদান করতে হয়। এটি মূল রিপোর্টের ডেটা সোর্স হতে পারে।- Subreport File: Subreport.jasper (যা মূল রিপোর্টের অংশ) এই ফাইলটি কম্পাইলড JRXML ফাইলের আউটপুট। এটি মূল রিপোর্টের মধ্যে অন্তর্ভুক্ত হয়ে কাজ করবে।
3. Subreport Integration via Parameter Passing
Subreport থেকে প্যারামিটার প্রেরণ করতে হলে আপনাকে মূল রিপোর্টে প্যারামিটার সেট করতে হবে এবং Subreport-এ সেই প্যারামিটার ব্যবহার করতে হবে।
Main Report with Parameter Passing:
<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/jasperreports.xsd"
name="MainReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<parameter name="SubreportParameter" class="java.lang.String"/>
<detail>
<band height="200">
<subreport>
<reportElement x="0" y="0" width="515" height="200"/>
<subreportExpression><![CDATA["Subreport.jasper"]]></subreportExpression>
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
<!-- Pass Parameter to Subreport -->
<subreportParameter name="SubreportParameter" class="java.lang.String">
<subreportParameterExpression><![CDATA["Parameter Value"]]></subreportParameterExpression>
</subreportParameter>
</subreport>
</band>
</detail>
</jasperReport>
Subreport with Parameter:
<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/jasperreports.xsd"
name="Subreport" pageWidth="515" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<parameter name="SubreportParameter" class="java.lang.String"/>
<detail>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA[$P{SubreportParameter}]]></textFieldExpression> <!-- Access Parameter -->
</textField>
</band>
</detail>
</jasperReport>
এখানে, $P{SubreportParameter} এর মাধ্যমে প্যারামিটারকে Subreport এ পাস করা হয়েছে এবং সেখানে তা ব্যবহার করা হয়েছে।
- Pagination: JasperReports-এ pagination কনফিগার করতে pageHeader, detail, এবং pageFooter এর মাধ্যমে পৃষ্ঠার নকশা নিয়ন্ত্রণ করা হয়।
- Subreport: JasperReports-এ Subreport ব্যবহার করার জন্য subreport ট্যাগ ব্যবহার করা হয়, এবং এটি মূল রিপোর্টের অংশ হিসেবে কনফিগার করা হয়।
- Parameter Passing: Subreport-এ প্যারামিটার পাস করার জন্য subreportParameter ট্যাগ ব্যবহার করা হয়, যা Subreport-এ ডেটা পাঠানোর জন্য ব্যবহৃত হয়।
এই কনফিগারেশনগুলোর মাধ্যমে আপনি JasperReports এ pagination এবং subreport-কে সহজে কাস্টমাইজ করতে পারেন।
Read more