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

zoomline.html源码

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>FusionCharts Free Documentation</title>
  6. <!-- 脚本区域 start -->
  7. <script type="text/javascript" src="js/FusionCharts.js"></script>
  8. <script type="text/javascript" src="js/FusionChartsExportComponent.js"></script>
  9. <!-- 脚本区域 end -->
  10. <script type="text/javascript">
  11. //导出图片调用的方法
  12. function startExport(){
  13. var chart = getChartFromId("myFusionExport"); //生成的FusionCharts图表本身的标识
  14. if (chart.hasRendered()){
  15. chart.exportChart();
  16. }else{
  17. alert("Please wait for the chart to finish rendering, before you can invoke exporting");
  18. }
  19. }
  20. </script>
  21. </head>
  22. <table width="98%" border="0" cellspacing="0" cellpadding="3" align="center">
  23. <tr>
  24. <td valign="top" class="text" align="center">
  25. <div id="myFusion" align="center">
  26. FusionCharts.
  27. </div>
  28. <script type="text/javascript">
  29. var chart = new FusionCharts("charts/ZoomLine.swf", "myFusionExport", "790", "450");
  30. chart.setDataURL("data/zoomLine.xml");
  31. chart.render("myFusion");
  32. </script>
  33. </td>
  34. </tr>
  35. <input type='button' value='导出FusionCharts图片' onClick="startExport();" />
  36. </table>
  37. </html>

zoomLine.xml源码

  1. <chart
  2. palette="1"
  3. showLabels="0"
  4. showBorder="1"
  5. chartLeftMargin="10"
  6. chartRightMargin="5"
  7. chartTopMargin="15"
  8. chartBottomMargin="15"
  9. exportEnabled="1"
  10. exportAtClient="0"
  11. exportHandler="FCExporter"
  12. showExportDialog="1"
  13. animation="0"
  14. exportFileName="fusioncharts"
  15. exportDialogMessage="正在导出。请稍候..."
  16. rotateLabels="0"
  17. DIVLINES="Blur"
  18. DATATOOLTIP="0x004E98"
  19. showValues="0"
  20. allowPinMode="1"
  21. showVDivLines="1"
  22. drawToolbarButtons="1"
  23. lineThickness="1"
  24. oolBarBtnHPadding="0"
  25. mouseCursorColor="#FF0000"
  26. toolTipBarColor="FF0000"
  27. pinPaneBgColor="#FFFFFF"
  28. lineColor="#0000FF"
  29. divLineColor="#FF0000"
  30. background="#0000FF"
  31. bgColor="#FFFFFF"
  32. scrollColor="#FFFFFF"
  33. canvasBorderColor="#FF0000"
  34. toolbarButtonColor="FFFFFF"
  35. btnZoomOutTitle=" "
  36. zoomOutMenuItemLabel=" "
  37. btnResetChartTitle="缩小"
  38. btnSwitchtoZoomModeTitle="切换Pin模式"
  39. btnSwitchToPinModeTitle="切换Zoom模式"
  40. showToolBarButtonTooltext="0"
  41. toolbarButtonFontColor="000000"
  42. >
  43. <categories>
  44. <category name="02-03 07:00:05" />
  45. <category name="02-03 06:59:35" />
  46. <category name="02-03 06:59:05" />
  47. <category name="02-03 06:58:35" />
  48. <category name="02-03 06:58:04" />
  49. <category name="02-03 06:57:34" />
  50. <category name="02-03 06:57:04" />
  51. <category name="02-03 06:56:34" />
  52. <category name="02-03 06:56:04" />
  53. <category name="02-03 06:55:33" />
  54. </categories>
  55. <dataset>
  56. <set value="300" />
  57. <set value="349" />
  58. <set value="627" />
  59. <set value="445" />
  60. <set value="623" />
  61. <set value="575" />
  62. <set value="567" />
  63. <set value="576" />
  64. <set value="745" />
  65. <set value="409" />
  66. </dataset>
  67. </chart>

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

FCExporterFormat.java源码

  1. package com.fusioncharts.exporter.resources;
  2. import javax.servlet.http.HttpServletResponse;
  3. import com.fusioncharts.exporter.beans.ExportBean;
  4.  
  5. public abstract class FCExporterFormat {
  6.  
  7. abstract public Object exportProcessor(ExportBean exportBean);
  8.  
  9. abstract public String exportOutput(Object exportObj,
  10. HttpServletResponse response);
  11. }

