近期画油量曲线须要用到ZoomLine官网看了好几天。如今整理出来供大家參考使用

zoomline.html源码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FusionCharts Free Documentation</title>
<!-- 脚本区域 start -->
<script type="text/javascript" src="js/FusionCharts.js"></script>
<script type="text/javascript" src="js/FusionChartsExportComponent.js"></script>
<!-- 脚本区域 end -->
<script type="text/javascript">
//导出图片调用的方法
function startExport(){
var chart = getChartFromId("myFusionExport"); //生成的FusionCharts图表本身的标识
if (chart.hasRendered()){
chart.exportChart();
}else{
alert("Please wait for the chart to finish rendering, before you can invoke exporting");
}
}
</script>
</head>
<table width="98%" border="0" cellspacing="0" cellpadding="3" align="center">
<tr>
<td valign="top" class="text" align="center">
<div id="myFusion" align="center">
FusionCharts.
</div>
<script type="text/javascript">
var chart = new FusionCharts("charts/ZoomLine.swf", "myFusionExport", "790", "450");
chart.setDataURL("data/zoomLine.xml");
chart.render("myFusion");
</script>
</td>
</tr>
<input type='button' value='导出FusionCharts图片' onClick="startExport();" />
</table>
</html>

zoomLine.xml源码

<chart
palette="1"
showLabels="0"
showBorder="1"
chartLeftMargin="10"
chartRightMargin="5"
chartTopMargin="15"
chartBottomMargin="15"
exportEnabled="1"
exportAtClient="0"
exportHandler="FCExporter"
showExportDialog="1"
animation="0"
exportFileName="fusioncharts"
exportDialogMessage="正在导出。请稍候..."
rotateLabels="0"
DIVLINES="Blur"
DATATOOLTIP="0x004E98"
showValues="0"
allowPinMode="1"
showVDivLines="1"
drawToolbarButtons="1"
lineThickness="1"
oolBarBtnHPadding="0"
mouseCursorColor="#FF0000"
toolTipBarColor="FF0000"
pinPaneBgColor="#FFFFFF"
lineColor="#0000FF"
divLineColor="#FF0000"
background="#0000FF"
bgColor="#FFFFFF"
scrollColor="#FFFFFF"
canvasBorderColor="#FF0000"
toolbarButtonColor="FFFFFF"
btnZoomOutTitle=" "
zoomOutMenuItemLabel=" "
btnResetChartTitle="缩小"
btnSwitchtoZoomModeTitle="切换Pin模式"
btnSwitchToPinModeTitle="切换Zoom模式"
showToolBarButtonTooltext="0"
toolbarButtonFontColor="000000"
>
<categories>
<category name="02-03 07:00:05" />
<category name="02-03 06:59:35" />
<category name="02-03 06:59:05" />
<category name="02-03 06:58:35" />
<category name="02-03 06:58:04" />
<category name="02-03 06:57:34" />
<category name="02-03 06:57:04" />
<category name="02-03 06:56:34" />
<category name="02-03 06:56:04" />
<category name="02-03 06:55:33" />
</categories>
<dataset>
<set value="300" />
<set value="349" />
<set value="627" />
<set value="445" />
<set value="623" />
<set value="575" />
<set value="567" />
<set value="576" />
<set value="745" />
<set value="409" />
</dataset>
</chart>

以上基本实现了图表的显示工作,假设须要导出还须要下面代码

FCExporterFormat.java源码

package com.fusioncharts.exporter.resources;
import javax.servlet.http.HttpServletResponse;
import com.fusioncharts.exporter.beans.ExportBean; public abstract class FCExporterFormat { abstract public Object exportProcessor(ExportBean exportBean); abstract public String exportOutput(Object exportObj,
HttpServletResponse response);
}

FCExporterIMG.java源码

