【问题标题】:How to fill and export simple JasperReports report as PDF file [duplicate]如何将简单的 JasperReports 报告填充和导出为 PDF 文件 [重复]
【发布时间】:2020-04-26 13:54:21
【问题描述】:

我是 JasperReports 的新手。

我正在尝试使用唯一参数填充一个简单的 JasperReport,然后将其导出为 PDF 文件。但是PDF 文件导出为空

我使用 Jaspersoft Studio 来设计报告。我得到了以下“invoice.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="invoice" pageWidth="612" pageHeight="1008" columnWidth="572" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a9cee65a-1403-4afb-8df2-37033b911d04">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <parameter name="name" class="java.lang.String"/>
    <pageHeader>
        <band height="35" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="80" height="20" uuid="d762d314-715a-48d9-a3a0-5c147a6754a5"/>
                <textElement>
                    <font size="14"/>
                </textElement>
                <text><![CDATA[Name:]]></text>
            </staticText>
            <textField>
                <reportElement x="80" y="0" width="100" height="20" uuid="a396777c-6516-4b37-ad86-501b21c090f5"/>
                <textElement>
                    <font size="14"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{name}]]></textFieldExpression>
            </textField>
        </band>
    </pageHeader>
    <detail>
        <band height="125" splitType="Stretch"/>
    </detail>
</jasperReport>

(我在 Jasper Studio 预览选项卡中进行了测试,结果很好。)

报告已编译,我得到一个“invoice.jasper”文件。我将此文件放在我的 Java 项目的类路径中。

这是我尝试填写报告并将其导出的代码:

public static void main(String[] args) throws JRException {
    JasperReport reporte = (JasperReport) JRLoader.loadObject(new File("invoice.jasper"));

    Map<String, Object> parametros = new HashMap<String, Object>();
    parametros.put("name", "Adrián");

    JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros);

    JasperExportManager.exportReportToPdfFile(jasperPrint, "invoice.pdf");
}

我不明白为什么报告是空白的。

【问题讨论】:

  • I can't understand why the report is blank. - 你没有传递数据源

标签: java jasper-reports


【解决方案1】:

阿德里安,试试以下方法:

    ClassLoader classloader = Thread.currentThread().getContextClassLoader();
    InputStream inputStream = classloader.getResourceAsStream(fileName);
    JasperReport jasperReport = JasperCompileManager.compileReport(inputStream);
    Map<String, Object> parametros = new HashMap<String, Object>();
    parametros.put("name", "Adrián");
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametros);
    JasperExportManager.exportReportToPdfFile(jasperPrint, "invoice.pdf");

这个代码收到一个fileName,这个文件名应该是你的.jrxml文件。该代码将接收报表的源代码,并在运行时对其进行编译。

【讨论】:

  • .jrxml 文件在运行时不编译:线程“main”net.sf.jasperreports.engine.JRException 中的异常:java.net.MalformedURLException
  • 在Jaspersoft Studio中编译的jrxml文件!
  • 它可以在你的运行时编译......我从我在其他项目中制作的代码中获取它:) 检查你是如何形成你的路径
  • 我发现了问题。现在我用“JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros, new JREmptyDataSource());”填充报告。 (我在 fillReport() 方法中添加了最后一个参数。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多