FCExporterIMG.java源码

  1. package com.fusioncharts.exporter.resources;
  2.  
  3. import java.awt.image.BufferedImage;
  4. import java.io.IOException;
  5. import java.io.OutputStream;
  6. import java.io.PrintWriter;
  7. import javax.servlet.http.HttpServletResponse;
  8. import com.fusioncharts.exporter.ErrorHandler;
  9. import com.fusioncharts.exporter.FusionChartsExportHelper;
  10. import com.fusioncharts.exporter.beans.ChartMetadata;
  11. import com.fusioncharts.exporter.beans.ExportBean;
  12. import com.fusioncharts.exporter.encoders.BasicEncoder;
  13. import com.fusioncharts.exporter.encoders.JPEGEncoder;
  14. import com.fusioncharts.exporter.generators.ImageGenerator;
  15.  
  16. public class FCExporterIMG extends FCExporterFormat {
  17.  
  18. private ExportBean exportBean = null;
  19.  
  20. public String exportOutput(Object exportObj, HttpServletResponse response) {
  21. String action = (String)exportBean.getExportParameterValue("exportaction");
  22. String exportFormat = (String)exportBean.getExportParameterValue("exportformat");
  23. String exportTargetWindow = (String)exportBean.getExportParameterValue("exporttargetwindow");
  24.  
  25. String fileNameWithoutExt = (String)exportBean.getExportParameterValue("exportfilename");
  26. String extension = FusionChartsExportHelper.getExtensionFor(exportFormat.toLowerCase());;
  27. String fileName = fileNameWithoutExt+"."+ extension;
  28.  
  29. StringBuffer err_warn_Codes = new StringBuffer();
  30.  
  31. BufferedImage chartImage = (BufferedImage)exportObj;
  32. boolean isHTML = false;
  33. if(action.equals("download"))
  34. isHTML=true;
  35.  
  36. String noticeMessage = "";
  37. String meta_values= exportBean.getMetadataAsQueryString(null,false,isHTML);
  38.  
  39. if(action.equals("download")){
  40. try {
  41. response.setContentType(FusionChartsExportHelper.getMimeTypeFor(exportFormat.toLowerCase()));
  42.  
  43. OutputStream os = response.getOutputStream();
  44.  
  45. if(exportTargetWindow.equalsIgnoreCase("_self")){
  46. response.addHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
  47. //response.addHeader("Content-length",""+ios.length());
  48. } else {
  49. response.addHeader("Content-Disposition", "inline; filename=\""+fileName+"\"");
  50. }
  51. if( exportFormat.toLowerCase().equalsIgnoreCase("jpg") || exportFormat.toLowerCase().equalsIgnoreCase("jpeg")){
  52. JPEGEncoder jpegEncoder = new JPEGEncoder();
  53. try {
  54. jpegEncoder.encode(chartImage,os);
  55. os.flush();
  56. }catch(Throwable e){
  57. //Unable to encode the buffered image
  58. System.out.println("Unable to (JPEG) encode the buffered image");
  59. err_warn_Codes.append("E516,");
  60. //os.flush();
  61. // Note forward will not work in this case, as the output stream has already been opened
  62. // Hence we have to output the error directly.
  63. meta_values =exportBean.getMetadataAsQueryString(null,true,isHTML);
  64. // Reset the response to set new content type and use out instead of outputstream
  65. response.reset();
  66. response.setContentType("text/html");
  67. PrintWriter out = response.getWriter();
  68. out.print(meta_values+noticeMessage+ErrorHandler.buildResponse(err_warn_Codes.toString(),isHTML));
  69. return null;
  70. }
  71. chartImage=null;
  72. } else {
  73.  
  74. BasicEncoder basicEncoder = new BasicEncoder();
  75. try {
  76. basicEncoder.encode(chartImage,os,1F,exportFormat.toLowerCase());
  77. os.flush();
  78. }catch(Throwable e){
  79. System.out.println("Unable to encode the buffered image");
  80. err_warn_Codes.append("E516,");
  81. //os.flush();
  82. // Note forward will not work in this case, as the output stream has already been opened
  83. // Hence we have to output the error directly.
  84. meta_values =exportBean.getMetadataAsQueryString(null,true,isHTML);
  85. // Reset the response to set new content type and use out instead of outputstream
  86. response.reset();
  87. response.setContentType("text/html");
  88. PrintWriter out = response.getWriter();
  89. out.print(meta_values+noticeMessage+ErrorHandler.buildResponse(err_warn_Codes.toString(),isHTML));
  90. return null;
  91. }
  92. chartImage=null;
  93. }
  94.  
  95. } catch (IOException e) {
  96. e.printStackTrace();
  97. }
  98. }
  99.  
  100. if(err_warn_Codes.indexOf("E") != -1) {
  101. meta_values =exportBean.getMetadataAsQueryString(null,true,isHTML);
  102. PrintWriter out;
  103. try {
  104. out = response.getWriter();
  105. out.print(meta_values+noticeMessage+"&statusCode=1&statusMessage=successful");
  106. } catch (IOException e) {
  107. e.printStackTrace();
  108. }
  109. }
  110. return null;
  111. }
  112.  
  113. public Object exportProcessor(ExportBean pExportBean) {
  114. exportBean = pExportBean;
  115. String stream = (String)exportBean.getStream();
  116. ChartMetadata metadata= exportBean.getMetadata();
  117. BufferedImage chartImage = ImageGenerator.getChartImage(stream,metadata);
  118.  
  119. return chartImage;
  120. }
  121.  
  122. }

