轉帖|使用教程|編輯:龔雪|2014-07-31 09:48:37.000|閱讀 422 次
概述:本文為.NET下Highcharts的本地導出環境安裝教程,需要聯網使用,已提供相關Highcharts和.NET文件,三步輕松安裝:1、下載開源的.net導出文件,2、新建虛擬站點,3、拷貝。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
由于項目中Highcharts需要內網使用,需要本地搭建導出的環境。下面簡述下步驟:
1.下載開源的.net導出文件:
2.新建虛擬站點,IIS下配置如圖:(注意端口設定:80端口已經用了,就設定為8081;應用池的設定,僅支持framework3.5以上版本)
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描述及修復,請參見.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; }
注意:復制上面代碼時,需要在項目中引入相關的文件,如圖
這里我已經生成,沒有環境的朋友可以直接到這里下載:(下載后直接把Bin目錄下的4個文件覆蓋掉項目Bin文件夾下的4個文件)
菜單欄—工具—導入與導出設置—重置所有設置—下一步。完成后重新生成,依然無效,只有重啟電腦(我是重啟電腦解決的)。
在你的文檔里面增加設定,width為必須項,否則報錯
exporting: { url: '//localhost:8081/HighchartsExport.axd', filename: 'MyChartX', width: 1200//必選參數 }
注意開啟IIS的寫權限,因為Highcharts的導出代碼可能較大,所以導出使用的是上傳文件流的方式,具體可參考exporting.src.js源碼。另外在正式服中配置時特別注意端口沖突及framework的版本問題(如果選擇4.0以上版本,需要修改web.config,上面有提到),建議先找個win2003的測試服試試!
原文:
推薦閱讀:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn