Highcharts 二种导出方式

HightCharts 导出资源放在 http://export.highcharts.com/ 这个服务器上面,如果想控制导出的内容还是比较麻烦的。

有的时候希望把多张图片打包成一个PDF,或者说在PDF追加点文字。

2种方法介绍

1.webconfig 追加 httpHandlers。每次提交前走HighchartsExport.axd这里过一把。源代码下载

    <system.web>
        <httpHandlers>
            <add verb="POST" path="HighchartsExport.axd" type="Tek4.Highcharts.Exporting.HttpHandler, Tek4.Highcharts.Exporting"/>
        </httpHandlers>
        <compilation debug="true"/>
  </system.web>

2.在js里面post请求
 
    <script>
        function download() {
            var chart = $(‘#container‘).highcharts()
            svg = chart.getSVG();

            $.ajax({
                async: true,
                url: ‘HighchartsExport.axd‘,
                type: ‘post‘,
                data: { "svg": svg },
                success: function (data) {
                    d = data;
                }
            });

        }
    </script>



internal static void ProcessExportRequest(HttpContext context)
{
  if (context != null &&
    context.Request != null &&
    context.Response != null &&
    context.Request.HttpMethod == "POST")
  {
    HttpRequest request = context.Request;

    // Get HTTP POST form variables, ensuring they are not null.
    string filename = request.Form["filename"];
    string type = request.Form["type"];
    int width = 0;
    //这里可以得到svg 图片
    string svg = request.Form["svg"];

    if (filename != null &&
      type != null &&
      Int32.TryParse(request.Form["width"], out width) &&
      svg != null)
    {
      // Create a new chart export object using form variables.
      Exporter export = new Exporter(filename, type, width, svg);

      // Write the exported chart to the HTTP Response object.
      export.WriteToHttpResponse(context.Response);

      // Short-circuit this ASP.NET request and end. Short-circuiting
      // prevents other modules from adding/interfering with the output.
      HttpContext.Current.ApplicationInstance.CompleteRequest();
      context.Response.End();
    }
  }
}
时间: 2024-11-05 16:03:23

Highcharts 二种导出方式的相关文章

django之创建第7-5-第二种传值方式(time/1232/xiaodneg)

1.修改views文件 def foo(request,myID,myName): t = loader.get_template("foo.html") user = {"today": datetime.datetime.now(),"id":myID,"name":myName} c = Context(user) return HttpResponse(t.render(c)) 2.创建foo.html文件 <!

Java POI 两种导出方式

这里面包含了模板导出方法和自定义模板进行导出 package jp.co.syspro.poo.action.hibikoyou; import java.io.ByteArrayOutputStream; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOExce

redis的二种启动方式

.直接启动  进入redis根目录,执行命令:  #加上'&'号使redis以后台程序方式运行 1 ./redis-server & 2.通过指定配置文件启动  可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf  进入redis根目录,输入命令: 1 ./redis-server /etc/redis/6379.conf #如果更改了端口,使用`redis-cli`客户端连接时,也需要指定端口,例如: 1 redis-cli -p 6380 原文地址

c#中数据从数据库到客户端主要几种的导出方式(导出到excel,导出到word)

本人大学新手一枚,在大学工作室学习asp.net,从中积累的一些小的知识和大家一起分享与讨论. 今天的主题是导出数据.现在从服务器端到客户端数据的几种主要方式有:web页面呈现(各种view..),导出到excel,导出到word,导出到报表等.我今天讲下我实际开发项目中用到的导出到excel和导出到word. 一.导出到excel 主要有以下两种方法: (1)用数据展示控件如GridView或者ListView等,先把需要导出的数据展示在web页面上,然后再利用Response的另存为功能,将

014-HQL中级4-Hive中的三种不同的数据导出方式介绍

根据导出的地方不一样,将这些方式分为三种:(1).导出到本地文件系统:(2).导出到HDFS中:(3).导出到Hive的另一个表中.为了避免单纯的文字,我将一步一步地用命令进行说明. 一.导出到本地文件系统 hive> insert overwrite local directory '/home/wyp/wyp' > select * from wyp; 复制代码 这条HQL的执行需要启用Mapreduce完成,运行完这条语句之后,将会在本地文件系统的/home/wyp/wyp目录下生成文件

Unity3d Android SDK接入解析(二)Unity3d Android SDK的设计与两种接入方式

一.前言 上篇说清楚了Unity和Android调用的方式,但很多实际接入的部分没有讲的很详细,因为重头在这篇,会详细讲述具体接入Android SDK的方式,和怎么去做一个方便Unity接入的SDK. 传送门: 前篇:Unity3d 与 Android之间的互相调用 http://blog.csdn.net/yang8456211/article/details/51331358 后篇:Unity3d Android SDK接入解析(三)接入Android Library的理解 http://

Hive几种数据导出方式

Hive几种数据导出方式 今天我们再谈谈Hive中的几种不同的数据导出方式.可以根据导出的地方不一样,将这些方式分为三种: (1).导出到本地文件系统: (2).导出到HDFS中: (3).导出到Hive的另一个表中.为了避免单纯的文字,我将一步一步地用命令进行说明. 一.导出到本地文件系统 hive> insert overwrite local directory '/home/wyp/wyp' > select * from wyp; 这条HQL的执行需要启用Mapreduce完成,运行

UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现

UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现 测试数据 java代码 1 package com.hzf.spark.study; 2 3 import java.util.Map; 4 import java.util.Set; 5 6 import org.apache.spark.SparkConf; 7 import org.apache.spark.api.java.JavaPairRDD; 8 import org.apache.s

二、C++迭代器的两种实现方式 (Range for和C#、Java中的foreach)

一.迭代器概述 这个标题其实有点"标题党"的含义,因为C++在标准库中的实现迭代器的方式只有一种,也就是为类定义begin()和end()函数,C++11增加了range for语句,可以用来遍历迭代器中的元素.实现迭代器的第二种方式,就是用C++模拟C#和Java中的迭代器模式,并且我们可以定义出自己的foreach语句.除此之外,迭代器可能还有很多种实现的方法,各个库也会多自己的迭代器的实现有所定义,在这里只要明白迭代器的本质意义即可. 迭代器,也称作游标,是一种设计模式,我们可以