jasperreport and ireport and action export PDF


STRUTS 2+jasperreportで必ずstruts 2パッケージstruts 2-jasperreports-plugin-2.0.11.2.jar jasperreports-2.0.2.jar iText-2.1.3.jar iTextAsian.jar後の2パッケージは解決出力PDFで中国語を表示できません
第一歩:まずIreportでjrxmlファイルを生成して入力した内容フォーマットは以下の通りです.
Title
(タイトル)
Page Header
(ヘッダーは、ページ番号などの説明情報を提供できます)
Column Header
(列ヘッダー、一般的に列名を入力)
Row(s)
(実際のデータ)
Column Footer
(列脚、一般的に列に記入される要約情報、例えば和、平均値など)
Page Footer
(フッター、例えばページ番号、またはそのページ上のデータの要約情報)
Report Footer
(レポート・フット、一般的にレポート全体の要約情報、またはいくつかの説明情報を入力します)
ireport javabeanのデータソースを設定します.
例えば、Listデータソースを入力してireport DATA-newでJavaBeans set data sourceを選択する
次のページNameにPeronのパッケージパスを入力します.たとえば、com.quickstart.model.Person保存
ActionでCLASSのパスを設定します.例えばd:myspacejpawebWEB-INFclasses
次にコンパイル選択buildの下でコンパイルしてjasperファイルを生成します
そしてこのファイルをWEB-INFtemplateディレクトリに保存します
ステップ2:ACTIONの設定
例えば次のコードPeron

public class Person {

    @Id
    @GeneratedValue
    private Long id;

    private String firstName;

    private String lastName;

    ......

ExportJasperAction

public class ExportJasperAction extends ActionSupport {

    private PersonService personService;
    private List<Person> persons;

    public ExportJasperAction(PersonService personService) {
        this.personService = personService;
    }

    public String exportPdf() {
        persons = personService.findAll();
        

        return SUCCESS;
    }

    public PersonService getPersonService() {
        return personService;
    }

    public void setPersonService(PersonService personService) {
        this.personService = personService;
    }

    public List<Person> getPersons() {
        return persons;
    }

