Jasper创建了空PDF

时间:2013-07-23 08:22:56

标签: java jasper-reports

我开始使用jasper库。如果我尝试编译我的项目,jasper会生成一个空的PDF。通常,此主函数应生成带有文本“hello”的pdf文件。任何人都可以帮助我吗?

Main.java

public class Main {

public static void main(String[] args) throws Throwable {

    JasperReport jasperReport;
    JasperPrint jasperPrint;
    Map<String, Object> parameter = new HashMap<String, Object>();

    parameter.put("aParameter", "hello");

    try {
        jasperReport = JasperCompileManager
                .compileReport("C:/Users/Sam/Desktop/helloworld.jrxml");

        jasperPrint = JasperFillManager.fillReport(jasperReport, parameter);
        JasperExportManager.exportReportToPdfFile(jasperPrint,
                "C:/Users/Sam/Desktop/helloworld.pdf");

    } catch (JRException e) {
        e.printStackTrace();
    }
}

helloworld.jrxml

<?xml version="1.0" encoding="UTF-8"  ?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="Example1">

 <parameter name="aParameter" class="java.lang.String"/>

 <detail>
  <band height="150">
   <textField >
    <reportElement x="100" y="60" width="100" height="50" />      
    <textElement><font size="36"/></textElement>
    <textFieldExpression class="java.lang.String"><![CDATA[$P{aParameter}]]></textFieldExpression>
   </textField>
  </band>
 </detail>

</jasperReport> 

3 个答案:

答案 0 :(得分:2)

将对数据源中的每一行重复报告的详细信息带。但是,如果您使用空数据源填充报告,则这就是乐队未显示的原因。尝试移动title频段中的文本字段以查看它。

答案 1 :(得分:1)

据我记忆,只有在有报告数据(“数据源”)可用的情况下,Jasper才会打印细节部分。

尝试使用例如标题部分。

此外,Jasper还有“无数据行为”。我使用的过时版本提供了方法“setWhenNoDataType”,其中包含4个可用作参数的预定义值:

JasperReport.WHEN_NO_DATA_TYPE_ALL_SECTIONS_NO_DETAIL
JasperReport.WHEN_NO_DATA_TYPE_NO_PAGES
JasperReport.WHEN_NO_DATA_TYPE_BLANK_PAGE
JasperReport.WHEN_NO_DATA_TYPE_NO_DATA_SECTION

答案 2 :(得分:0)

也许您无法在标题区打印值或指定空数据源。