您的位置:首页 > 其它

经典收藏分享<二>

2008-12-03 17:02 204 查看
该文是解决highchart导出中文乱码的笔记。
步骤:1、下载jar包









我下了5个,网上说可以下载4个2.修改web.xml3.新建servlet4.将highchats 的exporting属性的url修改为 自己建立的servlet具体如下:2.web.xml中增加如下代码[align=left]<!--begin exporter highcharts-->[/align][align=left]<servlet>[/align][align=left]<servlet-name>HighChartsServlet</servlet-name>[/align][align=left]<servlet-class>com.sinosoft.lis.highcharts.HighChartsServlet</servlet-class>[/align][align=left]<load-on-startup>10</load-on-startup>[/align][align=left]</servlet>[/align][align=left]<servlet-mapping>[/align][align=left]<servlet-name>HighChartsServlet</servlet-name>[/align][align=left]<url-pattern>/getHighchartServlet</url-pattern>[/align][align=left]</servlet-mapping>[/align][align=left]<!--over exporter highcharts-->[/align][align=left]3.sevlet代码如下[/align][align=left]packagecom.sinosoft.lis.highcharts;[/align][align=left]
[/align][align=left]importjava.io.IOException;[/align][align=left]importjava.io.StringReader;[/align][align=left]
[/align][align=left]importjavax.servlet.ServletException;[/align][align=left]importjavax.servlet.ServletOutputStream;[/align][align=left]importjavax.servlet.http.HttpServlet;[/align][align=left]importjavax.servlet.http.HttpServletRequest;[/align][align=left]importjavax.servlet.http.HttpServletResponse;[/align][align=left]
[/align][align=left]importorg.apache.batik.transcoder.Transcoder;[/align][align=left]importorg.apache.batik.transcoder.TranscoderException;[/align][align=left]importorg.apache.batik.transcoder.TranscoderInput;[/align][align=left]importorg.apache.batik.transcoder.TranscoderOutput;[/align][align=left]importorg.apache.batik.transcoder.image.JPEGTranscoder;[/align][align=left]importorg.apache.batik.transcoder.image.PNGTranscoder;[/align][align=left]importorg.apache.fop.svg.PDFTranscoder;[/align][align=left]
[/align][align=left]/**[/align][align=left] * Servlet implementation class for the batik Transcoder[/align][align=left][/align][align=left] *@authortangyujing[/align][align=left] * 2013-09-06上午03:54:39[/align][align=left] */[/align][align=left]publicclassHighChartsServletextendsHttpServlet {[/align][align=left][/align][align=left]privatestaticfinallongserialVersionUID= 3920224595120519682L;[/align][align=left][/align][align=left]publicHighChartsServlet() {[/align][align=left]super();[/align][align=left] } [/align][align=left]
[/align][align=left]protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {[/align][align=left] doPost(request,response);[/align][align=left] } [/align][align=left][/align][align=left]protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException{[/align][align=left] request.setCharacterEncoding("utf-8");//注意编码[/align][align=left] String type = request.getParameter("type");[/align][align=left] String svg = request.getParameter("svg");[/align][align=left] ServletOutputStream out = response.getOutputStream();[/align][align=left]if(null!= type &&null!= svg){[/align][align=left]// This line is necessary due to a bug in the highcharts SVG generator for IE[/align][align=left]// I'm guessing it wont be needed later.[/align][align=left] svg = svg.replaceAll(":rect","rect");[/align][align=left] String ext ="";[/align][align=left] Transcoder t =null;[/align][align=left][/align][align=left]if(type.equals("image/png")) {[/align][align=left] ext ="png";[/align][align=left] t =newPNGTranscoder();[/align][align=left][/align][align=left] }elseif(type.equals("image/jpeg")) {[/align][align=left] ext ="jpg";[/align][align=left] t =newJPEGTranscoder();[/align][align=left]
[/align][align=left] }elseif(type.equals("application/pdf")) {[/align][align=left] ext ="pdf";[/align][align=left] t =newPDFTranscoder();[/align][align=left]
[/align][align=left] }elseif(type.equals("image/svg+xml")) {[/align][align=left] ext ="svg"; [/align][align=left] }[/align][align=left][/align][align=left] response.addHeader("Content-Disposition","attachment; filename=chart."+ext);[/align][align=left] response.addHeader("Content-Type", type);[/align][align=left][/align][align=left]if(null!= t){[/align][align=left] TranscoderInput input =newTranscoderInput(newStringReader(svg));[/align][align=left] TranscoderOutput output =newTranscoderOutput(out);[/align][align=left]try{[/align][align=left] t.transcode(input,output);[/align][align=left] }catch(TranscoderException e){[/align][align=left] out.print("Problem transcoding stream. See the web logs for more details.");[/align][align=left] e.printStackTrace();[/align][align=left] }[/align][align=left][/align][align=left] }elseif(ext =="svg"){[/align][align=left] out.print(svg);[/align][align=left] }else{[/align][align=left] out.print("Invalid type: "+ type);[/align][align=left] }[/align][align=left] }else{[/align][align=left] response.addHeader("Content-Type","text/html");[/align][align=left] 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.");[/align][align=left] }[/align][align=left] out.flush();[/align][align=left] out.close(); [/align][align=left] }[/align][align=left]}[/align][align=left][/align][align=left]4. jsp中highchs的导出功能[/align][align=left]//增加导出功能[/align][align=left] exporting: {[/align][align=left] enabled:true,[/align][align=left]///url:getRootPath()+"/getHighchartServlet",[/align][align=left] url:'http://localhost:8080/xiangmuming/getHighchartServlet',[/align][align=left] filename:'chart',[/align][align=left] width:800,[/align][align=left] type:'image/png'[/align][align=left] },[/align][align=left]
[/align][align=left]
[/align][align=left]或者采用(这是设置时间方法,下载pdf)[/align][align=left]
[/align][align=left] chart.exportChart({[/align][align=left] url:'http://localhost:8080/hr821/getHighchartServlet',[/align][align=left] type:'application/pdf',[/align][align=left] filename:'fff'[/align][align=left] });//导出pdf[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: