jasper report textfield height is not dynamic [duplicate] - jasper-reports

I am using jasper report as reporting tool in my application. And I am wondering how can i wrap the long text by expanding the reportElement dynamically into vertical direction ( expanding the row size, not column width). Or Is there any way to achieve this? My approach below is truncating the long text "Some very long name". Can you please give me some suggestions?
Output :
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
public class JrUtils {
public static void showJrReport(List objectList, String fileName, String title, Map parameters) {
try {
File f = new File(fileName);
JasperDesign jasperDesign = JRXmlLoader.load(f.getAbsolutePath());
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(objectList);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, ds);
JasperViewer jv = new JasperViewer(jasperPrint, false);
jv.setTitle(title);
jv.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
List<Person> pList = new ArrayList<Person>();
Person p1 = new Person();
p1.setPersonName("Some Name ");
p1.setAddress("Nepal - Address Fits Here");
Person p2 = new Person();
p2.setPersonName("Some very long name");
p2.setAddress("Nepal - Address Fits Here");
pList.add(p1);
pList.add(p2);
showJrReport(pList, "testReport.jrxml", "Test Report", new HashMap<Object, Object>());
}
}
Jasper Report JrXML file - testReport.jrxml :
<?xml version="1.0" encoding="UTF-8"?>
<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="report name" pageWidth="250" pageHeight="400" columnWidth="210" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="2.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<field name="personName" class="java.lang.String"/>
<field name="address" class="java.lang.String"/>
<columnHeader>
<band height="23" splitType="Stretch">
<rectangle>
<reportElement x="0" y="0" width="88" height="23"/>
</rectangle>
<rectangle>
<reportElement x="88" y="0" width="122" height="23"/>
</rectangle>
<staticText>
<reportElement x="0" y="0" width="88" height="23"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Name]]></text>
</staticText>
<staticText>
<reportElement x="88" y="0" width="122" height="23"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Address]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="21" splitType="Stretch">
<rectangle>
<reportElement x="0" y="0" width="88" height="21"/>
</rectangle>
<textField>
<reportElement x="0" y="0" width="88" height="21"/>
<textElement verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{personName}]]></textFieldExpression>
</textField>
<rectangle>
<reportElement x="88" y="0" width="122" height="21"/>
</rectangle>
<textField>
<reportElement x="88" y="0" width="122" height="21"/>
<textElement verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{address}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>

I found the answer myself :
I did some extra research about the properties of textField and rectangle components. And found that I need to set the following properties.
For rectangle :
<rectangle>
<reportElement stretchType="RelativeToBandHeight" ... />
</rectangle>
For textField :
<textField isStretchWithOverflow="true">
...
</textField>
Output as expected :
The <detail> ...</detail> section after correction :
<detail>
<band height="21" splitType="Stretch">
<rectangle>
<reportElement stretchType="RelativeToBandHeight" x="0" y="0" width="88" height="21"/>
</rectangle>
<textField isStretchWithOverflow="true">
<reportElement x="2" y="0" width="84" height="21"/>
<textElement verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{personName}]]></textFieldExpression>
</textField>
<rectangle>
<reportElement stretchType="RelativeToBandHeight" x="88" y="0" width="122" height="21"/>
</rectangle>
<textField isStretchWithOverflow="true">
<reportElement x="90" y="0" width="118" height="21"/>
<textElement verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{address}]]></textFieldExpression>
</textField>
</band>
</detail>
UPDATE
You can also set property net.sf.jasperreports.print.keep.full.text to true to achieve that across your all reports.

Also you can make the truncation elegant by using the following properties set to the textfield. Check this sample
net.sf.jasperreports.text.truncate.at.char
net.sf.jasperreports.text.truncate.suffix
net.sf.jasperreports.print.keep.full.text

Go to the Text Field Properties then set Text Adjust to StretchHeight.

Related

Jasper Report Crosstab with ArrayList of Data

