隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(lèi)(467)

          文章檔案(423)

          相冊(cè)

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827240
          • 排名 - 49

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          iReport與JasperReport中文支持全面解決
          在使用iReport與JasperReport作為報(bào)表產(chǎn)生工具時(shí), 中文支持是經(jīng)常遇到的問(wèn)題,筆者最近做的一個(gè)J2EE Web項(xiàng)目采用這套工具開(kāi)發(fā)報(bào)表,也遇到了類(lèi)似問(wèn)題,本文總結(jié)了在使用iReport與JasperReport開(kāi)發(fā)報(bào)表時(shí)中文支持的有關(guān)內(nèi)容,希望能對(duì)讀者有所幫助.
          1 運(yùn)行環(huán)境
              1.1 JasperReport 1.2.8
              JasperReports是iReport的核心內(nèi)容。它是一個(gè)強(qiáng)有力的開(kāi)源報(bào)表產(chǎn)生工具,可以將內(nèi)容輸出到屏幕上、打印機(jī)或生成PDF, HTML, XLS, CSV和XML等文件。它完全用Java編寫(xiě),并可在各種Java應(yīng)用(包括J2EE或WEB應(yīng)用)中用來(lái)產(chǎn)生動(dòng)態(tài)報(bào)表內(nèi)容。JasperReports組織根據(jù)在一個(gè)XML文件中定義的報(bào)表設(shè)計(jì)通過(guò)JDBC訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù).填充報(bào)表數(shù)據(jù)之前必須先將報(bào)表設(shè)計(jì)被編譯成一個(gè)jasper文件。
          下載地址: http://jasperreports.sourceforge.net/
              1.2 iReport 1.2 8
              iReport是一個(gè)制作Jasperreport XML文件的優(yōu)秀可視化開(kāi)發(fā)工具,通過(guò)它可以方便的設(shè)計(jì)報(bào)表模板。目前最高版本為iReport 1.3.0
          下載地址: http://ireport.sourceforge.net
             1.3 iText 1.3.1
             iText是一個(gè)開(kāi)放源碼的Java類(lèi)庫(kù),是用來(lái)生成PDF文件的。
          下載地址: http://itext.sourceforge.net
             1.4 iTextAsian.jar
             如果要在生成的pdf文件顯示中文等亞洲字符,還必須下載itext的亞洲字符包。
          下載地址: http://itextdocs.lowagie.com/downloads/iTextAsian.jar
          以上四個(gè)包必須加到應(yīng)用程序的構(gòu)建路徑中或加到CLASSPATH,若是Web應(yīng)用放入相應(yīng)的WEB-INF\lib\中。
          2 設(shè)置中文支持
              為了在報(bào)表中能夠顯示中文,加入以上四個(gè)包還不夠(因?yàn)橐陨纤膫€(gè)包僅對(duì)報(bào)表生成及中文顯示提供了支持),必須設(shè)置報(bào)表上各顯示對(duì)象的相關(guān)屬性,各屬性設(shè)置說(shuō)明如下:
              Font        name:    宋體 (中文字體)
              PDF font name:   STSong-Light
              PDF  Encoding:  UniGB-UCS2-H(Chinese Siplified)
              PDF   Embeded: √
              如下圖所示(顯示對(duì)象的屬性設(shè)置):

              注意:此三項(xiàng)的設(shè)置必須確保iTextAsian.jar亞洲語(yǔ)言包已經(jīng)包含在項(xiàng)目中,否則出現(xiàn)編譯錯(cuò)誤.
              若讀者覺(jué)得對(duì)每一個(gè)對(duì)象設(shè)置比較麻煩,可通過(guò)iReport的”Format”?”Fonts”菜單進(jìn)行統(tǒng)一設(shè)置,并設(shè)成報(bào)表的默認(rèn)字體。如下圖所示:

          3可能出現(xiàn)的問(wèn)題
             經(jīng)過(guò)以上的設(shè)置,報(bào)表中文的顯示應(yīng)該沒(méi)什么問(wèn)題了,筆者在報(bào)表的開(kāi)發(fā)過(guò)程中遇到幾個(gè)問(wèn)題,現(xiàn)總結(jié)如下:
            3.1 問(wèn)題描述
             在WinXp中運(yùn)行iReport1.2.8,設(shè)計(jì)報(bào)表時(shí)將數(shù)據(jù)字段的字體設(shè)置成中文字體,調(diào)好格式后編譯并運(yùn)行,并使用JRViewer進(jìn)行預(yù)覽一切正常(中文顯示正常),但使用PDF、Excel預(yù)覽出現(xiàn)如下錯(cuò)誤:
             Could not load the following font :
             pdfFontName   : STSong-Light
             pdfEncoding   : UniGB-UCS2-H
             isPdfEmbedded : true
             產(chǎn)生原因:成成PDF的亞洲語(yǔ)言包沒(méi)有包含到項(xiàng)目中
             解決辦法:將亞洲語(yǔ)言包iTextAsian.jar包含到項(xiàng)中,可能過(guò)iReport的”Options”?”Classpath”將iTextAsian.jar添加Classpath中或者直接將iTextAsian.jar復(fù)制到iReport安裝目錄下的lib中.若是Web項(xiàng)目則應(yīng)該將iTextAsian.jar復(fù)制到此項(xiàng)目的WEB-INF\lib\中.
             3.2 問(wèn)題描述
              在WinXp中運(yùn)行iReport1.2.8,設(shè)計(jì)報(bào)表時(shí)將數(shù)據(jù)字段的字體設(shè)置成中文字體,調(diào)好格式后編譯并運(yùn)行,并使用JRViewer進(jìn)行預(yù)覽一切正常(中文顯示正常),使用PDF、Excel預(yù)覽時(shí)無(wú)任何錯(cuò)誤,但中文無(wú)法顯示(只顯示空白).
              產(chǎn)生原因:報(bào)表顯示對(duì)象的PDF字體屬性設(shè)置不正確
              解決辦法: 報(bào)表對(duì)象有關(guān)字體屬性的設(shè)置如下:
              Font        name:         宋體 (中文字體)
              PDF font name:  STSong-Light
              PDF Encoding:   UniGB-UCS2-H(Chinese Siplified)
              PDF Embeded:  √
             即如下圖所法

             3.3問(wèn)題描述
              生成PDF、Excel文件時(shí),中文顯示一切正常,但生成Html文件時(shí)顯示亂碼
           產(chǎn)生原因:主要是網(wǎng)頁(yè)編碼問(wèn)題
              解決方法
           在JSP頁(yè)中生成Html時(shí),設(shè)置 <%@ page contentType="text/html;charset=GB2312" %> 
           在Servlet中生成Html時(shí),response.setContentType("text/html;charset=GB2312");
           若用戶對(duì)項(xiàng)目進(jìn)行了統(tǒng)一編碼設(shè)定及過(guò)濾,則需要另作考慮,但主要還是集中在編碼問(wèn)題上.例如:筆者最近做的項(xiàng)目是其于Struts的,對(duì)編碼進(jìn)行了統(tǒng)一和過(guò)濾處理,生成Html頁(yè)面時(shí)無(wú)需指編碼就可正確生成Html頁(yè)面,并不會(huì)出亂碼,若設(shè)置成charset=GB2312反而出現(xiàn)了亂碼.總之,對(duì)編碼的統(tǒng)一與處理還是比較嘛煩的事.
              另外, 我們通過(guò)查看iReport生成的jrxml(<?xml version="1.0" encoding="UTF-8" ?>)文件可以發(fā)現(xiàn), iReport保存的漢字都是UTF-8編碼。了解它的編碼可以有助于我們統(tǒng)一編碼方式。

          轉(zhuǎn)自:http://verytiny.iteye.com/blog/145764

          posted on 2012-12-07 09:14 Ke 閱讀(5822) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): iReport
          主站蜘蛛池模板: 依兰县| 张家界市| 郴州市| 云霄县| 海阳市| 包头市| 舟曲县| 吴桥县| 乌苏市| 论坛| 封开县| 梧州市| 祥云县| 玉屏| 元谋县| 巴塘县| 黎平县| 富顺县| 香格里拉县| 阜宁县| 盘锦市| 克什克腾旗| 闽侯县| 荃湾区| 乐山市| 都昌县| 灵丘县| 耒阳市| 政和县| 隆子县| 阜阳市| 崇左市| 上杭县| 永川市| 平顶山市| 洪雅县| 芷江| 塘沽区| 安丘市| 象州县| 天等县|