我开始使用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>
答案 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)
也许您无法在标题区打印值或指定空数据源。