Java Jasper子报表InputStream标头不显示图像

Java Jasper子报表InputStream标头不显示图像,java,jasper-reports,subreport,Java,Jasper Reports,Subreport,我有一个主报表和子报表,我将一个参数作为inputstream传递给子报表。我将在子报表标题中将此参数用作徽标(图像)。如果将图像添加到子报表并使用此参数,子报表将仅显示数据源和图像的第一条记录。如果不使用此图像,我的子报表将列出数据源的所有记录。我试图把图像的细节,标题和标题,但它没有工作。如果我直接使用子报表中的图像,它工作得很好,但是我需要从Java发送这个参数(filepath) 有什么问题吗 编辑:我提供了一些代码 主要报告: <?xml version="1.0" encod

我有一个主报表和子报表,我将一个参数作为inputstream传递给子报表。我将在子报表标题中将此参数用作徽标(图像)。如果将图像添加到子报表并使用此参数,子报表将仅显示数据源和图像的第一条记录。如果不使用此图像,我的子报表将列出数据源的所有记录。我试图把图像的细节,标题和标题,但它没有工作。如果我直接使用子报表中的图像,它工作得很好,但是我需要从Java发送这个参数(filepath)

有什么问题吗

编辑:我提供了一些代码

主要报告:

 <?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="e-BordroIsciToplu" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a3c2690b-2af8-4210-8775-cb69cd6557f7">
    <property name="ireport.zoom" value="1.5394743546921228"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <property name="ireport.background.image.properties" value="true,true,0.25,138,273,0,0,386,161"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["W:\\Projects\\modules\\common\\src\\resources\\report\\templates\\"]]></defaultValueExpression>
    </parameter>
    <parameter name="ANTET" class="java.io.InputStream"/>
    <parameter name="AY" class="java.lang.String"/>
    <field name="topluInfo" class="java.util.List"/>
    <detail>
        <band height="109" splitType="Stretch">
            <subreport runToBottom="false">
                <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="0" y="0" width="533" height="100" uuid="cd6571c7-c8da-4120-868f-82999376c3d3"/>
                <parametersMapExpression><![CDATA[]]></parametersMapExpression>
                <subreportParameter name="SUBREPORT_DIR">
                    <subreportParameterExpression><![CDATA[]]>  </subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="AY">
                    <subreportParameterExpression><![CDATA[$P{AY}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="ANTET">
                    <subreportParameterExpression><![CDATA[$P{ANTET}]]></subreportParameterExpression>
                </subreportParameter>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{topluInfo})]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "e-topluSubreportTest.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
</jasperReport>


我找到了解决方案。我从子报表中删除图像,并将图像放在主报表的页眉中。它解决了我的问题,但我仍然想知道以前的问题,为什么它只显示一条记录。感谢您的评论和宝贵的时间。

您的原始报告仅显示第一条记录的图像,因为InputStream只能读取一次。如果对打印多次的图像元素使用单个InputStream实例,第一次它可以正常工作,但之后它将无法从流中读取任何数据

你可以做两件事。一种是以字节数组而不是流的形式传递图像数据

第二种方法是为image元素设置
isUsingCache=“true”
。这将在首次渲染元素时缓存图像对象,然后在再次打印图像元素时使用缓存的图像


从性能角度来看,第二种方法会更好,因为图像数据不会被多次读取。您还可以通过将图像数据作为字节数组传递并设置isUsingCache标志来组合解决方案。

感谢您的回复,您似乎忘记了将参数传递给子报表(从主报表),但我在子报表中定义了参数,子报表仅显示一条记录的图像(标题)。问题是有些东西阻止在子报表中显示所有记录。我们可以使用一些示例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="e-topluSubreport" language="groovy" pageWidth="595" pageHeight="842" columnWidth="545" leftMargin="20" rightMargin="30" topMargin="20" bottomMargin="20" uuid="a3c2690b-2af8-4210-8775-cb69cd6557f7">
    <property name="ireport.zoom" value="1.5394743546921228"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <property name="ireport.background.image.properties" value="true,true,0.25,138,273,0,0,386,161"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["W:\\Projects\\modules\\common\\src\\resources\\report\\templates\\"]]></defaultValueExpression>
    </parameter>
    <parameter name="ANTET" class="java.io.InputStream"/>
    <parameter name="AY" class="java.lang.String"/>
    <detail>
        <band height="139" splitType="Stretch">
            <staticText>
                <reportElement x="5" y="105" width="185" height="15" uuid="023f69c4-13a4-419e-b64b-d41da9f937fa"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font size="8" isBold="true" pdfEncoding="Cp1254"/>
                </textElement>
                <text><![CDATA[  BORDRO TÜRÜ  ]]></text>
            </staticText>
            <staticText>
                <reportElement x="5" y="120" width="185" height="15" uuid="e7aac3af-4436-4488-9b00-e93ed875119f"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font size="8" isBold="true" pdfEncoding="Cp1254"/>
                </textElement>
                <text><![CDATA[  PARA BİRİMİ]]></text>
            </staticText>
            <staticText>
                <reportElement x="5" y="79" width="500" height="15" uuid="55328d4d-8ce4-44aa-9217-405be02338b6"/>
                <box>
                    <pen lineWidth="0.0"/>
                    <topPen lineWidth="0.0"/>
                    <leftPen lineWidth="0.0"/>
                    <bottomPen lineWidth="0.0"/>
                    <rightPen lineWidth="0.0"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font size="8" isBold="true" pdfEncoding="Cp1254"/>
                </textElement>
                <text><![CDATA[* test]]></text>
            </staticText>
            <image>
                <reportElement x="5" y="23" width="101" height="35" uuid="057a515d-61a7-4f54-9c5e-234acaede0e5"/>
                <imageExpression><![CDATA[$P{ANTET}]]></imageExpression>
            </image>
        </band>
        <band height="50"/>
    </detail>
</jasperReport>