彩票走势图

.NET下Highcharts的本地导出环境安装教程

转帖|使用教程|编辑:龚雪|2014-07-31 09:48:37.000|阅读 384 次

概述:本文为.NET下Highcharts的本地导出环境安装教程,需要联网使用,已提供相关Highcharts和.NET文件,三步轻松安装:1、下载开源的.net导出文件,2、新建虚拟站点,3、拷贝。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

由于项目中Highcharts需要内网使用,需要本地搭建导出的环境。下面简述下步骤:

1.下载开源的.net导出文件:

2.新建虚拟站点,IIS下配置如图:(注意端口设定:80端口已经用了,就设定为8081;应用池的设定,仅支持framework3.5以上版本)

.net下highcharts本地导出图片问题修复

3.拷贝下载的压缩包中的Exporting_Demo_website文件夹下的文件到新站点的目录下。删除目录下的web.config文件,重命名web-dotNET4.0.config为web.config。(不需要Exporting_Demo_website这个文件夹,文件放在根目录下即可,否则后面的操作全部要加上这个路径)

4.打开站点//localhost:8081/访问,内置一个Demo,选择导出,看是否正常。正常即完成。不正常就需要修正了。

访问Demo时出现500错误?

打开IIS管理器,选择“ISAPI和CGI限制”,里面找到我们上面设置的framework的版本,设定为允许。

关于未选中的数据线导出时依然显示的BUG

BUG描述及修复,请参见.NET下Highcharts本地导出图片问题分析及解决

需要修改的地方是在Exporter.cs的CreateSvgDocument方法

private SvgDocument CreateSvgDocument()
    {
      SvgDocument svgDoc;

      XmlDocument xml = new XmlDocument();
      xml.LoadXml(this.Svg);
      XmlNodeList nodeListAllg = xml.GetElementsByTagName("g");
      Dictionary<int, XmlNode[,]> dic = new Dictionary<int, XmlNode[,]>();
      int i = 0;
      foreach (XmlNode xNod in nodeListAllg)
      {
          i++;
          XmlNode xmlvisibility = xNod.Attributes.GetNamedItem("class");
          if (xmlvisibility != null && xmlvisibility.Value == "highcharts-series-group")
          {
              foreach (XmlNode xNod2 in xNod.ChildNodes)
              {
                  i++;
                  XmlNode xmlvisibility1 = xNod2.Attributes.GetNamedItem("visibility");
                  if (xmlvisibility1 != null && xmlvisibility1.Value == "hidden")
                  {
                      XmlNode[,] xmln = new XmlNode[1, 2];
                      xmln[0, 0] = xNod;
                      xmln[0, 1] = xNod2;
                      dic.Add(i, xmln);
                  }
              }
          }
          else if (xmlvisibility != null && xmlvisibility.Value == "highcharts-tooltip")
          {
              XmlNode[,] xmln = new XmlNode[1, 2];
              xmln[0, 0] = xml.FirstChild;
              xmln[0, 1] = xNod;
              dic.Add(i, xmln);
          }
      }
      foreach (KeyValuePair<int, XmlNode[,]> a in dic)
      {
          a.Value[0, 0].RemoveChild(a.Value[0, 1]);
      }

      this.Svg = xml.OuterXml;

      // Create a MemoryStream from SVG string.
      using (MemoryStream streamSvg = new MemoryStream(
        Encoding.UTF8.GetBytes(this.Svg)))
      {
        // Create and return SvgDocument from stream.
        svgDoc = SvgDocument.Open(streamSvg);
      }

      // Scale SVG document to requested width.
      svgDoc.Transforms = new SvgTransformCollection();
      float scalar = (float)this.Width / (float)svgDoc.Width;
      svgDoc.Transforms.Add(new SvgScale(scalar, scalar));
      svgDoc.Width = new SvgUnit(svgDoc.Width.Type, svgDoc.Width * scalar);
      svgDoc.Height = new SvgUnit(svgDoc.Height.Type, svgDoc.Height * scalar);

      return svgDoc;
    }

注意:复制上面代码时,需要在项目中引入相关的文件,如图

highcharts

这里我已经生成,没有环境的朋友可以直接到这里下载:(下载后直接把Bin目录下的4个文件覆盖掉项目Bin文件夹下的4个文件)

生成时出现“不是标准win32文件”

菜单栏&mdash;工具—导入与导出设置—重置所有设置—下一步。完成后重新生成,依然无效,只有重启电脑(我是重启电脑解决的)。

外部调用地址

在你的文档里面增加设定,width为必须项,否则报错

exporting: {
                url: '//localhost:8081/HighchartsExport.axd',
                filename: 'MyChartX',
                width: 1200//必选参数
            }

win2003 server配置时出现500错误

注意开启IIS的写权限,因为Highcharts的导出代码可能较大,所以导出使用的是上传文件流的方式,具体可参考exporting.src.js源码。另外在正式服中配置时特别注意端口冲突及framework的版本问题(如果选择4.0以上版本,需要修改web.config,上面有提到),建议先找个win2003的测试服试试!

原文:

推荐阅读:


标签:JavaScript HTML5图表.NEThighcharts

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP