package cn.com.songjy.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 ExportServlet
*/
public class ExportServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public ExportServlet() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* 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();
}
}
备注:所需jar包见附件,也可至官网
http://xmlgraphics.apache.org/batik/下载
引自:
http://wenku.baidu.com/view/f39593c76137ee06eff9189e.html
参考资料:
http://wenku.baidu.com/view/adfc303d376baf1ffc4fad33.html
http://wenku.baidu.com/view/6b392bc36137ee06eff9183e.html
分享到:
相关推荐
本文将详细讨论如何在ASP.NET环境中解决Highcharts导出图片时的中文乱码问题。 首先,我们要理解问题的根源。Highcharts默认使用UTF-8编码,而ASP.NET应用可能使用其他编码方式,比如GB2312或GBK,这就可能导致在...
- 查看博文链接(已提供)了解更多关于集成Highcharts导出功能的详细步骤和代码示例。 总结来说,实现Highcharts图表到Excel和PDF的导出,需要理解Highcharts的Exporting模块,熟悉JavaScript图像处理和PDF生成库...
在Highcharts的导出功能中,它会将图表转换为SVG格式,然后通过服务器端的工具(如 PhantomJS 或 ImageMagick)将其渲染为PNG、JPEG或其他图像格式。在这个过程中,如果服务器或工具不正确地处理中文字符的编码,就...
本教程将详细介绍如何在ASP.NET MVC框架下实现一个Highcharts导出服务器。 首先,我们需要了解Highcharts的导出功能。Highcharts内置的导出功能允许用户将图表以图像(JPEG、PNG、PDF或SVG)的形式保存或打印,但是...
首先,我们要理解Highcharts导出功能的工作原理。在默认情况下,Highcharts使用一个基于服务器的导出服务,将图表转换为图像或PDF。然而,"客户端导出"功能消除了对服务器的依赖,所有处理都在用户的浏览器内部完成...
在.NET C#环境中,如果你想利用Highcharts的功能,特别是在服务器端导出图表为图片,就需要进行一些特定的处理。以下是一个关于如何在.NET C#中实现Highcharts图表导出的详细步骤和知识点: 1. **Highcharts与SVG**...
本文将详细介绍如何使用Highcharts的导出功能来实现将图表导出为图片并保存到本地指定路径。 首先,Highcharts提供了内置的导出功能,这得益于它的Exporting模块。要启用这个功能,我们需要在配置对象中添加`...
在.NET C#环境中,实现HighCharts图表的导出功能,可以通过创建一个服务类和相关的控制器来完成。下面将详细解释这个过程。 首先,`ExportHighChart.cs`是关键的工具类,它包含了将HighCharts图表转换为图片的核心...
"HighCharts导出的Servlet"就是为了解决这一需求而设计的。 Servlet是一种Java编程语言编写的服务器端程序,主要用于扩展服务器的功能。在HighCharts的上下文中,这个Servlet的作用是接收来自前端HighCharts图表的...
本教程将详细介绍如何在使用SpringMVC框架的项目中实现HighCharts图表的导出功能。 1. **HighCharts的基本用法** - 首先,引入HighCharts的JavaScript库。这通常通过在HTML文件中添加CDN链接或下载库并将其放置在...
1. **Highcharts导出功能**:Highcharts自身支持图表的导出功能,用户可以将图表保存为PNG、JPEG、PDF或SVG格式的图像。这个功能是通过Highcharts的exporting模块实现的,它提供了内置的服务器端处理来完成导出任务...
"exporting-server"目录可能包含了关于Highcharts导出功能的相关代码和配置。Highcharts支持将图表导出为各种图像格式(如JPEG、PNG、PDF等),这部分可能包括了处理这些导出请求的服务器端逻辑。 "js"目录则存放了...
Highcharts的本地图片导出功能允许用户在不借助服务器的情况下,直接在客户端生成高质量的图像文件。这种功能主要通过集成`Exporting Module`来实现,该模块提供了多种导出选项,包括不同的图像格式(如PNG、JPEG、...
首先,我们要理解Highcharts的默认导出功能。Highcharts内置了导出模块,允许用户将图表导出为PNG、JPEG、PDF或SVG格式的图像,同时也支持将数据导出为CSV或Excel格式。这些功能通常依赖于服务器端的服务,当用户...
本文将详细介绍如何在Asp.Net环境中实现Highcharts图表的jpg和png图片导出功能。 首先,要实现这个功能,我们需要一个服务器端的处理程序,因为浏览器端的JavaScript无法直接将Highcharts图表转换为图片。一个常见...
首先,要实现Highcharts .NET导出图片功能,你需要安装相关的NuGet包。这通常可以通过Visual Studio的管理NuGet程序包工具完成,搜索"HighchartsExport"并安装。这个库提供了C#接口,可以调用Highcharts的服务器端...
4. 实现本地导出图片:Highcharts提供了内置的导出功能,允许用户将图表导出为PNG、JPEG、PDF或SVG格式。默认情况下,这个功能会打开一个新的窗口或者弹出对话框让用户下载。要实现本地导出,我们可以监听导出事件并...
在某些场景下,用户可能希望在本地服务器上实现图表的导出功能,而不是依赖于Highcharts提供的在线导出服务。本文将详细介绍如何通过服务端代码实现Highcharts图表的本地导出。 #### 需要的JAR包 为了实现...
"Java实现Highcharts导出图片至Excel" 本文主要介绍了如何通过Java实现Highcharts导出图片至Excel。下面我们将详细介绍该过程的知识点。 1. 目的 通过Java后台实现将前端页面的Highcharts图表导出至生成的Excel...
在VS2008环境下,实现Highcharts的本地导出功能,可以帮助用户将图表保存为图片或者PDF等格式,便于离线查看或打印。 首先,我们需要了解如何在VS2008项目中引入Highcharts的DLL文件。Highcharts提供了相应的服务器...