Search code examples
jasper-reportssubreport

Can a textField in subreport with "Stretch with overflow" span across multiple pages?


I have a subreport with just one text field. This text field can have somewhere around 5000 characters retrieved from a service.

My goal is to show this subreport on the parent report. It should start from the "Float" position where I place it to multiple pages in a continuous manner.

When I have this subreport in my parent report, the text clips when the "Stretch with overflow" of the text field in subreport is set to false. When I set "Stretch with overflow" to true, the text field appears blank on the pages but takes up the required space on the parent report.

I have tried the following but nothing seem to work:

1. In the sub report:

  • Print when detail overflow = true
  • Split Type = "Stretch"
  • Ignore pagination = true

2. Main report:

  • Split Type = "Stretch"
  • Print when detail overflow = true on subreport object
  • Print in first whole band = true

Trying it since few days has made me feel that it is impossible to have a overflowing text field across pages.

Please let me know if its even possible to have a subreport with text field to span across multiple pages.


Solution

  • "its even possible to have a subreport with text field to span across multiple pages?"

    Yes I attach an example below

    Main report

    <?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="stretchTest" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="BlankPage" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="6c8cebac-a7b5-4dc2-abe8-e36b0cb184ca">
        <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
            <defaultValueExpression><![CDATA["C:\\jdd\\projects\\StackTrace\\jasper\\"]]></defaultValueExpression>
        </parameter>
        <detail>
            <band height="20" splitType="Stretch">
                <subreport>
                    <reportElement x="0" y="0" width="100" height="20" uuid="778b107f-288e-4f17-915d-fed6f83a2805"/>
                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(2)]]></dataSourceExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "stretchTest_subreport.jasper"]]></subreportExpression>
                </subreport>
            </band>
        </detail>
    </jasperReport>
    

    Subreport

    <?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="stretchTest_subreport" pageWidth="100" pageHeight="555" orientation="Landscape" columnWidth="100" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="f716e850-ab6f-4668-b3a1-afe4823b8abf">
        <property name="ireport.zoom" value="1.0"/>
        <property name="ireport.x" value="0"/>
        <property name="ireport.y" value="0"/>
        <parameter name="veryLongTextThatNeedToBreak" class="java.lang.String" isForPrompting="false">
            <defaultValueExpression><![CDATA["I have a subreport with just one text field. This text field can have somewhere around 5000 characters retrieved from a service. My goal is to show this subreport on the parent report.(it should start from the Float position where I place it to multiple pages in a continuous manner). When I have this subreport in my parent report, the text clips when the Stretch with overflow of the text field in subreport is set to false. When I set Stretch with overflow to true, the text field appears blank on the pages but takes up the required space on the parent report. I have tried the following but nothing seem to work:1. In the sub report: Set the Print when detail overflow = true Set Split Type = Stretch Ignore pagination = true 2. Main report: Set Split Type = Stretch Set Print when detail overflow = true of subreport object Print in first whole band = true Trying it since few days has made me feel that it is impossible to have a overflowing text field across pages. Please let me know if its even possible to have a subreport with text field to span across multiple pages. Thanks in advance!!"]]></defaultValueExpression>
        </parameter>
        <detail>
            <band height="20" splitType="Stretch">
                <textField isStretchWithOverflow="true">
                    <reportElement x="0" y="0" width="100" height="20" uuid="4f14a231-dd62-465b-b10a-fa39f9c6a297"/>
                    <textFieldExpression><![CDATA[$P{veryLongTextThatNeedToBreak}]]></textFieldExpression>
                </textField>
            </band>
        </detail>
    </jasperReport>
    

    Compile the subreport, set correct path to subreport and test you self.

    Note: I'm not setting a lot of attributes on the reportElements.

    Output

    output