FCExporter.java源码

  1. package com.fusioncharts.exporter.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import javax.servlet.ServletConfig;
  6. import javax.servlet.ServletContext;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import com.fusioncharts.exporter.ErrorHandler;
  12. import com.fusioncharts.exporter.FusionChartsExportHelper;
  13. import com.fusioncharts.exporter.beans.ExportBean;
  14. import com.fusioncharts.exporter.resources.FCExporterFormat;
  15.  
  16. public class FCExporter extends HttpServlet {
  17.  
  18. public FCExporter() {
  19. super();
  20. }
  21.  
  22. public void init(ServletConfig config) throws ServletException {
  23. super.init(config);
  24. }
  25.  
  26. public void destroy() {
  27. super.destroy();
  28. }
  29.  
  30. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  31. doPost(request,response);
  32. }
  33.  
  34. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  35. ServletContext sc = getServletContext();
  36. String WEB_ROOT_PATH = sc.getRealPath("/");
  37. ExportBean localExportBean = FusionChartsExportHelper.parseExportRequestStream(request);
  38.  
  39. String exportFormat = (String)localExportBean.getExportParameterValue("exportformat");
  40. String exportTargetWindow = (String)localExportBean.getExportParameterValue("exporttargetwindow");
  41. StringBuffer err_warn_Codes = new StringBuffer();
  42. if (localExportBean.getMetadata().getWidth() == -1 ||
  43. localExportBean.getMetadata().getHeight() == -1 ||
  44. localExportBean.getMetadata().getWidth() == 0 ||
  45. localExportBean.getMetadata().getHeight() == 0 ) {
  46.  
  47. //If Width/Height parameter is not sent, the ChartMetadata will have width/height as -1
  48. //Raise Error E101 - Width/Height not found
  49. err_warn_Codes.append("E101,");
  50. }
  51.  
  52. if (localExportBean.getMetadata().getBgColor() == null) {
  53. //Background color not available
  54. err_warn_Codes.append("W513,");
  55. }
  56.  
  57. if (localExportBean.getStream() == null ) {
  58.  
  59. //If image data not available
  60. //Raise Error E100
  61. err_warn_Codes.append("E100,");
  62. }
  63. String exportAction = (String)localExportBean.getExportParameterValue("exportaction");
  64. boolean isHTML = false;
  65. if(exportAction.equals("download"))
  66. isHTML=true;
  67.  
  68. if(!exportAction.equals("download")) {
  69. String fileNameWithoutExt = (String)localExportBean.getExportParameterValue("exportfilename");
  70. String extension = FusionChartsExportHelper.getExtensionFor(exportFormat.toLowerCase());;
  71. String fileName = fileNameWithoutExt+"."+ extension;
  72. err_warn_Codes.append(ErrorHandler.checkServerSaveStatus(WEB_ROOT_PATH,fileName));
  73. }
  74. String pathToWebAppRoot = getServletContext().getRealPath("/");
  75. localExportBean.addExportParameter("webapproot", pathToWebAppRoot);
  76. String meta_values= localExportBean.getMetadataAsQueryString(null,true,isHTML);
  77. if(err_warn_Codes.indexOf("E") != -1) {
  78. // There are errors - forward to error page
  79. writeError(response,""+isHTML,err_warn_Codes.toString(),meta_values,exportTargetWindow);
  80.  
  81. } else {
  82. // get the exporter for this format
  83. //String path = FusionChartsExportHelper.getExporterFilePath(exportFormat).replace(" ","");
  84. // gives with .jsp extension, let us remove the extension - this is a work-around until next release, where Servlets will also be supported
  85. //int indexOfDot = path.lastIndexOf(".");
  86. //String exporterClassName = path.substring(0, indexOfDot);
  87. try {
  88. //Class exporterClass = Class.forName(exporterClassName);
  89. Class exporterClass = Class.forName("com.fusioncharts.exporter.resources.FCExporterIMG");
  90. FCExporterFormat fcExporter = (FCExporterFormat)exporterClass.newInstance();
  91. Object exportObject = fcExporter.exportProcessor(localExportBean);
  92. String status= fcExporter.exportOutput(exportObject, response);
  93. } catch (ClassNotFoundException e) {
  94. err_warn_Codes.append("E404");
  95. writeError(response,""+isHTML,err_warn_Codes.toString(),meta_values,exportTargetWindow);
  96. } catch (InstantiationException e) {
  97. err_warn_Codes.append("E404");
  98. writeError(response,""+isHTML,err_warn_Codes.toString(),meta_values,exportTargetWindow);
  99. } catch (IllegalAccessException e) {
  100. err_warn_Codes.append("E404");
  101. writeError(response,""+isHTML,err_warn_Codes.toString(),meta_values,exportTargetWindow);
  102. }
  103. }
  104. }
  105. private void writeError(HttpServletResponse response, String isHTML, String errorCodes, String otherMessages, String exportTargetWindow) {
  106. if(isHTML==null){
  107. isHTML = "true";
  108. }
  109. if(otherMessages==null){
  110. otherMessages="";
  111. }
  112. if(errorCodes==null){
  113. errorCodes="";
  114. }
  115. response.setContentType("text/html");
  116. if(exportTargetWindow.equalsIgnoreCase("_self")){
  117. response.addHeader("Content-Disposition", "attachment;");
  118. } else {
  119. response.addHeader("Content-Disposition", "inline;");
  120. }
  121. PrintWriter out;
  122. try {
  123. out = response.getWriter();
  124. out.print(ErrorHandler.buildResponse(errorCodes,new Boolean(isHTML).booleanValue())) ;
  125.  
  126. out.print(otherMessages);
  127. } catch (IOException e) {
  128.  
  129. }
  130. }
  131. }