I am trying to create Jasper Report with crosstab by writing JRXML with DTOs.
I am trying to create rows dynamic number of chargeCodes and their total. It looks something like this:
jobNo
chargeCodeA
chargeCodeB
Total
jobNoABC
100.10
300.30
400.40
jobNoDEF
200.20
400.40
600.60
In my Java backend, I have DTO which looks like this
class MyDTO {
private String jobNo;
private List <String> chargeCode = new ArrayList <> ();
private List <BigDecimal> chargeCodeTotal = new ArrayList <> ();
}
where the list codeCode contains chargeCodeA, chargeCodeB for jobNoABC
and chargeCodeTotal contains 100.10, 300.30 for jobNoABC also.
In my JRXML, I have this:
<?xml version="1.0" encoding="UTF-8" ?>
<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="vendorBillingCompletedJobReport" leftMargin="5" rightMargin="5">
<parameter name="lblJobNo" class="java.lang.String" isForPrompting="false"/>
<field name="jobNo" class="java.lang.String"/>
<field name="chargeCode" class="java.util.List"/>
<field name="chargeCodeTotal" class="java.util.List"/>
<summary>
<band height="60">
<crosstab>
<reportElement width="782" y="0" x="0" height="60" />
<rowGroup name="jobNo" width="100" totalPosition="End">
<bucket>
<bucketExpression class="java.util.List">
<![CDATA[$F{jobNo}]]>
</bucketExpression>
</bucket>
<crosstabRowHeader>
<cellContents>
<box>
<pen lineColor="black" lineWidth="1"/>
</box>
<textField>
<reportElement width="100" y="0" x="0" height="20" />
<textElement textAlignment="Right" verticalAlignment="Middle" />
<textFieldExpression>
<![CDATA[$V{jobNo}]]>
</textFieldExpression>
</textField>
</cellContents>
</crosstabRowHeader>
<crosstabTotalRowHeader>
<cellContents>
<box>
<pen lineColor="black" lineWidth="1"/>
</box>
<staticText>
<reportElement x="0" y="0" width="60" height="20" />
<textElement verticalAlignment="Middle" />
<text>TOTAL</text>
</staticText>
</cellContents>
</crosstabTotalRowHeader>
</rowGroup>
<columnGroup name="chargeCode" height="20" totalPosition="End">
<bucket>
<bucketExpression class="java.util.List">
$F{chargeCode}
</bucketExpression>
</bucket>
<crosstabColumnHeader>
<cellContents>
<box>
<pen lineColor="black" lineWidth="1"/>
</box>
<textField isStretchWithOverflow="true">
<reportElement width="60" y="0" x="0" height="20" />
<textElement verticalAlignment="Bottom" />
<textFieldExpression>
<![CDATA[$V{chargeCode}]]>
</textFieldExpression>
</textField>
</cellContents>
</crosstabColumnHeader>
<crosstabTotalColumnHeader>
<cellContents>
<box>
<pen lineColor="black" lineWidth="1"/>
</box>
<staticText>
<reportElement width="60" y="0" x="0" height="20" />
<textElement verticalAlignment="Bottom" />
<text>TOTAL</text>
</staticText>
</cellContents>
</crosstabTotalColumnHeader>
</columnGroup>
<measure name="chargeCodeTotalCount" class="java.math.BigDecimal" calculation="Sum">
<measureExpression>$F{chargeCodeTotal}</measureExpression>
</measure>
<crosstabCell height="20" width="60">
<cellContents backcolor="#FFFFFF">
<box>
<pen lineColor="black" lineWidth="1"/>
</box>
<textField>
<reportElement x="5" y="0" width="55" height="20" />
<textElement textAlignment="Left" verticalAlignment="Bottom" />
<textFieldExpression class="java.math.BigDecimal">
$V{chargeCodeTotalCount}
</textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
</crosstab>
</band>
</summary>
</jasperReport>
But I am getting error:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Comparable
at org.apache.commons.collections.comparators.ComparableComparator.compare(ComparableComparator.java:91)
I am not sure how to create infinite number of chargeCodes using JRXML.
And I cannot use Dynamic Jasper. I can only think of crosstab. Please help. Thanks.

How to send data to table component using node-jasper?