    public void setPersons(List<Person> persons) {
        this.persons = persons;
    }
}

struts.xmlの構成
例:

<package name="person" extends="struts-default" namespace="/person">
        <result-types>
            <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>
        </result-types>

<action name="export" method="exportPdf" class="exportJasperAction">
            <result name="success" type="jasper">
                <param name="location">WEB-INF\template\listname.jasper</param>
                <param name="format">PDF</param>
                <param name="dataSource">persons</param>
            </result>

ステップ3:viewページ

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<form id="report" action="export.action">
    <input type="submit" value="    "/>
</form>
</body>
</html>

出力文字化けしの問題の解決策を以下に追加します.
iReportとJasperReportの中国語サポート
iReportとJasperReportをレポート作成ツールとして使用する場合、中国語のサポートはよくある問題である.筆者が最近行ったJ 2 EE Webプロジェクトはこのツールを採用してレポートを開発し、類似の問題にも遭遇した.本文はiReportとJasperReportを使用してレポートを開発する際の中国語のサポートに関する内容をまとめ、読者に役立つことを望んでいる.
1運転環境
1.1 JasperReport 1.2.8
JasperReportsはiReportのコアコンテンツです.画面、プリンタ、またはPDF、HTML、XLS、CSV、XMLなどのファイルを生成する強力なオープンソースレポート生成ツールです.Javaで完全に記述され、J 2 EEまたはWEBアプリケーションを含む様々なJavaアプリケーションで動的レポートコンテンツを生成するために使用できます.JasperReports組織は、XMLファイルで定義されたレポート設計に基づいて、JDBCを介してリレーショナル・データベースのデータにアクセスします.レポート・データを埋め込む前に、レポート設計をjasperファイルにコンパイルする必要があります.
ダウンロード先:http://jasperreports.sourceforge.net/
1.2 iReport 1.2 8
iReportはJasperreport XMLファイルを作成する優れた可視化開発ツールであり、レポートテンプレートの設計を容易にすることができます.現在の最高バージョンはiReport 1.3.0
ダウンロード先:http://ireport.sourceforge.net
1.3 iText 1.3.1
iTextはオープンソースのJavaクラスライブラリで、PDFファイルを生成するために使用されます.
ダウンロード先:http://itext.sourceforge.net
1.4 iTextAsian.jar
生成されたpdfファイルに中国語などのアジア文字を表示するには、itextのアジア文字パッケージをダウンロードする必要があります.
ダウンロード先:http://itextdocs.lowagie.com/downloads/iTextAsian.jar
以上の4つのパッケージは、Webアプリケーションが対応するWEB-INFlibに格納されている場合、アプリケーションの構築パスに追加するか、CLASSSPATHに追加する必要があります.
2中国語サポートの設定
レポートに中国語を表示するには、上記の4つのパッケージを追加するだけでは十分ではありません(上記の4つのパッケージはレポート生成および中国語表示のみをサポートしているため)、レポート上の各表示オブジェクトに関する属性を設定する必要があります.各属性設定の説明は以下の通りです.
Font name:宋体(中国語フォント)
PDF font name: STSong-Light
PDF Encoding: UniGB-UCS2-H(Chinese Siplified)
PDF Embeded: √
次の図(オブジェクトのプロパティ設定を表示):
注意:この3つの設定はiTextAsian.jarアジア言語パッケージがプロジェクトに含まれていることを確認する必要があります.そうしないと、コンパイルエラーが発生します.
読者が各オブジェクトの設定が面倒だと感じたら、iReportの「Format」「Fonts」メニューで統一設定し、レポートのデフォルトフォントに設定します.次の図に示します.
3発生する可能性のある問題
以上の設定を経て、レポートの中国語の表示に問題はないはずです.筆者はレポートの開発過程でいくつかの問題に遭遇しました.以下にまとめます.
3.1問題の説明
WinXpでiReport 1.2.8を実行し、レポートの設計時にデータフィールドのフォントを中国語フォントに設定し、フォーマットを調整してコンパイルして実行し、JRViewerを使用してプレビューを行うのはすべて正常(中国語表示正常)ですが、PDF、Excelプレビューを使用すると次のエラーが発生します.
Could not load the following font :
pdfFontName : STSong-Light
pdfEncoding : UniGB-UCS2-H
isPdfEmbedded : true
発生原因:PDFになったアジア言語パッケージがプロジェクトに含まれていない
解決策:アジア言語パッケージiTextAsian.jarを項目に含める、iReportの「Options」「Classpath」にiTextAsian.jarをClasspathに追加するか、iTextAsian.jarをiReportインストールディレクトリの下のlibに直接コピーするか、WebプロジェクトであればiTextAsian.jarをこのプロジェクトのWEB-INFlibにコピーすべきである.
3.2問題の説明
WinXpでiReport 1.2.8を実行し、レポートを設計する際にデータフィールドのフォントを中国語フォントに設定し、フォーマットを調整してコンパイルして実行し、JRViewerでプレビューを行うのはすべて正常(中国語表示は正常)で、PDF、Excelでプレビューを行う際にエラーはありませんが、中国語では表示できません(空白のみ表示).
原因:レポート表示オブジェクトのPDFフォント属性の設定が正しくありません
解決策:レポート・オブジェクトのフォント・プロパティの設定は次のとおりです.
Font name:宋体(中国語フォント)
PDF font name: STSong-Light
PDF Encoding: UniGB-UCS2-H(Chinese Siplified)
PDF Embeded: √
下図のように
3.3問題の説明
PDF、Excelファイルを生成する時、中国語はすべて正常に表示して、しかしHtmlファイルを生成する時文字化けを表示します
発生原因:主にウェブコードの問題
解決策
JSPページでHtmlを生成する場合、<%@page contentType="text/html;charset=GB 2312"%>を設定します.
サーブレットでHtmlを生成する場合、response.setContentType(「text/html;charset=GB 2312」)
ユーザがプロジェクトに対して統一符号化設定及びフィルタリングを行った場合、別途考慮する必要があるが、主に符号化問題に集中している.例えば、筆者が最近行ったプロジェクトはStrutsのものであり、符号化に対して統一とフィルタ処理を行い、Htmlページを生成する際に符号化を指さずにHtmlページを正しく生成することができ、文字化は発生せず、charset=GB 2312に設定するとかえって文字化が発生する.要するに、符号化の統一と処理にはまだ煩わしいことだ.
また、iReportによって生成されたjrxml(添付ファイルにソースコードを追加:libパッケージを含まない