轉(zhuǎn)帖|使用教程|編輯:龔雪|2014-07-31 09:48:37.000|閱讀 422 次
概述:本文為.NET下Highcharts的本地導(dǎo)出環(huán)境安裝教程,需要聯(lián)網(wǎng)使用,已提供相關(guān)Highcharts和.NET文件,三步輕松安裝:1、下載開源的.net導(dǎo)出文件,2、新建虛擬站點(diǎn),3、拷貝。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
由于項(xiàng)目中Highcharts需要內(nèi)網(wǎng)使用,需要本地搭建導(dǎo)出的環(huán)境。下面簡(jiǎn)述下步驟:
1.下載開源的.net導(dǎo)出文件:
2.新建虛擬站點(diǎn),IIS下配置如圖:(注意端口設(shè)定:80端口已經(jīng)用了,就設(shè)定為8081;應(yīng)用池的設(shè)定,僅支持framework3.5以上版本)
3.拷貝下載的壓縮包中的Exporting_Demo_website文件夾下的文件到新站點(diǎn)的目錄下。刪除目錄下的web.config文件,重命名web-dotNET4.0.config為web.config。(不需要Exporting_Demo_website這個(gè)文件夾,文件放在根目錄下即可,否則后面的操作全部要加上這個(gè)路徑)
4.打開站點(diǎn)//localhost:8081/訪問,內(nèi)置一個(gè)Demo,選擇導(dǎo)出,看是否正常。正常即完成。不正常就需要修正了。
訪問Demo時(shí)出現(xiàn)500錯(cuò)誤?
打開IIS管理器,選擇“ISAPI和CGI限制”,里面找到我們上面設(shè)置的framework的版本,設(shè)定為允許。
BUG描述及修復(fù),請(qǐng)參見.NET下Highcharts本地導(dǎo)出圖片問題分析及解決
需要修改的地方是在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; }
注意:復(fù)制上面代碼時(shí),需要在項(xiàng)目中引入相關(guān)的文件,如圖
這里我已經(jīng)生成,沒有環(huán)境的朋友可以直接到這里下載:(下載后直接把Bin目錄下的4個(gè)文件覆蓋掉項(xiàng)目Bin文件夾下的4個(gè)文件)
菜單欄—工具—導(dǎo)入與導(dǎo)出設(shè)置—重置所有設(shè)置—下一步。完成后重新生成,依然無效,只有重啟電腦(我是重啟電腦解決的)。
在你的文檔里面增加設(shè)定,width為必須項(xiàng),否則報(bào)錯(cuò)
exporting: { url: '//localhost:8081/HighchartsExport.axd', filename: 'MyChartX', width: 1200//必選參數(shù) }
注意開啟IIS的寫權(quán)限,因?yàn)?a >Highcharts的導(dǎo)出代碼可能較大,所以導(dǎo)出使用的是上傳文件流的方式,具體可參考exporting.src.js源碼。另外在正式服中配置時(shí)特別注意端口沖突及framework的版本問題(如果選擇4.0以上版本,需要修改web.config,上面有提到),建議先找個(gè)win2003的測(cè)試服試試!
原文:
推薦閱讀:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn