4

iReportを使用してネイティブに混合方向を処理する方法はないことを読みましたが、ドキュメントを読むと、JRDefaultScriptletのbeforePageInit()を使用することで何らかの方法で実行できるのではないかと思います。私の場合、縦向きのフロントページ、データを入力するのと同じ数の横向きのページ、最後のフロントページがあります。

一方、誰もが知っています:

  • これが近い将来サポートされる機能である場合
  • 要求どおりに実行し、jasper準拠のxmlファイルを生成する代替手段がある場合

前もって感謝します。

4

2 に答える 2

3

そこで、iReportをいじって、そのためのオプションを確認することにしました。ある程度の努力と想像力を働かせれば、やめることはある程度可能であることがわかります。これは、最初のページがタイトルセクションにあり、最後のページが要約セクションにあることを前提としています。

  1. 横向きモードでレポートを作成します。

  2. iReportの[レポートのプロパティ]で、trueに設定Title on New PageSummary on New Pageます。

  3. すべての余白が20に設定された標準の8.5"X11"レターサイズのページを使用していると仮定して、タイトルセクションと概要セクションの高さを572に設定します。

  4. 静的テキストフィールドを適切なセクションに追加します。

  5. ここで、静的テキストフィールドごとに、Rotateプロパティを設定する必要がありますLeft(実際にはそうなる可能性がありますがRight、要点は、すべて同じである必要があるということです。

  6. もちろん、必要な他のすべてのフィールドを、ページヘッダー、データなどの適切なバンドに追加します。

  7. レポートをエクスポートします。

:タイトルまたは概要セクションに移動する必要のある画像がある場合は、iReportの外部で適切に回転して保存する必要があります。次に、回転した画像をレポートの画像として設定します。残念ながら、画像タグには回転プロパティがないようです。これにより、作業が楽になります。

また、手順2にリストされているプロパティを設定しないと、タイトルバンドとサマリーバンドの高さを適切な幅に設定できません。異なるサイズの用紙や余白を使用している場合、最大サイズ(必要なサイズ)を簡単に把握するには、バンドの高さを非常に大きな数値に設定します。次にポップアップが表示され、大きすぎることと、実際の最大サイズが示されます。

于 2012-06-13T04:03:59.590 に答える
2

横向きと縦向きの混合サブレポートはサポートされていません。将来的には、JasperBookなどのオブジェクトが追加され、さまざまな向きのさまざまなサブレポートを問題なく追加できますが、今のところ、さまざまなレポートを実行してそれをシミュレートしています。それらを表示する直前にそれらに参加します。

IE

//レポートを個別に作成します

        InputStream report1 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportPortrait.jasper");
        InputStream report2 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportLandscape.jasper");
        InputStream report3 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportPortrait.jasper");

        JasperPrint jasperPrint = JasperFillManager.fillReport(report, map, conn);
        JasperPrint jasperPrint2 = JasperFillManager.fillReport(report2, map, conn);
        JasperPrint jasperPrint3 = JasperFillManager.fillReport(report3, map, conn);

        JRPdfExporter exp = new JRPdfExporter();

//JasperPrintオブジェクトをArrayListに追加します

        List list = new ArrayList(); 

        list.add(jasperPrint);
        list.add( jasperPrint2 );
        list.add(jasperPrint3);

//そして、レポートのリストに参加するようにエクスポーターに言います。

        exp.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list); 
        exp.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
        exp.exportReport();

私は自分のレポートでそれを行っており、それは機能します。幸運を!

于 2012-06-13T07:21:51.513 に答える