package com.fusioncharts.exporter.resources;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import com.fusioncharts.exporter.ErrorHandler;
import com.fusioncharts.exporter.FusionChartsExportHelper;
import com.fusioncharts.exporter.beans.ChartMetadata;
import com.fusioncharts.exporter.beans.ExportBean;
import com.fusioncharts.exporter.encoders.BasicEncoder;
import com.fusioncharts.exporter.encoders.JPEGEncoder;
import com.fusioncharts.exporter.generators.ImageGenerator; public class FCExporterIMG extends FCExporterFormat { private ExportBean exportBean = null; public String exportOutput(Object exportObj, HttpServletResponse response) {
String action = (String)exportBean.getExportParameterValue("exportaction");
String exportFormat = (String)exportBean.getExportParameterValue("exportformat");
String exportTargetWindow = (String)exportBean.getExportParameterValue("exporttargetwindow"); String fileNameWithoutExt = (String)exportBean.getExportParameterValue("exportfilename");
String extension = FusionChartsExportHelper.getExtensionFor(exportFormat.toLowerCase());;
String fileName = fileNameWithoutExt+"."+ extension; StringBuffer err_warn_Codes = new StringBuffer(); BufferedImage chartImage = (BufferedImage)exportObj;
boolean isHTML = false;
if(action.equals("download"))
isHTML=true; String noticeMessage = "";
String meta_values= exportBean.getMetadataAsQueryString(null,false,isHTML); if(action.equals("download")){
try {
response.setContentType(FusionChartsExportHelper.getMimeTypeFor(exportFormat.toLowerCase())); OutputStream os = response.getOutputStream(); if(exportTargetWindow.equalsIgnoreCase("_self")){
response.addHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
//response.addHeader("Content-length",""+ios.length());
} else {
response.addHeader("Content-Disposition", "inline; filename=\""+fileName+"\"");
}
if( exportFormat.toLowerCase().equalsIgnoreCase("jpg") || exportFormat.toLowerCase().equalsIgnoreCase("jpeg")){
JPEGEncoder jpegEncoder = new JPEGEncoder();
try {
jpegEncoder.encode(chartImage,os);
os.flush();
}catch(Throwable e){
//Unable to encode the buffered image
System.out.println("Unable to (JPEG) encode the buffered image");
err_warn_Codes.append("E516,");
//os.flush();
// Note forward will not work in this case, as the output stream has already been opened
// Hence we have to output the error directly.
meta_values =exportBean.getMetadataAsQueryString(null,true,isHTML);
// Reset the response to set new content type and use out instead of outputstream
response.reset();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print(meta_values+noticeMessage+ErrorHandler.buildResponse(err_warn_Codes.toString(),isHTML));
return null;
}
chartImage=null;
} else { BasicEncoder basicEncoder = new BasicEncoder();
try {
basicEncoder.encode(chartImage,os,1F,exportFormat.toLowerCase());
os.flush();
}catch(Throwable e){
System.out.println("Unable to encode the buffered image");
err_warn_Codes.append("E516,");
//os.flush();
// Note forward will not work in this case, as the output stream has already been opened
// Hence we have to output the error directly.
meta_values =exportBean.getMetadataAsQueryString(null,true,isHTML);
// Reset the response to set new content type and use out instead of outputstream
response.reset();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print(meta_values+noticeMessage+ErrorHandler.buildResponse(err_warn_Codes.toString(),isHTML));
return null;
}
chartImage=null;
} } catch (IOException e) {
e.printStackTrace();
}
} if(err_warn_Codes.indexOf("E") != -1) {
meta_values =exportBean.getMetadataAsQueryString(null,true,isHTML);
PrintWriter out;
try {
out = response.getWriter();
out.print(meta_values+noticeMessage+"&statusCode=1&statusMessage=successful");
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
} public Object exportProcessor(ExportBean pExportBean) {
exportBean = pExportBean;
String stream = (String)exportBean.getStream();
ChartMetadata metadata= exportBean.getMetadata();
BufferedImage chartImage = ImageGenerator.getChartImage(stream,metadata); return chartImage;
} }

FCExporter.java源码

package com.fusioncharts.exporter.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fusioncharts.exporter.ErrorHandler;
import com.fusioncharts.exporter.FusionChartsExportHelper;
import com.fusioncharts.exporter.beans.ExportBean;
import com.fusioncharts.exporter.resources.FCExporterFormat; public class FCExporter extends HttpServlet { public FCExporter() {
super();
} public void init(ServletConfig config) throws ServletException {
super.init(config);
} public void destroy() {
super.destroy();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext sc = getServletContext();
String WEB_ROOT_PATH = sc.getRealPath("/");
ExportBean localExportBean = FusionChartsExportHelper.parseExportRequestStream(request); String exportFormat = (String)localExportBean.getExportParameterValue("exportformat");
String exportTargetWindow = (String)localExportBean.getExportParameterValue("exporttargetwindow");
StringBuffer err_warn_Codes = new StringBuffer();
if (localExportBean.getMetadata().getWidth() == -1 ||
localExportBean.getMetadata().getHeight() == -1 ||
localExportBean.getMetadata().getWidth() == 0 ||
localExportBean.getMetadata().getHeight() == 0 ) { //If Width/Height parameter is not sent, the ChartMetadata will have width/height as -1
//Raise Error E101 - Width/Height not found
err_warn_Codes.append("E101,");
} if (localExportBean.getMetadata().getBgColor() == null) {
//Background color not available
err_warn_Codes.append("W513,");
} if (localExportBean.getStream() == null ) { //If image data not available
//Raise Error E100
err_warn_Codes.append("E100,");
}
String exportAction = (String)localExportBean.getExportParameterValue("exportaction");
boolean isHTML = false;
if(exportAction.equals("download"))
isHTML=true; if(!exportAction.equals("download")) {
String fileNameWithoutExt = (String)localExportBean.getExportParameterValue("exportfilename");
String extension = FusionChartsExportHelper.getExtensionFor(exportFormat.toLowerCase());;
String fileName = fileNameWithoutExt+"."+ extension;
err_warn_Codes.append(ErrorHandler.checkServerSaveStatus(WEB_ROOT_PATH,fileName));
}
String pathToWebAppRoot = getServletContext().getRealPath("/");
localExportBean.addExportParameter("webapproot", pathToWebAppRoot);
String meta_values= localExportBean.getMetadataAsQueryString(null,true,isHTML);
if(err_warn_Codes.indexOf("E") != -1) {
// There are errors - forward to error page
writeError(response,""+isHTML,err_warn_Codes.toString(),meta_values,exportTargetWindow); } else {
// get the exporter for this format
//String path = FusionChartsExportHelper.getExporterFilePath(exportFormat).replace(" ","");
// gives with .jsp extension, let us remove the extension - this is a work-around until next release, where Servlets will also be supported
//int indexOfDot = path.lastIndexOf(".");
//String exporterClassName = path.substring(0, indexOfDot);
try {
//Class exporterClass = Class.forName(exporterClassName);
Class exporterClass = Class.forName("com.fusioncharts.exporter.resources.FCExporterIMG");
FCExporterFormat fcExporter = (FCExporterFormat)exporterClass.newInstance();
Object exportObject = fcExporter.exportProcessor(localExportBean);
String status= fcExporter.exportOutput(exportObject, response);
} catch (ClassNotFoundException e) {
err_warn_Codes.append("E404");
writeError(response,""+isHTML,err_warn_Codes.toString(),meta_values,exportTargetWindow);
} catch (InstantiationException e) {
err_warn_Codes.append("E404");
writeError(response,""+isHTML,err_warn_Codes.toString(),meta_values,exportTargetWindow);
} catch (IllegalAccessException e) {
err_warn_Codes.append("E404");
writeError(response,""+isHTML,err_warn_Codes.toString(),meta_values,exportTargetWindow);
}
}
}
private void writeError(HttpServletResponse response, String isHTML, String errorCodes, String otherMessages, String exportTargetWindow) {
if(isHTML==null){
isHTML = "true";
}
if(otherMessages==null){
otherMessages="";
}
if(errorCodes==null){
errorCodes="";
}
response.setContentType("text/html");
if(exportTargetWindow.equalsIgnoreCase("_self")){
response.addHeader("Content-Disposition", "attachment;");
} else {
response.addHeader("Content-Disposition", "inline;");
}
PrintWriter out;
try {
out = response.getWriter();
out.print(ErrorHandler.buildResponse(errorCodes,new Boolean(isHTML).booleanValue())) ; out.print(otherMessages);
} catch (IOException e) { }
}
}

web.xml配置

<?xml version="1.0" encoding="UTF-8"?

>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet>
<display-name>FCExporter</display-name>
<servlet-name>FCExporter</servlet-name>
<servlet-class>com.fusioncharts.exporter.servlet.FCExporter</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FCExporter</servlet-name>
<url-pattern>/FCExporter</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>zoomline.html</welcome-file>
</welcome-file-list>
</web-app>

fusionchart实现ZoomLine 源码 破解版 能够导出的更多相关文章

  1. CLion 2016.1.1 下载 附注册激活码 破解版方法

    http://www.520xiazai.com/soft/CLion-2016.1.1.html CLion 2016.1.1 下载 附注册激活码 破解版方法 注册破解方法:在要求输入注册的界面选择 ...

  2. 查看安卓APK源码破解

    原文:查看安卓APK源码破解 工具准备: <1>.android4me的AXMLPrinter2工具 <2>dex2jar <3>jd-gui 工具下载:http: ...

  3. 学生信息管理系统应用ios源码iPad版

    学生信息管理系统应用iPad版,该应用源码比较完整的,而且也很详细,这也是一款学校用的学生和老师管理系统,里面涉及到了很多ipad常用的控件,操作和数据存储. <ignore_js_op> ...

  4. 高仿百度传课应用客户端源码iOS版

    高仿百度传课iOS版,版本号:2.4.1.2 运行环境:xcode6.3  ios8.3 (再往上系统没有测试) 转载请注明出处,不可用于商业用途及不合法用途. 如果你觉得不错,欢迎  star  哦 ...

  5. (国内)完美下载Android源码Ubuntu版

    今天写的文章莫名奇妙的没了,所以再重新写一篇. 首先,为了方便起见,我已经将系统更换成里Ubuntu,因为官方推荐使用这个Linux发行版.先来一张系统的截图: Ubuntu的版本是16.04(推荐用 ...

  6. 别踩白块儿游戏源码Android版

    这个项目有带说明文档,大家可以看看源码附件的说明文档吧,“别踩白块儿”是目前非常火的一款游戏,游戏非常简单刺激.关于具体怎么火法怎么玩我就不多说了,相信看到本文的朋友们都非常地清楚. 什么游戏火,我们 ...

  7. 旅游风景展示应用源码iPad版

    一款iPad旅游风景展示应用源码,一款iPad旅游景区展示应用.效果很炫,左右可以以书本的效果进行翻页,双击左边显示该风景区的信息,双击右边可以显示该风景区的地理位置.<ignore_js_op ...

  8. newsstand杂志阅读应用源码ipad版

    一款newsstand iPad杂志阅读应用源码(newsstand在线下载/动态显示等)可以支持在线下载/动态显示等  ,也是一款newsstand iPad杂志阅读应用源码.运行之后,会在iPad ...

  9. 分享一个难得的YiBo微博客户端应用源码Android版

    今天给大家分享一款,YiBo微博客户端应用源码,这是一款专为Android用户打造的聚合型微博客户端,完美支持新浪微博.腾讯微博.搜狐微博.网易微博和饭否五个微博平台,界面清爽,使用简单轻巧,支持多账 ...

随机推荐

  1. Spring Cloud Config

    Spring Cloud Config provides server and client-side support for externalized configuration in a dist ...

  2. Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity

    Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity ...

  3. 调整系统的inode数量

    inode节点中,记录了文件的类型.大小.权限.所有者.文件连接的数目.创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针. 一般情况不需要特殊配置,如果存放文件很多,需要配置 ...

  4. Windows Azure入门教学系列 (四):使用Blob Storage

    本文将会介绍如何使用Blob Storage.Blob Storage可以看做是云端的文件系统.与桌面操作系统上不同,我们是通过REST API来进行对文件的操作.有关REST API的详细信息,请参 ...

  5. 由href return false 来看阻止默认事件

    很多时候我们都想阻止一个a ?link的href跳转. 1 <a onclick=” return false ;” href=”www. 360 .cn”>click</a> ...

  6. 翻转整数 Reverse digits of a number

    两种方法翻转一个整数.顺序翻转和递归翻转 这里没考虑overflow的情况 递归的作用是使得反向处理.即从递归栈的最低端開始处理.通过绘图可得. 假设是rec(num/10): 12345 1234 ...

  7. 自拉ADSL网线搭建站点server,解决动态IP、无公网IP、80port被封、HTTP被屏蔽的方法

    自己的server搭建站点应用,提供站点服务,能够不用备案,但可能会面对网络限制问题,如动态公网IP.无公网IP.80port被封.HTTP被屏蔽,这些复杂网络情况. 依据本地网络环境,能够针对不同的 ...

  8. Deep Learning深入研究整理学习笔记五

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. C++学习之路—继承与派生(四)拓展与总结

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 1    拓展部分 本节主要由两部分内容组成,分 ...

  10. Linux - Linux系统目录架构

    Linux系统目录架构   Bin: 保存的是二进制可执行文件,也就是我们所敲的那些命令. Boot: 引导目录,整个操作系统的引导启动都是在boot目录下面.最主要的文件是vmLinuz-……,内核 ...