<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

    由于生成的圖表是SVG格式,所以導(dǎo)出時(shí)需要將數(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的版本,同時(shí)需要另外下載一個(gè)包(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版本中好像沒有提供對(duì)pdf格式導(dǎo)出的支持,所有如果程序報(bào)錯(cuò),就把導(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 閱讀(6132) 評(píng)論(4)  編輯  收藏

    評(píng)論

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

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

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

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

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

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

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

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


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


    網(wǎng)站導(dǎo)航:
     
    <2011年7月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(6)

    隨筆檔案(57)

    友情鏈接

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 精品国产免费人成电影在线观看| 在线观看免费黄网站| 我的小后妈韩剧在线看免费高清版| 亚洲精品无码MV在线观看| 久久免费香蕉视频| 亚洲熟妇av一区二区三区| 国产免费一级高清淫曰本片| 中文字幕亚洲天堂| 免费网站看av片| 亚洲欧洲精品在线| 成人午夜18免费看| 看成年女人免费午夜视频| 大胆亚洲人体视频| 中文字幕乱码免费看电影| 亚洲第一精品在线视频| 18禁止看的免费污网站| 国产精品亚洲片在线va| 狠狠久久永久免费观看| 又大又硬又粗又黄的视频免费看| 国产亚洲成AV人片在线观黄桃| 国产高清对白在线观看免费91 | 无码av免费一区二区三区试看| 亚洲一区二区中文| 特级做A爰片毛片免费69| 欧美亚洲国产SUV| 中文字幕亚洲无线码a| 最近中文字幕mv免费高清视频8 | 国产AV无码专区亚洲AV麻豆丫| 亚洲精品成人久久久| 久久国产精品免费专区| 在线亚洲午夜片AV大片| 亚洲AⅤ视频一区二区三区| 国产一区二区免费| 亚洲欧好州第一的日产suv| 国产亚洲AV手机在线观看| h视频在线观看免费完整版| 国产精品亚洲а∨无码播放不卡| 国产日韩亚洲大尺度高清| 午夜精品在线免费观看| 免费萌白酱国产一区二区三区| 久久亚洲精品国产亚洲老地址|