首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

关于 highcharts 生成图片的有关问题

2013-10-16 
关于 highcharts 生成图片的问题 请问,关于highcharts 怎么在本地生成图片? 不是导出导出那个功能有的,但,

关于 highcharts 生成图片的问题
 请问,关于highcharts 怎么在本地生成图片? 不是导出
导出那个功能有的,但,现在要做的是生成本地图片
请问谁知道啊




package com.foxconn.highcharts.demo;

import java.io.IOException;
import java.io.OutputStreamWriter;
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;




public class SaveAsImage extends HttpServlet {

/**
 * 
 */
private static final long serialVersionUID = 1L;

/**
 * Constructor of the object.
 */
public SaveAsImage() {
super();
}

/**
 * Destruction of the servlet. <br>
 */
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

/*导成pdf做了很久,但还是没能做出来,因为一直报
    * java.lang.NoSuchMethodError: org.apache.avalon.framework.configuration.DefaultConfiguration.<init>(Ljava/lang/String;)V的错误,
    * 如果你知道如何解决这个错误,请告诉我一下,在此先谢过了。现在已经可以正确地将图片导成pdf了,程序是没有问题的
    * */
request.setCharacterEncoding("utf-8");//设置编码,解决乱码问题
String type = request.getParameter("type");
String svg = request.getParameter("svg");
String filename = request.getParameter("filename");
filename = filename==null?"chart":filename;
ServletOutputStream out = response.getOutputStream();
if (null != type && null != svg) {
    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 =(Transcoder) new PDFTranscoder();//我将这儿的注释去掉了,因为导成pdf的问题已经解决
        } else if(type.equals("image/svg+xml")) 
            ext = "svg";   
    response.addHeader("Content-Disposition", "attachment; filename="+ filename + "."+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.equals("svg")) {
    //out.print(svg);
    OutputStreamWriter writer = new OutputStreamWriter(out, "UTF-8");
    writer.append(svg);
    writer.close();
    } 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();
}

/**
 * Initialization of the servlet. <br>


 *
 * @throws ServletException if an error occurs
 */
public void init() throws ServletException {
// Put your code here
}

}




刚才在网上找到的他这个是导出的,我如果想做到同时生成本地的需要怎么处理啊,
求大家帮忙
[解决办法]
把图片流部分写在本地文件
[解决办法]
不会,学习一下。

热点排行