`
ollevere
  • 浏览: 264617 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

highcharts2.2.3导出中文乱码问题解决

 
阅读更多

方案一:

在exporting.js中找到enctype:"multipart/form-data", 在后面增加上“,encoding: 'multipart/form-data'”。

 

方案二:

自己建Servlet导出。

batik的jar包这里有下载http://blog.renren.com/share/225362267/6752347325
servlet类:

import java.io.IOException;
import java.io.StringReader;
 
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.batik.transcoder.Transcoder;
import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.fop.svg.PDFTranscoder;
 
/**
 * Servlet implementation class for the batik Transcoder
 */
public class HighChartsServlet extends HttpServlet {
     
   private static final long serialVersionUID = 3920224595120519682L;
    
    public HighChartsServlet() {
      super();
   }      
 
   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doPost(request,response);
   }     
    
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, 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("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();
 
      } else if (type.equals("image/svg+xml")) {
         ext = "svg";   
      }
       
      response.addHeader("Content-Disposition", "attachment; filename=chart."+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 == "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();   
   }
}

web.xml中配置下serlvet:
<!--begin exporter highcharts-->
<servlet>
<servlet-name>HighChartsServlet</servlet-name>
<servlet-class>com.friendone.mrms.ws.material.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-->

然后修改highcharts的exporting.js:

url: 'http://export.highcharts.com/'改为本地的servlet地址
url:"http://localhost:8080/cmrm/getHighchartServlet"
这就可以本地导出图片了,在servlet里可以自己设置编码消除中文乱码。  

 

 

 

分享到:
评论
1 楼 fivem 2015-01-13  
方案一没好使呢?

相关推荐

    处理highcharts导出图片出现中文乱码的问题

    总的来说,解决Highcharts导出图片中的中文乱码问题需要综合考虑前端的Highcharts配置、后端的服务器环境、中间可能涉及的代理服务以及所有环节的字符编码设置。通过仔细排查并尝试上述方法,应该能够成功解决这个...

    Highcharts导出图片ASP.NET解决中文乱码问题

    本文将详细讨论如何在ASP.NET环境中解决Highcharts导出图片时的中文乱码问题。 首先,我们要理解问题的根源。Highcharts默认使用UTF-8编码,而ASP.NET应用可能使用其他编码方式,比如GB2312或GBK,这就可能导致在...

    highcharts本地导出图片案例

    "highcharts本地导出图片案例"就是针对这一需求进行的实践。 Highcharts的本地图片导出功能允许用户在不借助服务器的情况下,直接在客户端生成高质量的图像文件。这种功能主要通过集成`Exporting Module`来实现,该...

    highcharts客户端导出

    "Highcharts客户端导出"是Highcharts的一个特性,允许用户在不依赖服务器的情况下,直接在浏览器端将图表保存为图片、PDF或其他格式。这个功能提高了用户体验,因为导出过程快速且数据隐私得到了更好的保护。 首先...

    HighCharts Net导出服务 和相关源码

    关于HighCharts导出模块的 Net版的导出服务 GitHub里下载的 https://github.com/imclem/Highcharts-export-module-asp.net 把里面用到的 (sharpPDF.dll) (Svg.dll) 源码也怎和在一起了,有兴趣可以看看; 之前也下...

    Highcharts 导出图片

    Highcharts 导出图片,具体的图片导出的代码,带吗代码代码代码

    highcharts导出服务器的asp mvc实现

    在实际项目中,为了提高用户体验并满足离线导出图表的需求,开发者常常需要自建导出服务器,以便避免依赖Highcharts官方网站的导出服务。本教程将详细介绍如何在ASP.NET MVC框架下实现一个Highcharts导出服务器。 ...

    highcharts客户端导出,本地导出

    这个项目提供了一个纯JavaScript的解决方案,允许在浏览器中实现Highcharts图表的本地导出,无需与服务器通信。 实现客户端导出的关键在于使用`canvg`和`xlsx`这两个库。`canvg`库用于将SVG图表转换为Canvas元素,...

    highcharts 导出图片 .net C# Demo例子

    HighCharts导出图片是发现请求的是官网,于是找了一下,整理了这个导出请求本地服务导出png、jpg、svg和pdf的demo (GitHub里找的 https://github.com/imclem/Highcharts-export-module-asp.net 把里面用到的 (sharp...

    highcharts 导出图片 例子 .net C# Demo 工具类

    在.NET C#环境中,实现HighCharts图表的导出功能,可以通过创建一个服务类和相关的控制器来完成。下面将详细解释这个过程。 首先,`ExportHighChart.cs`是关键的工具类,它包含了将HighCharts图表转换为图片的核心...

    highcharts导出图片的后台代码

    highcharts导出图片的后台代码,这样就不用从highcharts官网服务器上进行图片导出了,成了一个本地的服务器!

    Highcharts .net(C#)导出图片支持中文svg转jpg等

    本文将深入探讨如何在C#环境下利用Highcharts .NET库实现图表的导出,并支持中文字符,以及如何将SVG格式转换为JPG、PNG、PDF和SVG等其他常见格式。 首先,要实现Highcharts .NET导出图片功能,你需要安装相关的...

    Highcharts图像导出jar

    包括Java导出Highcharts需要的4个jar包(其中highcharts-downimage.jar是下载图像的实现类,已经编译,并包含源码,其它3个jar包是相关引用类),以及struts配置。 使用时,只要将common_struts.xml加入struts配置...

    highcharts在linux下保存图片乱码的解决办法

    - 解决乱码问题的关键是确保Linux系统中安装了Highcharts渲染所需的字体。在本例中,`simsun.ttc`文件是宋体的TrueType字体集合,我们需要将其安装到系统字体目录。通常,这个目录是`/usr/share/fonts`或`~/.local/...

    highcharts导出图片到Excel和Pdf文件中

    首先,Highcharts本身并不直接支持将图表导出到Excel或PDF,但其提供了一个名为Exporting的模块,通过这个模块,我们可以将图表转换为图像格式,然后进一步利用其他工具(如jsPDF或FileSaver.js)将图像转换为PDF,...

    highcharts本地导出图片_服务端代码

    ### highcharts本地导出图片_服务端代码 #### 概述 Highcharts 是一款非常流行的JavaScript图表库,它提供了一套完整的API以及丰富的图表样式,适用于各种数据可视化需求。Highcharts 支持将图表导出为不同的格式,...

    highcharts 导出图片 例子 .net C# Demo

    HighCharts导出图片是发现请求的是官网,于是找了一下,整理了这个导出请求本地服务导出png、jpg、svg和pdf的demo (GitHub里找的 https://github.com/imclem/Highcharts-export-module-asp.net 把里面用到的 (sharp...

    highcharts 导出图片 .net c#Demo例子

    在.NET C#环境中,如果你想利用Highcharts的功能,特别是在服务器端导出图表为图片,就需要进行一些特定的处理。以下是一个关于如何在.NET C#中实现Highcharts图表导出的详细步骤和知识点: 1. **Highcharts与SVG**...

    Highcharts导出图片到本地指定路径

    如果你提供的压缩包文件`Highcharts导出图片.net`是一个.NET平台下的解决方案,那么可能包含了处理这种POST请求的代码示例。在.NET环境中,可以使用如`HttpListener`或ASP.NET MVC来接收和处理这个请求,将SVG转换为...

    Highcharts-2.3.3

    Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。目前HighCharts支持的图表类型有曲线图、...

Global site tag (gtag.js) - Google Analytics