仅在Jasper Reports页面标题的第一页显示徽标图像

问题描述 投票:0回答:1

我有一个独特的案例,我在Jasper的PageHeader带上有一个徽标,我希望因为它在Page头上,所以应该在每页上打印它,但是只在第一页上打印。如果我从ireport Designer运行,则同一Jrxml会在所有页面上生成徽标,但是在我的Java应用程序中,它仅在第一页上生成徽标。我在做错什么吗?

我的Java方法:

public void formatreport(String foracid, String reportDir, String fromdate, String todate, String currdate, int pid, String suffix) {
        Connection conn = null;
        try {
            conn = db.prepareConn();
            Map parameters = new HashMap();
            ClassLoader classLoader = getClass().getClassLoader();
            InputStream logourl = classLoader.getResourceAsStream("/com/sim/bulk/jrxml/logo.jpg");
            parameters.put("account", foracid);
            parameters.put("from_date", fromdate);
            parameters.put("to_date", todate);
            parameters.put("period_id", pid);
            parameters.put("suffix", suffix);
            parameters.put("logo", logourl);
            log.debug("Bulk statement Parameters: account:" + foracid + "\nfrom_date:" + fromdate + "\nto_date:" + todate + "\nperiod_id:" + pid);
            InputStream url = classLoader.getResourceAsStream("com/sim/bulk/jrxml/Bulkstatement.jrxml");
            JasperReport jasperReport = JasperCompileManager.compileReport(url);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
            reportDestination = reportDir + "/Statement_" + foracid + "_" + currdate + ".pdf";
            JasperExportManager.exportReportToPdfFile(jasperPrint, reportDestination);
        } catch (JRException asd) {

            log.fatal(asd.getMessage());

        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException asd) {

                System.out.println(asd.getMessage());

            }
        }
    }

以及jrxml的摘录:

<pageHeader>
        <band height="162" splitType="Stretch">     
            <image onErrorType="Blank" evaluationTime="Now">
                <reportElement uuid="a49076f0-b945-4742-bb15-737b2a927da2" x="12" y="12" width="74" height="50"/>
                <imageExpression><![CDATA[$P{logo}]]></imageExpression>
            </image>
        </band>
    </pageHeader>
java jasper-reports
1个回答
4
投票

为图像设置isUsingCache =“ true”。否则,图像将尝试多次尝试从输入流中读取数据,这是行不通的。

或者,您可以直接使用资源路径(“ /com/sim/bulk/jrxml/logo.jpg”)作为图像表达式,在大多数情况下,JasperReports可以从类加载器中加载它。

© www.soinside.com 2019 - 2024. All rights reserved.