Highcharts導(dǎo)出代碼Java版

          添加包:

          avalon-framework-api.jar
          avalon-framework-impl.jar
          batik-svg-dom.jar
          batik-bridge.jar
          batik-awt-util.jar
          batik-gvt.jar
          batik-transcoder.jar
          batik-extension.jar
          batik-ext.jar
          commons-logging.jar
          commons-io.jar
          fop-0.95-1.jar
          js.jar
          pdf-transcoder.jar
          xalan.jar
          xerces.jar
          xml-apis-ext.jar
          xml-apis.jar
          xmlgraphics-commons.jar

          servlet-api.jar



          轉(zhuǎn)自:http://hi.baidu.com/god0156/blog/item/812747e82b5da0c52f2e2198.html

           

          Highcharts是一個用純JavaScript編寫的圖表庫,提供了一個交互式的圖表添加到您的網(wǎng)站或Web應(yīng)用程序的簡單方法。Highcharts目前支持線,樣條,面積,areaspline,柱形圖,條形圖,餅圖和散點(diǎn)圖類型。

          同時Highcharts提供將圖表導(dǎo)出為圖片或者PDF格式文件,只需要在頁面中載入exporting.js文件。

          由于生成的圖表是SVG格式,所以導(dǎo)出時需要將數(shù)據(jù)發(fā)送到服務(wù)器端來進(jìn)行轉(zhuǎn)換。在exporting.js中默認(rèn)導(dǎo)出地址是http://export.highcharts.com/,另外在demo中也提供了php版本。

          本文是介紹如何在java web application中來實(shí)現(xiàn)導(dǎo)出功能。

          首選需要在lib中加入batik jar包,如果是使用maven來管理項(xiàng)目,則在庫中只能找到1.6的版本,同時需要另外下載一個包(xml-apis-ext.jar)。

          public class ExportHighFreqChartServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
              public ExportHighFreqChartServlet() {
           super();
              }
              protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           doPost(request, response);
              }
              protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServerException, IOException {
           String type = request.getParameter("type");
           String svg = request.getParameter("svg");
           String filename = request.getParameter("filename");
           filename = filename==null?"chart":filename;
           ServletOutputStream out = response.getOutputStream();
           if (null != type && null != svg) {
               svg = svg.replaceAll(":rect", "rect");
               String ext = "";
               Transcoder t = null;
               if (type.equals("image/png")) {
            ext = "png";
            t = new PNGTranscoder();
               } else if (type.equals("image/jpeg")) {
            ext = "jpg";
            t = new JPEGTranscoder();
               } else if (type.equals("application/pdf")) {
                          ext = "pdf";
                          t = new PDFTranscoder();
                     }
               response.addHeader("Content-Disposition", "attachment; filename="+ filename + "."+ext);
               response.addHeader("Content-Type", type);
               if (null != t) {
            TranscoderInput input = new TranscoderInput(new StringReader(svg));
            TranscoderOutput output = new TranscoderOutput(out);
            try {
                t.transcode(input, output);
            } catch (TranscoderException e) {
                out.print("Problem transcoding stream. See the web logs for more details.");
                e.printStackTrace();
            }
               } else if (ext.equals("svg")) {
            out.print(svg);
               }  else {
            out.print("Invalid type: " + type);
               }
           } else {
               response.addHeader("Content-Type", "text/html");
               out.println("Usage:\n\tParameter [svg]: The DOM Element to be converted.
                      \n\tParameter [type]: The destination MIME type for the elment to be transcoded.");
           }
           out.flush();
           out.close();
              }
          }

          程序比較簡單,接收頁面?zhèn)鬟f的參數(shù)type、svg、filename,根據(jù)導(dǎo)出格式不同new不同的transcoder。

          batik 1.6版本中好像沒有提供對pdf格式導(dǎo)出的支持,所有如果程序報錯,就把導(dǎo)出為pdf的功能去掉。

          filename和export url都有默認(rèn)值,可以在生成chart的配置中指定filename和我們自己的export url。在new Highcharts.Chart({})中加入下面代碼

          exporting:{
              filename:'class-booking-chart',
              url:'http://export.highcharts.com/'
          }

          其他基本就可以直接將demo的數(shù)據(jù)修改為自己需要的。

           

           

          本文來自http://www.hencuo.com/archives/109

          //可以設(shè)置下編碼,解決中文亂碼問題
          response.setContentType(“text/html; charset=” + encoding);
          //并用OutputStreamWriter包裝ServletOutputStream轉(zhuǎn)換iso-8859-1為UTF-8可輸出中文內(nèi)容
          OutputStreamWriter writer = new OutputStreamWriter(out, “UTF-8″);

          else if (ext.equals(“svg”)) {
          // image/svg+xml
          writer.append(svg);
          writer.flush();
          }

          posted on 2011-07-18 18:39 hijackwust 閱讀(6129) 評論(4)  編輯  收藏

          評論

          # re: Highcharts導(dǎo)出代碼Java版 2012-08-03 16:32 Fandy

          我想問下你們的type和svg參數(shù)是怎么傳進(jìn)去的,我的type和svg為空......  回復(fù)  更多評論   

          # re: Highcharts導(dǎo)出代碼Java版 2013-03-27 19:48 煙煙煙

          @Fandy
          我也遇到這樣的問題,exporting.js里面export方法,修改一下參數(shù)類型為json,把e.post改成$.post。  回復(fù)  更多評論   

          # re: Highcharts導(dǎo)出代碼Java版 2013-09-05 17:49 paye

          @煙煙煙
          有完整的js嗎?  回復(fù)  更多評論   

          # re: Highcharts導(dǎo)出代碼Java版 2014-05-17 23:18 zuidaima

          highcharts代碼下載:http://www.zuidaima.com/share/search.htm?key=highcharts  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2014年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆檔案(57)

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 玉溪市| 清水县| 东城区| 大丰市| 宣化县| 湘乡市| 龙井市| 延川县| 秦皇岛市| 阿合奇县| 东阿县| 渝中区| 安宁市| 金川县| 韩城市| 湾仔区| 内丘县| 民勤县| 吴堡县| 昭平县| 兴文县| 宿松县| 观塘区| 渝中区| 黔江区| 莆田市| 平遥县| 武清区| 光山县| 中西区| 乐陵市| 舟曲县| 阜宁县| 金堂县| 板桥市| 阜平县| 于都县| 仁化县| 毕节市| 景谷| 阿勒泰市|