- 浏览: 311009 次
- 性别:
- 来自: 山西太原
文章分类
最新评论
-
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 3935第一部:修改jsp/config.json文件 访 ... -
Javascript 类与静态类的实现2
2014-08-19 16:47 693/***定义静态类***/ var StaticClass ... -
Javascript 类与静态类的实现1
2014-08-19 16:45 599首先说说类,在一个类里我们会有以下的几个特征: 1. 公有 ... -
JS实现类拟JAVA中MAP对像的功能
2014-08-19 16:34 805/* name: Map.js author: ... -
jQuery 多功能无缝滚动插件
2014-08-05 13:00 834/*** @description 基于 jQuery ... -
解决:在点击用户退出登录时,再按浏览器的后退按钮,仍然能够看到之前的页面
2014-05-14 23:18 8825需要在服务器返回的response header里面 ... -
复选框中 单选框 下拉
2013-12-22 15:35 858复选框 $("#id").is(&q ... -
Jquery append()总结(一)
2013-10-25 18:33 963append(content) Javas ... -
common-validator 验证框架使用
2013-10-12 12:47 1196地址:http://www.marsclan.org/ht ... -
PhoneGap与android交互及 JQuery Mobile+ iscroll 列表滚动条的实现
2013-08-13 18:32 16301、PhoneGap与android交互2、JQuery M ... -
iScroll 4 使用详解
2013-08-13 17:24 2828原文:http://cubiq.org/iscr ... -
js 工具
2013-04-17 15:26 9491、js日期格式化: 使用方式:new Date(v) ... -
JS- 清空file(兼容IE,火狐)
2013-04-08 16:47 822<script> function clean ... -
【锋利的JQuery】 学习笔记
2012-04-12 17:56 1703据说是一本不错的JQuery书,看完后感觉总体也不错,介 ... -
jQuery加分动画效果示例
2012-02-09 11:29 1147. -
web头像上传 裁剪 剪切功能
2011-11-11 16:33 32151、首先安装Ima ... -
lhgdialog 弹出窗体插件
2011-11-03 16:21 1127http://lhgcore.com/ -
jquery 五星评分插件
2011-11-03 15:32 1411. -
jQuery formValidator表单验证插件
2011-11-03 15:28 1168http://www.cnblogs.com/wzmaodon ... -
artDialog 强大弹出窗体插件
2011-11-03 10:53 1408官网:http://www.planeart.cn/demo/ ...
相关推荐
HighCharts服务端图表下载程序是专门针对HighCharts图表的一个实用工具,主要功能是允许用户在服务器端生成并下载图表。这个程序是用Java语言编写的,因此具备了跨平台的特性,可以在各种运行Java环境的系统上运行。...
Highcharts是一个流行的JavaScript库,专门用于创建高质量的图表,而Java则作为后端语言,负责处理数据并将其传递给前端。 首先,我们需要理解Java的角色。在Java中,我们可以使用各种库,如Spring Boot或JavaFX,...
Highcharts是一款强大的JavaScript图表库,它能够帮助开发者创建出各种精美、交互性强的2D和3D图表。在“3D图表Highcharts”这个主题中,我们将深入探讨如何利用Highcharts来实现三维图表的制作,以及它在数据可视化...
Highcharts图表库是一款广泛应用于网页数据可视化的JavaScript库,它提供了丰富的图表类型,如柱状图、折线图、饼图、散点图等,帮助开发者轻松创建交互式的图表。v9.3.3是Highcharts的一个更新版本,带来了更多功能...
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图...
首先,在HTML文件中引入这两个脚本,然后使用JavaScript编写创建图表的代码,通过配置`Highcharts.Options`来设定图表的类型、数据、标题、颜色等属性。例如: ```html <script src="path/to/highcharts.js"> ...
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图...
HighCharts是一款广泛应用于Web开发中的专业图表库,它以其丰富的功能、出色的性能和易于使用而闻名。这个"HighCharts万能图表库(含源码)"提供了成熟稳定的版本,包括源代码,非常适合开发者进行深入学习和自定义...
HighCharts是一款广泛...理解以上知识点,结合`javaHighcharts`库,你就能在Java环境中顺利地实现HighCharts图表的下载功能。在实际项目中,不断学习和实践,你会更加熟练地掌握这个工具,提升数据可视化的用户体验。
本压缩包"Highcharts-2.3.2"包含了Highcharts 2.3.2版本的源码和相关资源,为开发者提供了丰富的示例程序,以便更好地理解和应用这个强大的图表库。 首先,我们来深入了解一下Highcharts的基本特性: 1. **易用性*...
获取Highcharts图表对象的方法汇总
Echarts和Highcharts都是流行的JavaScript库,用于在Web应用程序中创建交互式图表和图形。它们在数据可视化领域具有广泛的应用,能够帮助用户更好地理解和解析复杂的数据。以下是对这两个库及其基本功能的详细说明:...
为了在Java后端生成Highcharts图表,我们可以使用“highcharts-serverside-export-master”这个压缩包中的资源。这个项目可能是对Highcharts的一个后端实现,允许我们在Java环境中解析Highcharts的配置和数据,然后...
在IT行业中,Java和Highcharts是两个非常重要的技术领域,它们在数据可视化和Web应用程序开发中发挥着关键作用。Java是一种广泛使用的编程语言,而Highcharts则是一个强大的JavaScript库,用于创建互动式图表和图形...
HighCharts是一款广泛应用于Web开发中的JavaScript图表库,用于创建各种数据可视化效果,如折线图、柱状图、饼图等。在实际项目中,有时我们需要将这些动态生成的图表导出为静态图片,以便于打印、分享或离线查看。...
4. **本地下载的插件**:这个部分可能包含了一些特定的本地化或优化插件,使得开发者可以在不连接互联网的情况下,也能使用Highcharts的功能,比如在离线环境中生成图表。这有助于提高应用的稳定性和性能,尤其是在...
本教程将探讨如何在Java后端与前端使用Highcharts和Ajax结合,动态地从服务器获取数据并更新图表。 一、Highcharts的基本概念与使用 Highcharts是基于HTML5 SVG的图表库,支持现代浏览器和IE6+(通过VML)。它提供...
Java HighCharts是一个用于在Java应用程序中展示图表的库,它允许开发者通过Java代码创建各种动态、交互式的图表。HighCharts本身是一个JavaScript库,但通过Java封装,使得开发者可以在后端处理数据并生成图表,...
通过集成Highcharts,我们可以利用EasyUI的便利性来构建具有高质量图表的应用程序。 在"EasyUI图表插件Highcharts源码Demo(Java)"中,你可以学习如何在Java环境下集成和使用Highcharts。首先,你需要在项目中引入...