- 浏览: 301600 次
- 性别:
- 来自: 山西太原
文章分类
最新评论
-
A741841403:
core-renderer-CN.jar这个包是怎么引入的啊, ...
flying saucer 中文不显示、以及中文换行的问题解决 -
A741841403:
您好,能提供下,中文字体换行包的jar文件吗
flying saucer 中文不显示、以及中文换行的问题解决 -
nightw13h:
楼主 我也遇到了这个问题 照你的套路也把问题解决了 当时没 ...
maven 单元测试 Absent Code attribute in method that is not native or abstract in cl -
devilyard:
借地请教个问题:fatal: open /dev/null o ...
msysGit 安装后的配置 -
tiancai2:
如果在action中定义不是string类型的,而是一个Per ...
Struts2 、jquery之ajaxfileupload异步上传插件
HighCharts一是款基于SVG的图表工具,用jQuery与SVG交互,具有动画效果,并能实现钻(这个字搞不好写错了)取功能。可能由于HighCharts是收费的,所以图表的下载代码并没有开放,大家一定会发现,只有连接了互联网,才能使用此功能,这在实际的项目中当然是不能用了,因为大部份的企业局域网是不能访问互联网的,那就只好自己来开发这块功能了。
1、首先我们要讲讲SVG,那么什么是SVG呢?
SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG由W3C制定,是一个开放标准。 SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。
SVG在网络上有很多教程,这里我就不详细介绍了,大家可以参考以下链接:http://www.chinasvg.com;
2、我们点击导出图片的时候实际上是吧svg图片数据以post请求的方式发送给了Exports.highcharts.com, 该站 点是以php程序出来这些数据的。
这个是从某位高手那里找来的,老外写的,用java来处理svg 图片数据导出各种图片。
使用的是apache 的batik, 必须下载batik的jar包,
这个包是干嘛的?我现在只知道是用来将svg 图片数据转成各种格式图片的。
DownloadCharAction.java
package com.zh.dy.action.upload; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.StringReader; import javax.servlet.ServletOutputStream; import org.apache.batik.transcoder.SVGAbstractTranscoder; 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; import org.apache.struts2.ServletActionContext; import com.zh.dy.action.supers.Action; import com.zh.dy.utils.highcharts.ChartsType; import com.zh.dy.utils.highcharts.FileExtendsName; public class DownloadCharAction extends Action { /** * */ private static final long serialVersionUID = 5377397425073812187L; private String serverPath; private static String pdfFileName; private static String jpgFileName; private static String pngFileName; private static String svgFileName; //private static String serverFolder="/uploads/charts/"; @Override public String execute() throws Exception { serverPath=ServletActionContext.getServletContext().getRealPath("uploadFiles"); File dir = new File(serverPath); // 如果这个目录不存在,则创建它。 if (!dir.exists()) dir.mkdir(); // 创建当前类型文件所在目录 serverPath = serverPath + "\\" + "tj\\"; dir = new File(serverPath); // 如果这个目录不存在,则创建它。 if (!dir.exists()) dir.mkdir(); String fileName = this.getRequest().getParameter("filename"); String svg = this.getRequest().getParameter("svg"); String type = this.getRequest().getParameter("type"); String width = this.getRequest().getParameter("width"); pdfFileName=serverPath+fileName+FileExtendsName.pdf.getGetFileExtendName(); jpgFileName=serverPath+fileName+FileExtendsName.jpg.getGetFileExtendName(); pngFileName=serverPath+fileName+FileExtendsName.png.getGetFileExtendName(); svgFileName=serverPath+fileName+FileExtendsName.svg.getGetFileExtendName(); File file = null; TranscoderInput transInput = new TranscoderInput(); transInput.setReader(new StringReader(svg)); SVGAbstractTranscoder transCoder = null; TranscoderOutput transOutput = null; if (ChartsType.image_png.getChartsTypeName().equalsIgnoreCase(type)) { transCoder = new PNGTranscoder(); file = new File(pngFileName); } if (ChartsType.image_jpeg.getChartsTypeName().equalsIgnoreCase(type)) { transCoder = new JPEGTranscoder(); file = new File(jpgFileName); } if (ChartsType.application_pdf.getChartsTypeName().equalsIgnoreCase(type)) { transCoder = new PDFTranscoder(); file = new File(pdfFileName); } if (ChartsType.image_svg_xml.getChartsTypeName().equalsIgnoreCase(type)) { file = new File(svgFileName); OutputStream output = new FileOutputStream(file); output.write(svg.getBytes()); output.flush(); output.close(); } if (transCoder != null) { transCoder.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float( width)); OutputStream output = new FileOutputStream(file); transOutput = new TranscoderOutput(output); try { transCoder.transcode(transInput, transOutput); output.flush(); output.close(); } catch (TranscoderException e) { e.printStackTrace(); } } if(file.exists()) { //复位response this.getResponse().reset(); this.getResponse().setContentType(ChartsType.contentType.getChartsTypeName()); this.getResponse().setBufferSize(2048); this.getResponse().setHeader(ChartsType.content_Disposition.getChartsTypeName(), ChartsType.attachment.getChartsTypeName()+file.getName()); this.getResponse().setContentLength(Integer.parseInt(file.length()+"")); InputStream is=new FileInputStream(file); byte[] buf=new byte[2048]; int resultLength=0; ServletOutputStream sos=this.getResponse().getOutputStream(); while((resultLength=is.read(buf))!=-1) { sos.write(buf,0,resultLength); } sos.flush(); sos.close(); this.getResponse().flushBuffer(); } return null; } }
FileExtendsName.java
package com.zh.dy.utils.highcharts; public enum FileExtendsName { svg(".svg"), pdf(".pdf"), png(".png"), jpg(".jpg"); private String getFileExtendName; public String getGetFileExtendName() { return getFileExtendName; } private FileExtendsName(String getFileExtendName) { this.getFileExtendName = getFileExtendName; } }
ChartsType.java
package com.zh.dy.utils.highcharts; public enum ChartsType { image_png("image/png"), image_jpeg("image/jpeg"), application_pdf( "application/pdf"), image_svg_xml("image/svg+xml"),contentType("application/x-download"),content_Disposition("Content-Disposition"),attachment("attachment;filename="); private String chartsTypeName; private ChartsType(String chartsTypeName) { this.chartsTypeName = chartsTypeName; } public String getChartsTypeName() { return chartsTypeName; } public void setChartsTypeName(String chartsTypeName) { this.chartsTypeName = chartsTypeName; } }
修改exporting.js中的服务端url,默认是http://export.highcharts.com/,我们需要改成自己项目中的URL。这样,我们就可以实现图表下载了。
- highcharts.rar (182.5 KB)
- 下载次数: 212
- batik.jar.rar (3.9 MB)
- 下载次数: 352
评论
中文变成了# 号,request和response编码都设置过了,还是没用!
lz有方案么?
这个都好久了,好多都忘了。你再查查.....
中文变成了# 号,request和response编码都设置过了,还是没用!
lz有方案么?
String svg = this.getRequest().getParameter("svg");
String type = this.getRequest().getParameter("type");
String width = this.getRequest().getParameter("width");
参数啊?
发表评论
-
ueditor编辑器图片上传路径问题
2015-04-02 13:24 3820第一部:修改jsp/config.json文件 访 ... -
Javascript 类与静态类的实现2
2014-08-19 16:47 643/***定义静态类***/ var StaticClass ... -
Javascript 类与静态类的实现1
2014-08-19 16:45 558首先说说类,在一个类里我们会有以下的几个特征: 1. 公有 ... -
JS实现类拟JAVA中MAP对像的功能
2014-08-19 16:34 768/* name: Map.js author: ... -
jQuery 多功能无缝滚动插件
2014-08-05 13:00 791/*** @description 基于 jQuery ... -
解决:在点击用户退出登录时,再按浏览器的后退按钮,仍然能够看到之前的页面
2014-05-14 23:18 8727需要在服务器返回的response header里面 ... -
复选框中 单选框 下拉
2013-12-22 15:35 813复选框 $("#id").is(&q ... -
Jquery append()总结(一)
2013-10-25 18:33 913append(content) Javas ... -
common-validator 验证框架使用
2013-10-12 12:47 1155地址:http://www.marsclan.org/ht ... -
PhoneGap与android交互及 JQuery Mobile+ iscroll 列表滚动条的实现
2013-08-13 18:32 15501、PhoneGap与android交互2、JQuery M ... -
iScroll 4 使用详解
2013-08-13 17:24 2782原文:http://cubiq.org/iscr ... -
js 工具
2013-04-17 15:26 8431、js日期格式化: 使用方式:new Date(v) ... -
JS- 清空file(兼容IE,火狐)
2013-04-08 16:47 781<script> function clean ... -
【锋利的JQuery】 学习笔记
2012-04-12 17:56 1636据说是一本不错的JQuery书,看完后感觉总体也不错,介 ... -
jQuery加分动画效果示例
2012-02-09 11:29 1078. -
web头像上传 裁剪 剪切功能
2011-11-11 16:33 31691、首先安装Ima ... -
lhgdialog 弹出窗体插件
2011-11-03 16:21 1033http://lhgcore.com/ -
jquery 五星评分插件
2011-11-03 15:32 1372. -
jQuery formValidator表单验证插件
2011-11-03 15:28 1095http://www.cnblogs.com/wzmaodon ... -
artDialog 强大弹出窗体插件
2011-11-03 10:53 1347官网:http://www.planeart.cn/demo/ ...
相关推荐
基于JAVA的HighCharts服务端图表下载程序,欢迎下载
Java和Highcharts结合实现折线图
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图...
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图...
Highcharts生成图表所需源码包
获取Highcharts图表对象的方法汇总
Highcharts最全示例程序
highcharts前端图表插件,支持低版本ie
导出highCharts图表所需要的java jar包
Highcharts js图表控件 比charts.js 更加高级
HighCharts成熟稳定版本,含源码,有示例,很容易上手学习
Highcharts 生成图表 。
EasyUI图表插件Highcharts源码Demo(Java)
highcharts-图表导出到word 代码.docxhighcharts-图表导出到word 代码.docx
本程序主要把echats和highcharts的基本图形进行了简单的绘制,有部分数据是写死的。如果关于从后台获取数据方面有问题,请直接私信。
包含了highcharts.js、中文插件、导出插件、本地下载的插件。
Highcharts图表控件
jquery Highcharts统计图表插件,这个是本人自己研究总结的实例+源码,还有中文版的API帮助文档,希望可以帮到大家!
tomcat 读取oracle数据库数据利用highcharts生成图表,sql语句传入开始日期和结束日期,修改数据库链接IP用户名密码数据库名称即可连接,需搭建tomcat环境执行