web.xml配置

  1. <?xml version="1.0" encoding="UTF-8"?
  2.  
  3. >
  4. <web-app version="2.4"
  5. xmlns="http://java.sun.com/xml/ns/j2ee"
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  8. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  9.  
  10. <servlet>
  11. <display-name>FCExporter</display-name>
  12. <servlet-name>FCExporter</servlet-name>
  13. <servlet-class>com.fusioncharts.exporter.servlet.FCExporter</servlet-class>
  14. </servlet>
  15. <servlet-mapping>
  16. <servlet-name>FCExporter</servlet-name>
  17. <url-pattern>/FCExporter</url-pattern>
  18. </servlet-mapping>
  19. <welcome-file-list>
  20. <welcome-file>zoomline.html</welcome-file>
  21. </welcome-file-list>
  22. </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. 流行python服务器框架

    流行python服务器框架   1.tonardo---- 多并发.轻量级应用, “非阻塞”的web 容器.类似tomcat.这个大家太熟悉了,就不多说了. 2.Twisted---- Twisted ...

  2. Java Thread 那些事

    这篇文章被压在草稿箱许久,最近公司内部的技术社区有同学贴出了几篇分享 Java线程的文章,发觉有很多概念没有讲清楚,所以花点时间继续撰写,便有了这篇博文. 本文只聚焦 JVM 层面的线程模型,不考虑和 ...

  3. MFC类中获得其它类指针

    当用VC++的Application Wizard生成除了CDialog Basiced以外的应用程序时,将自动产生视图类.文档类.主帧窗口类.应用程序类等等.一般来说,程序的核心数据及操作在文档类中 ...

  4. Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法

    Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx" ...

  5. Beaker 1.6.4 : Python Package Index

    Beaker 1.6.4 : Python Package Index Beaker 1.6.4 Download Beaker-1.6.4.tar.gz A Session and Caching ...

  6. android设置背景图片透明

    设置Activiyt为透明可以在Activity中引用系统透明主题android:theme="@android:style/Theme.Translucent" 设置背景图片透明 ...

  7. jquery如何在加载完iframe的内容后才进行下一步操作

    为iframe添加onload事件 ie使用attachEvent("onload",function(){}) firefox.chrome使用addEventListener( ...

  8. 优化Java堆大小5温馨提示

    总结:Java没有足够的堆大小可能会导致性能非常大的影响,这无疑将给予必要的程序,并不能带来麻烦.本文总结了影响Java居前五位的能力不足,并整齐地叠优化? 笔者Pierre有一个10高级系统架构师有 ...

  9. 使用datapump 导出导入同义词(export and import synonym using datapump)

    对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用dbms_metadata.get_ddl来提取同义词的定义脚本.然而在使用传统的exp或是datapump expd ...

  10. JS - 全屏滚动

    下载地址:http://www.lanrentuku.com/js/quanping-1141.html