java highchars导出图表

  1. Highchars导出图表,项目有用到highchars,别人写好了,但是导出功能却没有实现,又是百度又是谷歌,整理了各方各面的代码,终于自己测试成功了。  
  2.   
  3.   
  4. 所需要的包  
  5. xerces.jar  
  6. pdf-transcoder.jar  
  7. batik-all-1.6.jar  
  8.   
  9.   
  10. Web.xml文件  
  11. <servlet>  
  12.         <servlet-name>exportImage</servlet-name>  
  13.         <servlet-class> ExportImage</servlet-class>  
  14.     </servlet>  
  15.       
  16.     <servlet-mapping>  
  17.         <servlet-name>exportImage</servlet-name>  
  18.         <url-pattern>/exportImage</url-pattern>  
  19.     </servlet-mapping>  
  20.   
  21.   
  22. Java代码  
  23.   
  24. import java.io.IOException;  
  25. import java.io.OutputStreamWriter;  
  26. import java.io.StringReader;  
  27.   
  28. import javax.servlet.ServletException;  
  29. import javax.servlet.ServletOutputStream;  
  30. import javax.servlet.http.HttpServlet;  
  31. import javax.servlet.http.HttpServletRequest;  
  32. import javax.servlet.http.HttpServletResponse;  
  33.   
  34. import org.apache.batik.transcoder.Transcoder;  
  35. import org.apache.batik.transcoder.TranscoderException;  
  36. import org.apache.batik.transcoder.TranscoderInput;  
  37. import org.apache.batik.transcoder.TranscoderOutput;  
  38. import org.apache.batik.transcoder.image.JPEGTranscoder;  
  39. import org.apache.batik.transcoder.image.PNGTranscoder;  
  40. import org.apache.fop.svg.PDFTranscoder;  
  41.   
  42. public class ExportImage extends HttpServlet {  
  43.   
  44.     /** 
  45.      *  
  46.      */  
  47.     private static final long serialVersionUID = 1L;  
  48.   
  49.     public ExportImage() {  
  50.         super();  
  51.     }  
  52.   
  53.     public void destroy() {  
  54.         super.destroy();  
  55.     }  
  56.   
  57.     public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {  
  58.         doPost(request, response);  
  59.     }  
  60.   
  61.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  62.         request.setCharacterEncoding("utf-8");// 设置编码,解决乱码问题  
  63.         String type = request.getParameter("type");  
  64.         String svg = request.getParameter("svg");  
  65.         String filename = request.getParameter("filename");  
  66.         ServletOutputStream out = response.getOutputStream();  
  67.   
  68.         if (null != type && null != svg) {  
  69.             svg = svg.replaceAll(":rect""rect");  
  70.             String ext = "";  
  71.             Transcoder t = null;  
  72.             if (type.equals("image/png")) {  
  73.                 ext = "png";  
  74.                 t = new PNGTranscoder();  
  75.             } else if (type.equals("image/jpeg")) {  
  76.                 ext = "jpg";  
  77.                 t = new JPEGTranscoder();  
  78.             } else if (type.equals("application/pdf")) {  
  79.                 ext = "pdf";  
  80.                 t = new PDFTranscoder();  
  81.             } else if (type.equals("image/svg+xml")) {  
  82.                 ext = "svg";  
  83.             }  
  84.             response.addHeader("Content-Disposition""attachment; filename="+ filename + "." + ext);  
  85.             response.addHeader("Content-Type", type);  
  86.             if (null != t) {  
  87.                 TranscoderInput input = new TranscoderInput(new StringReader(svg));  
  88.                 TranscoderOutput output = new TranscoderOutput(out);  
  89.                 try {  
  90.                     t.transcode(input, output);  
  91.                 } catch (TranscoderException e) {  
  92.                     e.printStackTrace();  
  93.                 }  
  94.             } else if (ext.equals("svg")) {  
  95.                 OutputStreamWriter writer = new OutputStreamWriter(out, "UTF-8");  
  96.                 writer.append(svg);  
  97.                 writer.close();  
  98.             } else {  
  99.                 out.print("Invalid type: " + type);  
  100.             }  
  101.         } else {  
  102.             response.addHeader("Content-Type""text/html");  
  103.         }  
  104.         out.flush();  
  105.         out.close();  
  106.   
  107.     }  
  108.   
  109.     public void init() throws ServletException {  
  110.   
  111.     }  
  112. }  
  113.   
  114. Jsp代码  
  115. <script type="text/javascript" src="highstock.js"></script>  
  116. <script type="text/javascript" src="exporting.js"></script>  
  117. //hichars需要的js文件  
  118. <script type="text/javascript">  
  119.         $(function () {  
  120.             var chart;  
  121.             $(document).ready(function() {  
  122.                 chart = new Highcharts.Chart({  
  123.                     chart: {  
  124.                         renderTo: 'container',  
  125.                         type: 'line'  
  126.                     },  
  127.                     title: {  
  128.                         text: '上半年统计温度平均值'  
  129.                     },  
  130.                     xAxis: {  
  131.                         categories: ['Jan''Feb','Mar','Apr','May','Jun']  
  132.                     },  
  133.                     yAxis: {  
  134.                         title: {  
  135.                             text: 'Temperature(°C)'  
  136.                         }  
  137.                     },  
  138.                     tooltip: {  
  139.                         formatter: function() {  
  140.                             return this.point.name + "<br>" + this.y +'°C';  
  141.                         }  
  142.                     },  
  143.                     exporting:{  
  144.                         // 是否允许导出  
  145.                         enabled:true,  
  146.                         filename:'Temperature',  
  147.                         enableImages : true,  
  148.                         url : '/exportImage'  
  149.                     },  
  150.                     plotOptions: {  
  151.                         line: {  
  152.                             cursor: 'pointer',  
  153.                             dataLabels: {  
  154.                                 enabled: true  
  155.                             },  
  156.                             enableMouseTracking: true  
  157.                         }  
  158.                     },  
  159.                     series: [{  
  160.                         name: '一号车间',  
  161.                         data: [3.43.43.33.53.23.5]  
  162. },{  
  163.                         name: '二号车间',  
  164.                         data: [3.23.83.73.33.03.0]  
  165. },{  
  166.                         name: '三号车间',  
  167.                         data: [3.93.63.53.43.53.0]  
  168. },{  
  169.                         name: '四号车间',  
  170.                         data: [7.06.99.56.58.27.5]  
  171. },{  
  172.                         name: '五号车间',  
  173.                         data: [9.07.85.67.97.88.5]  
  174. }]  
  175.                 });  
  176.             });  
  177.               
  178.         });  
  179. </script>  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值