1

私は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> 
4

3 に答える 3

2

レポートの詳細バンドは、データソースのすべての行で繰り返されます。ただし、レポートに空のデータ ソースを入力すると、バンドが表示されないのはこのためです。titleテキストフィールドをバンド内で動かしてみてください。

于 2013-07-23T08:31:02.450 に答える
2

私が覚えている限り、Jasper はレポート データ ("DataSource") が利用可能な場合にのみ詳細セクションを出力します。

たとえば、タイトル セクションを使用してみてください。

さらに、ジャスパーには「データなし動作」があります。私が使用していた古いバージョンでは、引数として使用できる 4 つの定義済みの値を持つメソッド「setWhenNoDataType」が提供されていました。

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
于 2013-07-23T08:33:22.380 に答える