海鷗航際

          JAVA站
          posts - 11, comments - 53, trackbacks - 1, articles - 102

          Jasper FAQ-1

          Posted on 2005-01-10 13:16 海天一鷗 閱讀(1761) 評論(6)  編輯  收藏 所屬分類: 報表專題
           

          jasper變量的表達式的問題

           

          jasper中的field字段的定義:
          XML Syntax
          <!ELEMENT field (fieldDescription?)>
          <!ATTLIST field
          name NMTOKEN #REQUIRED
          class (java.lang.Object | java.lang.Boolean | java.lang.Byte |
          java.util.Date | java.sql.Timestamp | java.lang.Double | java.lang.Float |
          java.lang.Integer | java.io.InputStream | java.lang.Long | java.lang.Short |
          java.math.BigDecimal | java.lang.String) "java.lang.String"
          >
          <!ELEMENT fieldDescription (#PCDATA)>

          注意他們的實例都是對象,
          對象不能用簡單的+的方式,
          比如你想對兩個類型為java.lang.Doublefield進行相加
          那么就應該用如下表達式
          ($F{field1}.doubleValue()+$F{field2}.doubleValue()) 
          而不是
          ($F{field1}+$F{field2}) 
          設定某個類型為java.lang.Double的初始值是
          應該用new java.lang.Double(3)
          而不是3
          其他類型的數據也一樣

           

          iReport 0.3.0 不能啟動的問題

           

          注意 iReport 0.3.0 需要JDK 1.4 的版本
          還有用Oracle9的注意了,由于Oracle9自帶的是JDK1.3版本的
          所以可能會導致iReport在啟動時用到Oracle中的JDK而導致無法啟動

           

          如何讓顯示的數據自動折行顯示

           

          可以選擇field,-> text filed ->有個框打勾
          strech with overflow 
          關于此功能的具體應用,
          大家可以參看JasperReportsamples -> stretch

           

          jasperreport報表文件輸出到pdf的中文問題

           

          1、   你確定一下你的classpath下是否有itextitextasia。

          2、   確定你的pdf font是否設置漢字字體如STsong_lightpdf encoding是否是漢字的encoding 

          這樣之后如果還有問題,就是你的數據傳送過來的亂碼問題。

           

          初學者實例:在WEB客戶端直接打印JasperReport報表

           

          當我不希望使用JasperReport生成pdfhtml等報表顯示文件到客戶端后再通過相應打印功能打印,而想直接在客戶端打印生成的報表時候,我們可以使用JasperPrintManager類里的printReport方法來實現打印。這里我給出我的一個測試實例:
          首先,我在服務器端的一個Servlet里調用報表格式文件、填充數據生成一個JasperPrint對象;然后將這個JasperPrint對象以對象流方式返回給客戶端:
          public class JRPrintServlet extends HttpServlet {
          public void service(
          HttpServletRequest request,
          HttpServletResponse response
          ) throws IOException, ServletException{

          String fileName = reports/TestRpt.xml";//
          我的測試報表格式文件
          JasperReport jrt = JasperCompileManager.compileReport(fileName);//
          編譯報表格式

          java.sql.Connection conn = DBBean.getConnection(); //
          獲取數據庫連接
          JasperPrint jpt = JasperFillManager.fillReport(jrt,hs,conn));//
          填充報表數據生成JasperPrint對象

          response.setContentType("application/octet-stream");
          ServletOutputStream ouputStream = response.getOutputStream();

          ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
          oos.writeObject(jpt);//
          JasperPrint對象寫入對象輸出流中
          oos.flush();
          oos.close();
          } catch (Exception e) {
          e.printStackTrace();
          }

          }


          }

          然后編寫一個客戶端Applet,通過對上面Servlet的請求獲得該JasperPrint對象,并調用JasperPrintManager方法進行打?。?/span>
          public class JRPrinterApplet extends Applet {
          private URL url = null;

          public void init(){
          String strUrl = getParameter("REPORT_URL");
          if(strUrl!=null){
          try{
          System.out.println(getCodeBase());
          url = new URL(getCodeBase(),strUrl);//
          從獲得html參數中獲得報表URL
          System.out.println(url);
          }catch(Exception e){
          e.printStackTrace();
          }
          }else
          JOptionPane.showMessageDialog(this, "Source URL not specified");


          }

          public void start(){
          if(url!=null){
          try{
          JOptionPane.showMessageDialog(this, url);
          Object obj = JRLoader.loadObject(url);//
          發送對象請求,獲得JasperPrint對象
          System.out.println(obj);
          JasperPrintManager.printReport((JasperPrint)obj, true);//
          調用方法打印所獲得的JasperPrint對象
          }catch(Exception e){
          e.printStackTrace();
          }
          }
          }

          }
          另外簡單寫一個測試html來調用以上applet
          <!--JRPrintTest.html-->
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=GB2312">
          <title>
          打印窗口</title>
          </head>
          <script language="javascript">
          <!--
          function openApp()
          {
          var url = "/JRPrintServlet";
          document.write('<APPLET ID="JrPrt" CODE = "JRPrinterApplet.class" CODEBASE = "/reports" ARCHIVE = "jasper-api.jar" WIDTH = "0" HEIGHT = "0">');
          document.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.2.2">');
          document.write('<PARAM NAME = "scriptable" VALUE="false">');
          document.write('<PARAM NAME = "REPORT_URL" VALUE ="'+url+'">');
          document.write('</APPLET>');
          }

          -->
          </script>
          <body bgcolor="#FFFFFF">
          <input type="button" value="
          測試打印" onclick="openApp();">

          </body>
          </html>

          這樣,在客戶端訪問JRPrintTest.html頁面,點擊"測試打印"按鈕,就能夠直接在客戶端打印機上打印出所要的報表。 

           

           

           

           

          Feedback

          # re: Jasper FAQ-1  回復  更多評論   

          2006-04-12 11:40 by random
          我現在就想用jasperprint實現客戶端打印,看了你這篇“初學者實例:在WEB客戶端直接打印JasperReport報表

          ”,但發現用這個方法不行,因為客戶端并沒有安裝jasperprint,運行時出錯,那這樣客戶端還必須手動安裝軟件,用APPLET實現也沒意義了,請問有什么好方法不用客戶端做復雜的操作嗎?

          # re: Jasper FAQ-1  回復  更多評論   

          2006-05-16 21:11 by kelo
          怎么不分頁

          # re: Jasper FAQ-1  回復  更多評論   

          2006-06-04 20:41 by zhuiyun
          請問jasper-api.jar是什么包啊?

          # re: Jasper FAQ-1  回復  更多評論   

          2006-06-07 14:22 by zhuiyun
          我對serlvet在xml中進行定義后,仍后找不到,問什么呢?
          <servlet>
          <servlet-name>JasperPrintServlet</servlet-name>
          <servlet-class>servlets.JasperPrintServlet</servlet-class>
          </servlet>
          <servlet-mapping>
          <servlet-name>JasperPrintServlet</servlet-name>
          <url-pattern>/servlets/JasperPrintServlet</url-pattern>
          </servlet-mapping>
          在地址欄訪問時,仍然為404錯誤,希望有人解答阿。

          # re: Jasper FAQ-1  回復  更多評論   

          2006-06-08 14:46 by zhuiyun
          請問這樣實現后能在客戶端之間訪問嗎?客戶端是否需要jasperreport,是否需要安裝jre,我實現后,在自己的機子上沒有問題,但是從別的機子上訪問時會出現錯誤提示,發生異常,確定后Ie自動關閉。
          能否指導一下,非常感謝!

          # re: Jasper FAQ-1  回復  更多評論   

          2006-06-08 14:46 by zhuiyun
          為什么都沒有人回答阿
          主站蜘蛛池模板: 巩留县| 高要市| 陆河县| 河东区| 宁津县| 紫云| 城步| 湟源县| 江口县| 滨州市| 新乐市| 永寿县| 鄱阳县| 江川县| 鱼台县| 无锡市| 田林县| 屏边| 建昌县| 博兴县| 营山县| 油尖旺区| 钟祥市| 自贡市| 罗甸县| 台北市| 通渭县| 拜城县| 水城县| 莱芜市| 廉江市| 濮阳县| 金山区| 洮南市| 疏勒县| 东方市| 泗水县| 清河县| 蓬安县| 顺义区| 长顺县|