博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java导出Highcharts生成的图表为图片源码
阅读量:4455 次
发布时间:2019-06-07

本文共 5262 字,大约阅读时间需要 17 分钟。

本文转载自:http://blog.csdn.net/dengsilinming/article/details/7352054

需要的jar包:

需要的js文件:(可以通过http://www.highcharts.com/download下载highcharts对应的js文件)

下面是一些主要部分

web.xml

This is the description of my J2EE component
This is the display name of my J2EE component
SaveAsImage
com.foxconn.highcharts.demo.SaveAsImage
SaveAsImage
/SaveAsImage
basic_line.jsp

servlet部分

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. 
*/ 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.
(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.
* * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } }

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"      pageEncoding="UTF-8"%>        
Basic Line

注意:请下载源码的同学,将源码中的

/* else if (type.equals("application/pdf")) {                 ext = "pdf";                 t =(Transcoder) new PDFTranscoder();             }*/

上面的注释去掉,程序是可以成功导出pdf的。

转载于:https://www.cnblogs.com/dreammyle/p/3847521.html

你可能感兴趣的文章
APP兼容性测试(三)测试方案设计
查看>>
leetcode 412. Fizz Buzz
查看>>
对Netflix Ribbon的Loadbalancer类源码设计合理性的一点质疑
查看>>
关于日历的算法
查看>>
[QT编程]QT实现的一个渐隐渐显窗体
查看>>
在Web工程中引入Jquery插件报错解决方案
查看>>
大学总结之影响我最深的十本书
查看>>
用myEclipse连接数据源生成动态数据报表
查看>>
[myeclipse]@override报错问题
查看>>
자주 쓰이는 정규표현식
查看>>
超简单的listview单选模式SingleMode(自定义listview item)
查看>>
vue-11-路由嵌套-参数传递-路由高亮
查看>>
HDU 1199 - Color the Ball 离散化
查看>>
[SCOI2005]骑士精神
查看>>
Hibernate原理解析-Hibernate中实体的状态
查看>>
六时车主 App 隐私政策
查看>>
C语言常见问题 如何用Visual Studio编写C语言程序测试
查看>>
Web用户的身份验证及WebApi权限验证流程的设计和实现
查看>>
hdu 2098 分拆素数和
查看>>
[ONTAK2010]Peaks kruskal重构树,主席树
查看>>