I have a task to generate PDFs with nodeJS, so i am working with the node-jasper library.
I try to display a table component but when i send dataset from back-end, it keeps showing empty table.
here is my nodjs code:
const express = require('express')
const app = express()
const port = 5000
var jasper = require('node-jasper')({
path: './lib/jasperreports-6.10.0',
reports: {
hw: {
jasper: './jasperFiles/repportBI.jasper',
jrxml: './reports/repportBI.jrxml',
conn: 'in_memory_json'
}
},
});
app.get('/jasper1', (req, res) => {
var report = {
report: 'hw',
data: {
title: "My test report",
Dataset1: jasper.toJsonDataSource(
{
dados: [
{
code: 'e1',
name: 'raouf',
function: 'Developer'
},
{
code: 'e2',
name: 'djamel',
function: 'Developer'
},
{
code: 'e3',
name: 'omar',
function: 'Medecine'
}
]
},
'dados'
),
}
,
dataset: { }
}
var pdf = jasper.pdf(report);
res.set({
'Content-type': 'application/pdf',
'Content-Length': pdf.length
});
res.send(pdf)
});
app.listen(port, () => {
console.log('app is runing on port: ', port)
})
here is my jrxml file:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.10.0.final using JasperReports Library version 6.10.0-unknown -->
<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="repportBI" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="95744304-ed70-4001-8031-6cec31c7acbf">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<style name="Table 1_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table 1_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table 1_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="Dataset1" uuid="70370722-01b1-41a5-a681-3d6a28fa2f84">
<queryString>
<![CDATA[]]>
</queryString>
<field name="code" class="java.lang.String"/>
<field name="name" class="java.lang.String"/>
<field name="function" class="java.lang.String"/>
</subDataset>
<parameter name="title" class="java.lang.String"/>
<parameter name="datasetTable1" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="code" class="java.lang.String"/>
<field name="name" class="java.lang.String"/>
<field name="function" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="90" splitType="Stretch">
<textField>
<reportElement x="204" y="6" width="147" height="60" uuid="4fc37721-d03e-4f94-9df8-355d2c2ed4e3"/>
<textElement textAlignment="Center">
<font size="26" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{title}]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="354" splitType="Stretch">
<componentElement>
<reportElement x="72" y="154" width="200" height="200" uuid="99067366-d9e3-48e1-95b3-a4d8c1e8a1db">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<property name="com.jaspersoft.studio.table.style.table_header" value="Table 1_TH"/>
<property name="com.jaspersoft.studio.table.style.column_header" value="Table 1_CH"/>
<property name="com.jaspersoft.studio.table.style.detail" value="Table 1_TD"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" whenNoDataType="AllSectionsNoDetail">
<datasetRun subDataset="Dataset1" uuid="7f03ad97-fa43-4b82-94c5-19a674ac7d7e">
<dataSourceExpression><![CDATA[$P{datasetTable1}]]></dataSourceExpression>
</datasetRun>
<jr:column width="66" uuid="40fb6564-12c3-4174-955c-23d808832359">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Colonne1"/>
<jr:columnHeader style="Table 1_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="66" height="30" uuid="a6e64620-475b-4cd5-a3f6-d7dd711b2ee2"/>
<text><![CDATA[code]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table 1_TD" height="30">
<textField>
<reportElement x="0" y="0" width="66" height="30" uuid="a7d15e3a-2452-4f80-8c20-7fbcc8181fe0"/>
<textFieldExpression><![CDATA[$F{code}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="66" uuid="ba0efa7e-7795-4fd2-9b71-b39f9fdcb466">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Colonne2"/>
<jr:columnHeader style="Table 1_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="66" height="30" uuid="a694b15b-401f-4e8d-a726-ac8e6ddcaf05"/>
<text><![CDATA[name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table 1_TD" height="30">
<textField>
<reportElement x="0" y="0" width="66" height="30" uuid="b0fe47b1-8a5c-4df3-8851-6e89da8bfc3a"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="66" uuid="d0dc532f-c2e6-4ff4-8b3e-7a8c8ab0a748">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Colonne3"/>
<jr:columnHeader style="Table 1_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="66" height="30" uuid="32797f1c-a862-4e5f-b624-e1f19af58277"/>
<text><![CDATA[function]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table 1_TD" height="30">
<textField>
<reportElement x="0" y="0" width="66" height="30" uuid="ba092f73-109d-4160-b7dc-c664e83366c4"/>
<textFieldExpression><![CDATA[$F{function}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
the generated PDF:
enter image description here
i can't find where the problem is, can you help me please ?
There are two problems here.
The first is that the name of the parameter in report.data (namely Dataset1) doesn't match the name of the parameter in the report (which is datasetTable1). So you'll need this in the JavaScript code:
var report = {
report: 'hw',
data: {
title: "My test report",
datasetTable1: jasper.toJsonDataSource(
...
Then, the type of the datasetTable1 parameter in the report is net.sf.jasperreports.engine.data.JRBeanCollectionDataSource, while jasper.toJsonDataSource produces a net.sf.jasperreports.engine.data.JsonDataSource object. You need to set the parameter type to JsonDataSource or to a more generic type like this:
<parameter name="datasetTable1" class="net.sf.jasperreports.engine.JRDataSource"/>

<printWhenExpression> is not working for conditional display of array of json objects in jasper

I'm beginner to jasper and working on a report where I need to display the header of a table only when data is present in it. I have currently below code snippet in my jrxml:
<frame>
<reportElement stretchType="ContainerHeight" x="240" y="37" width="110" height="52" uuid="some-uuid">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
</reportElement>
<staticText>
<reportElement positionType="Float" x="0" y="0" width="110" height="16" uuid="some-uuid">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
</reportElement>
<textElement>
<font size="12" isBold="true"/>
</textElement>
<text><![CDATA[EMPLOYEES]]></text>
</staticText>
<componentElement>
<reportElement positionType="Float" x="0" y="16" width="110" height="16" isRemoveLineWhenBlank="true" uuid="some-uuid">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="employeesDataSet" uuid="some-uuid">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("employees")]]></dataSourceExpression>
</datasetRun>
<jr:column width="110" uuid="some-uuid">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
<jr:detailCell height="16">
<textField isStretchWithOverflow="true">
<reportElement style="paragraph" stretchType="ElementGroupHeight" x="0" y="0" width="110" height="16" isRemoveLineWhenBlank="true" uuid="some-uuid"/>
<textElement markup="html">
<font size="12"/>
</textElement>
<textFieldExpression><![CDATA["<B>" +($F{type} != null ? $F{type} : "") + "</b> " + ($F{result} != null ? $F{result} : "") + ", " + ($F{value} != null ? $F{value} : "") + " " + ($F{unit} != null ? $F{unit} : "")]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</frame>
JSON from which data is being written to report looks like:
"employees": [
{
"type": "HR",
"result": "1",
"value": "Positive"
},
{
"type": "MD",
"result": "3",
"value": "Positive"
}
]
How can I display the static header EMPLOYEES only when data is present and not display anything when there is no data in JSON?
I have tried adding in <static text> but it didn't work :
<printWhenExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("employees") != null]]></printWhenExpression>
I have found the solution and posting it here so that other people facing similar issue can refer.
To check if json array has more elements, use next() method. This line worked for me :
<printWhenExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("employees").next()]]></printWhenExpression>

List component displays only the first row

In my JasperReport's report only the first row of my collection gets displayed. Here is the relevant code.
The entity
public class LegendEntity implements Serializable{
private String label;
private Image bufferedImage;
public LegendEntity() {
}
public LegendEntity(String label) {
this.label = label;
}
public LegendEntity(String label,Image bufferedImage) {
this.label = label;
this.bufferedImage = bufferedImage;
}
//getters-setters
Preparing the datasource:
List<MyEntity> myEntitiesList = new ArrayList<>();
//filling the list
JRBeanCollectionDataSource entityDS= new JRBeanCollectionDataSource(myEntitiesList ,false);
report.getReportParameters().put("ENTITY_DATASOURCE", entityDS);
The jrxml:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ... name="SampleReport" printOrder="Horizontal" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
<subDataset name="LegendDataset" uuid="e0d72aca-6fd5-4935-b57f-ff5a436f2afb">
<field name="label" class="java.lang.String">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="bufferedImage" class="java.awt.Image"/>
</subDataset>
<parameter name="P_MAP_SCALE_STR" class="java.lang.String"/>
<parameter name="ENTITY_DATASOURCE" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
<detail>
<band height="842" splitType="Stretch">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
<frame>
<reportElement x="298" y="635" width="298" height="206" uuid="e807b35a-857c-43ba-a080-13f422eb1456"/>
<componentElement>
<reportElement x="11" y="11" width="275" height="186" uuid="d6f579d3-75de-4745-8f94-c974d2e697a0"/>
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
<datasetRun subDataset="LegendDataset" uuid="ee194811-e7e5-4102-83ff-b150901d73c9">
<dataSourceExpression><![CDATA[$P{ENTITY_DATASOURCE}]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="186" width="275">
<staticText>
<reportElement x="10" y="10" width="130" height="20" uuid="4260f10d-ee62-4cf6-8023-d0dc2266f4dd"/>
<textElement textAlignment="Center"/>
<text><![CDATA[ENTITY LABEL]]></text>
</staticText>
<staticText>
<reportElement x="150" y="10" width="100" height="20" uuid="88135c50-3c17-4b0f-b7e5-b05987f98b02"/>
<textElement textAlignment="Center"/>
<text><![CDATA[ENTITY SYMBOL]]></text>
</staticText>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="10" y="31" width="130" height="18" uuid="30885d06-38db-4b1c-a312-616a60ee1c42"/>
<textFieldExpression><![CDATA[$F{label}]]></textFieldExpression>
</textField>
<image>
<reportElement x="150" y="31" width="100" height="18" uuid="0020adca-acad-4915-9f0d-88d75e4897c7"/>
<imageExpression><![CDATA[$F{bufferedImage}]]></imageExpression>
</image>
</jr:listContents>
</jr:list>
</componentElement>
</frame>
<staticText>
<reportElement x="30" y="600" width="80" height="18" uuid="6c1afd65-a8d4-4e3f-9a56-d09abe7ec904"/>
<textElement textAlignment="Right">
<font fontName="DejaVu Sans" size="9" isBold="true"/>
</textElement>
<text><![CDATA[Ölçek: 1/]]></text>
</staticText>
<textField>
<reportElement positionType="Float" x="110" y="600" width="100" height="18" uuid="6360a545-63af-48cc-987d-d828c24a3b2a"/>
<textElement>
<font fontName="DejaVu Sans" size="9" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$P{P_MAP_SCALE_STR}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
And on the report only the first entity's label and symbol is displayed. What am I missing?
Debugging already done and I am sure that 1+ entities are present in the list.
The whole JRXML here .
You can try to put variables in white zone in table. Not in blue/header zone.
It works for me.
I have noticed at least 2 problems in your main JRXML:
Setting printOrder="Horizontal" at the report level may prevent proper elements overflow. Try reverting to printOrder="Vertical" or remove the attribute completely.
There is too much whitespace inside the list element that would force overflow. You should not have white space after the last elements.

How to set Page footer to the bottom of the every page in Jasper Reports?

For export the page footer are always at the bottom of the page.
But in Print preview the page footer comes immediately after the detail band.
I want the page footer to appear always at the bottom of the page , irrespective of detail band height.
Below is the xml,
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Created with Jaspersoft Studio version 6.0.3.final using JasperReports Library version 6.0.3 -->
<!-- 2015-03-12T14:09:48 -->
<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="Listing Report" pageWidth="1385" pageHeight="922" orientation="Landscape" columnWidth="1335" leftMargin="25" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.5" />
<property name="ireport.x" value="0" />
<property name="ireport.y" value="0" />
<template>
<![CDATA[$P{templatePath}]]>
</template>
<style name="Crosstab Data Text" />
<style name="Zebra" mode="Opaque">
<conditionalStyle> <conditionExpression><![CDATA[$V {
REPORT_COUNT
}
%2==1]]></conditionExpression> <style backcolor="#F0F0F0"/> </conditionalStyle>
</style>
<parameter name="appointmentid" class="java.lang.String" />
<parameter name="reportsetid" class="java.lang.Object" />
<parameter name="savedreportid" class="java.lang.Object" />
<parameter name="dbtablename" class="java.lang.String" isForPrompting="false">
<parameterDescription>
<![CDATA[appointmentlistingseedreport]]>
</parameterDescription>
</parameter>
<parameter name="partialInlineQuery" class="java.lang.String" isForPrompting="false">
<parameterDescription>
<!-----------------Query--------------------->
</parameterDescription>
</parameter>
<parameter name="dynamicdbtablename" class="java.lang.String" isForPrompting="false">
<parameterDescription>
<![CDATA[appointmentlistingdynamicdata]]>
</parameterDescription>
</parameter>
<parameter name="templatePath" class="java.lang.String" />
<queryString>
<!--Query String------------------>
</queryString>
<field name="reportsetid" class="java.lang.Object" />
<field name="savedreportid" class="java.lang.Object" />
<field name="organizationname" class="java.lang.String" />
<field name="duration" class="java.lang.Integer" />
<field name="appointmenttypename" class="java.lang.String" />
<field name="personname" class="java.lang.String" />
<field name="appointmentstatus" class="java.lang.String" />
<field name="appointmentdate" class="java.sql.Date" />
<field name="location" class="java.lang.String" />
<field name="ordername" class="java.lang.String" />
<field name="ordertype" class="java.lang.String" />
<field name="orderstatus" class="java.lang.String" />
<field name="resultstatus" class="java.lang.String" />
<field name="resourcename" class="java.lang.String" />
<field name="appointmentstarttime" class="java.sql.Time" />
<variable name="GrandTotal_Count" class="java.math.BigDecimal" calculation="Count">
<variableExpression>
<![CDATA[$F{reportsetid}]]>
</variableExpression>
</variable>
<variable name="GrandTotal_Variable" class="java.lang.String" calculation="Count">
<variableExpression>
<![CDATA["Grand Total ( " + $V{GrandTotal_Count} + ")"]]>
</variableExpression>
</variable>
<variable name="organizationname_Count" class="java.math.BigDecimal" resetType="Group" resetGroup="organizationname" calculation="Count">
<variableExpression>
<![CDATA[$F{organizationname}]]>
</variableExpression>
</variable>
<variable name="organizationname_Variable" class="java.lang.String" resetType="Group" resetGroup="organizationname" calculation="Count">
<variableExpression>
<![CDATA["Total for " + (($F{organizationname} != null) ? $F{organizationname} : "") + " " + "(" + $V{organizationname_Count} + ")"]]>
</variableExpression>
</variable>
<variable name="location_Count" class="java.math.BigDecimal" resetType="Group" resetGroup="location" calculation="Count">
<variableExpression>
<![CDATA[$F{location}]]>
</variableExpression>
</variable>
<variable name="location_Variable" class="java.lang.String" resetType="Group" resetGroup="location" calculation="Count">
<variableExpression>
<![CDATA["Total for " + (($F{location} != null) ? $F{location} : "") + " " + "(" + $V{location_Count} + ")"]]>
</variableExpression>
</variable>
<variable name="resourcename_Count" class="java.math.BigDecimal" resetType="Group" resetGroup="resourcename" calculation="Count">
<variableExpression>
<![CDATA[$F{resourcename}]]>
</variableExpression>
</variable>
<variable name="resourcename_Variable" class="java.lang.String" resetType="Group" resetGroup="resourcename" calculation="Count">
<variableExpression>
<![CDATA["Total for " + (($F{resourcename} != null) ? $F{resourcename} : "") + " " + "(" + $V{resourcename_Count} + ")"]]>
</variableExpression>
</variable>
<group name="FooterGrandTotal">
<groupFooter>
<band height="20">
<textField>
<reportElement x="0" y="0" width="0" height="20" uuid="a23e46f3-b798-42ec-816e-c3e0c76ee7f6" />
<textElement>
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(($V{GrandTotal_Variable} != null) ? $V{GrandTotal_Variable} : "")]]>
</textFieldExpression>
</textField>
</band>
</groupFooter>
</group>
<group name="organizationname" isStartNewPage="true">
<groupExpression>
<![CDATA[(($F{organizationname} != null) ? ($F{organizationname} +" "+ "<style isItalic='true' forecolor='#aaaaaa'>Org</style> ") :"Org")]]>
</groupExpression>
<groupHeader>
<band height="20">
<textField>
<reportElement style="Zebra" x="0" y="0" width="1335" height="20" forecolor="#333333" uuid="cf936d24-cfb0-44ff-a601-e4bcba0a1cf7" />
<box leftPadding="15" />
<textElement markup="styled">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{organizationname} != null) ? ($F{organizationname} +" "+ "<style isItalic='true' forecolor='#aaaaaa'>Org</style> ") :"Org")]]>
</textFieldExpression>
</textField>
</band>
</groupHeader>
<groupFooter>
<band height="20">
<textField>
<reportElement style="Zebra" x="0" y="0" width="1335" height="20" forecolor="#333333" uuid="cf936d24-cfb0-44ff-a601-e4bcba0a1cf7" />
<box leftPadding="15" />
<textElement textAlignment="Left" verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(($V{organizationname_Variable} != null) ? $V{organizationname_Variable} : "")]]>
</textFieldExpression>
</textField>
</band>
</groupFooter>
</group>
<group name="location">
<groupExpression>
<![CDATA[(($F{location} != null) ? ($F{location} +" "+ "<style isItalic='true' forecolor='#aaaaaa'>Location</style> ") :"Location")]]>
</groupExpression>
<groupHeader>
<band height="20">
<textField>
<reportElement style="Zebra" x="0" y="0" width="1335" height="20" forecolor="#333333" uuid="0f1dc658-577b-4a1a-a937-b21af77454d4" />
<box leftPadding="40" />
<textElement markup="styled">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{location} != null) ? ($F{location} +" "+ "<style isItalic='true' forecolor='#aaaaaa'>Location</style> ") :"Location")]]>
</textFieldExpression>
</textField>
</band>
</groupHeader>
<groupFooter>
<band height="20">
<textField>
<reportElement style="Zebra" x="0" y="0" width="1335" height="20" forecolor="#333333" uuid="0f1dc658-577b-4a1a-a937-b21af77454d4" />
<box leftPadding="40" />
<textElement textAlignment="Left" verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(($V{location_Variable} != null) ? $V{location_Variable} : "")]]>
</textFieldExpression>
</textField>
</band>
</groupFooter>
</group>
<group name="resourcename">
<groupExpression>
<![CDATA[(($F{resourcename} != null) ? ($F{resourcename} +" "+ "<style isItalic='true' forecolor='#aaaaaa'>Resource</style> ") :"Resource")]]>
</groupExpression>
<groupHeader>
<band height="20">
<textField>
<reportElement style="Zebra" x="0" y="0" width="1335" height="20" forecolor="#333333"/>
<box leftPadding="65" />
<textElement markup="styled">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{resourcename} != null) ? ($F{resourcename} +" "+ "<style isItalic='true' forecolor='#aaaaaa'>Resource</style> ") :"Resource")]]>
</textFieldExpression>
</textField>
</band>
</groupHeader>
<groupFooter>
<band height="20">
<textField>
<reportElement style="Zebra" x="0" y="0" width="1335" height="20" forecolor="#333333" uuid="613e4649-a0be-402b-b641-6792d681a3fd" />
<box leftPadding="65" />
<textElement textAlignment="Left" verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(($V{resourcename_Variable} != null) ? $V{resourcename_Variable} : "")]]>
</textFieldExpression>
</textField>
</band>
</groupFooter>
</group>
<title>
<band height="24" splitType="Stretch" />
</title>
<pageHeader>
<band height="100">
<textField>
<reportElement x="0" y="0" width="1335" height="20" forecolor="#999999" uuid="07f143b8-4615-48bf-a984-3f5d9f1b7fdb" />
<textElement textAlignment="Left">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(("GENHEALTH FAMILY PRACTICE ASSOCIATES (GFPA)" != null) ? "GENHEALTH FAMILY PRACTICE ASSOCIATES (GFPA)" : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="0" y="20" width="1335" height="20" forecolor="#999999" uuid="548c383a-181b-4a5e-9773-95bec6028b2f" />
<textElement textAlignment="Left">
<font size="17" isBold="false" isItalic="true" />
</textElement>
<textFieldExpression>
<![CDATA[(("Appointment List" != null) ? "Appointment List" : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="0" y="40" width="1335" height="20" forecolor="#999999" uuid="9a238441-512f-4e24-84c4-d0c6f78a912a" />
<textElement textAlignment="Left">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[(("Appointment Date : is not : 03/12/2015" != null) ? "Appointment Date : is not : 03/12/2015" : "")]]>
</textFieldExpression>
</textField>
</band>
</pageHeader>
<columnHeader>
<band height="25" splitType="Stretch">
<staticText>
<reportElement style="table-header" x="0" y="0" width="210" height="20" uuid="2d0b156b-95f8-487c-bb7d-09e729e3e364">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<box leftPadding="85" />
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Appt Type]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="210" y="0" width="125" height="20" uuid="e059ad06-5f5d-4056-9217-a21fa154640e">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Appt Date]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="335" y="0" width="125" height="20" uuid="3890f6d6-0d75-4bda-90ca-97cb7a7d4333">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Appt Time]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="460" y="0" width="125" height="20" uuid="9f7d46ea-c2ee-4a6f-ba73-57e90ed1045b">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Appt Dur]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="585" y="0" width="125" height="20" uuid="e4d430ab-b03d-4f18-8779-c8d37e30e21b">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Pat Name]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="710" y="0" width="125" height="20" uuid="3c06f694-8e55-4565-af1a-7386ccee9422">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Appt Sts]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="835" y="0" width="125" height="20" uuid="434fe607-d680-4fef-b67d-0cc18957f6f9">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Order Name]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="960" y="0" width="125" height="20" uuid="a2f59de7-7964-4d52-8beb-e9f4e3c8ca03">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Order Type]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="1085" y="0" width="125" height="20" uuid="4b7703eb-2426-4574-bb23-66b35dadaa03">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Order Status]]>
</text>
</staticText>
<staticText>
<reportElement style="table-header" x="1210" y="0" width="125" height="20" uuid="1add3ebc-c688-41af-831c-efba8ee67b92">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="true" />
</textElement>
<text>
<![CDATA[Result Status]]>
</text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement style="Zebra" x="0" y="0" width="210" height="20" uuid="2ae4a4f2-473e-42a9-8055-c02309813c9a">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<box leftPadding="85" />
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{appointmenttypename} != null) ? $F{appointmenttypename} : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="210" y="0" width="125" height="20" uuid="d9a4e371-73f3-4540-a135-952dacb1d937">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[$P{REPORT_SCRIPTLET}.formatDate($F{appointmentdate})]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="335" y="0" width="125" height="20" uuid="b293699a-e8cb-4dd4-a878-1fc5082f686d">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[$P{REPORT_SCRIPTLET}.formatTime($F{appointmentstarttime})]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="460" y="0" width="125" height="20">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<box rightPadding="10" />
<textElement textAlignment="Right" verticalAlignment="Middle">
<font size="17" isBold="false" />
<paragraph lineSpacing="1_1_2" rightIndent="20" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{duration} != null) ? $F{duration} : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="585" y="0" width="125" height="20">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{personname} != null) ? $F{personname} : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="710" y="0" width="125" height="20">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{appointmentstatus} != null) ? $F{appointmentstatus} : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="835" y="0" width="125" height="20">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{ordername} != null) ? $F{ordername} : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="960" y="0" width="125" height="20">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{ordertype} != null) ? $F{ordertype} : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="1085" y="0" width="125" height="20">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{orderstatus} != null) ? $F{orderstatus} : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement style="Zebra" x="1210" y="0" width="125" height="20">
<property name="net.sf.jasperreports.text.truncate.at.char" value="true" />
<property name="net.sf.jasperreports.text.truncate.suffix" value="..." />
</reportElement>
<textElement verticalAlignment="Middle">
<font size="17" isBold="false" />
</textElement>
<textFieldExpression>
<![CDATA[(($F{resultstatus} != null) ? $F{resultstatus} : "")]]>
</textFieldExpression>
</textField>
</band>
</detail>
<pageFooter>
<band height="100">
<textField>
<reportElement x="890" y="20" width="445" height="20"/>
<textElement textAlignment="Right">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(("Confidential" != null) ? "Confidential" : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="0" y="20" width="445" height="20"/>
<textElement textAlignment="Left">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(("Prepared at 01:16 PM CDT,March 12, 2015" != null) ? "Prepared at 01:16 PM CDT,March 12, 2015" : "")]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="445" y="20" width="222" height="20"/>
<textElement textAlignment="Right">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[(("Page "+$V{PAGE_NUMBER}+" of" != null) ? "Page "+$V{PAGE_NUMBER}+" of" : "")]]>
</textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="667" y="20" width="222" height="20"/>
<textElement textAlignment="Left">
<font size="17" isBold="true" />
</textElement>
<textFieldExpression>
<![CDATA[((" " + $V{PAGE_NUMBER} != null) ? " " + $V{PAGE_NUMBER} : "")]]>
</textFieldExpression>
</textField>
</band>
</pageFooter>
<summary>
<band height="35" splitType="Prevent" />
</summary>
<noData>
<band height="20">
<staticText>
<reportElement x="206" y="0" width="174" height="20"/>
<textElement textAlignment="Center">
<font size="14" isBold="true" />
</textElement>
<text>
<![CDATA[No Data Found]]>
</text>
</staticText>
</band>
</noData>
</jasperReport>
Are you sure its page footer? because page footer will always be at the bottom of page. Try decreasing the height, may be the top of your page footer is at middle of the page. And one more thing, page footer will always be after detail section unless you don't have a column footer in between.
I just facing same issue, It seems that pageFooter extends its height to fill all left space if exists.
Try to change all your page footer elements position to "FixRelativeToBottom"
<reportElement positionType="FixRelativeToBottom" ... >
Or create a frame with this position type and then you put all your elements inside