当前位置: 代码迷 >> Web前端 >> highcharts的导出效能
  详细解决方案

highcharts的导出效能

热度:183   发布时间:2012-07-26 12:01:08.0
highcharts的导出功能
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