该文是解决highchart导出中文乱码的笔记。
highchart导出图片中文乱码解决
原创
©著作权归作者所有:来自51CTO博客作者tangyujing的原创作品,请联系作者获取转载授权,否则将追究法律责任
步骤:
1、下载jar包
我下了5个,网上说可以下载4个
2.修改web.xml
3.新建servlet
4.将highchats 的exporting属性的url修改为 自己建立的servlet
具体如下:
2.web.xml中增加如下代码
<!--begin exporter highcharts-->
<servlet>
<servlet-name>HighChartsServlet</servlet-name>
<servlet-class>com.sinosoft.lis.highcharts.HighChartsServlet</servlet-class>
<load-on-startup>10</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HighChartsServlet</servlet-name>
<url-pattern>/getHighchartServlet</url-pattern>
</servlet-mapping>
<!--over exporter highcharts-->
3.sevlet代码如下
packagecom.sinosoft.lis.highcharts;
importjava.io.IOException;
importjava.io.StringReader;
importjavax.servlet.ServletException;
importjavax.servlet.ServletOutputStream;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.batik.transcoder.Transcoder;
importorg.apache.batik.transcoder.TranscoderException;
importorg.apache.batik.transcoder.TranscoderInput;
importorg.apache.batik.transcoder.TranscoderOutput;
importorg.apache.batik.transcoder.p_w_picpath.JPEGTranscoder;
importorg.apache.batik.transcoder.p_w_picpath.PNGTranscoder;
importorg.apache.fop.svg.PDFTranscoder;
/**
* Servlet implementation class for the batik Transcoder
*@authortangyujing
* 2013-09-06上午03:54:39
*/
publicclassHighChartsServletextendsHttpServlet {
privatestaticfinallongserialVersionUID= 3920224595120519682L;
publicHighChartsServlet() {
super();
}
protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
doPost(request,response);
}
protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException{
request.setCharacterEncoding("utf-8");//注意编码
String type = request.getParameter("type");
String svg = request.getParameter("svg");
ServletOutputStream out = response.getOutputStream();
if(null!= type &&null!= svg){
// This line is necessary due to a bug in the highcharts SVG generator for IE
// I'm guessing it wont be needed later.
svg = svg.replaceAll(":rect","rect");
String ext ="";
Transcoder t =null;
if(type.equals("p_w_picpath/png")) {
ext ="png";
t =newPNGTranscoder();
}elseif(type.equals("p_w_picpath/jpeg")) {
ext ="jpg";
t =newJPEGTranscoder();
}elseif(type.equals("application/pdf")) {
ext ="pdf";
t =newPDFTranscoder();
}elseif(type.equals("p_w_picpath/svg+xml")) {
ext ="svg";
}
response.addHeader("Content-Disposition","p_w_upload; filename=chart."+ext);
response.addHeader("Content-Type", type);
if(null!= t){
TranscoderInput input =newTranscoderInput(newStringReader(svg));
TranscoderOutput output =newTranscoderOutput(out);
try{
t.transcode(input,output);
}catch(TranscoderException e){
out.print("Problem transcoding stream. See the web logs for more details.");
e.printStackTrace();
}
}elseif(ext =="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();
}
}
4. jsp中highchs的导出功能
//增加导出功能
exporting: {
enabled:true,
///url:getRootPath()+"/getHighchartServlet",
url:'http://localhost:8080/xiangmuming/getHighchartServlet',
filename:'chart',
width:800,
type:'p_w_picpath/png'
},
或者采用(这是设置时间方法,下载pdf)
chart.exportChart({
url:'http://localhost:8080/hr821/getHighchartServlet',
type:'application/pdf',
filename:'fff'
});//导出pdf
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Asp.Net Core 配置动态WebApi
.Net Core 配置动态WebApi
动态生成 Web 应用服务 -
asp.net 解决中文乱码问题
一、解决中文乱码问题,在 web.config 中加入指定配置节即可~~~同样该方法将统一设置每个页面的编码为 gb2312 (取决于
asp.net globalization html 加载 中文乱码 -
ASP.NET之导出Excel——无乱码现象
GridView控件导出Excel的方式及部分错误解决方案ASP.net导出的Excel并非真正的E
asp.net c# 后端 System 输出流 -
ASP.NET GridView导出
/// /// 将Web控件或页面信息导出(带文件名参数) /// /// 控件实例 /// 导出类型:Excel或Word /// 保存文g
gridview asp.net excel 导出 html