public byte[] ProcessHighChartsRequest(HighCharts chart) { if (ExeProcess.HasExited) { if (_keepAlive) { StartServer(); } else { Dispose(); throw new Exception("could not process. Server is no longer running and KeepAlive is set to false."); } } var newGuid = Guid.NewGuid(); var temporaryGraphImageFile = Path.Combine(TemporaryImagesDirectory, $"{newGuid}.png"); var wrapper = new HighChartsRenderServerWrapper() { infile = JsonConvert.SerializeObject(chart.options, Formatting.Indented, _jsonSerializerSettings), constr = "Chart", outfile = temporaryGraphImageFile, callback = chart.callback }; return(PostRequestAndReturnBytesOnSuccess(wrapper, temporaryGraphImageFile)); }
/// <summary> /// 显示折线图 /// </summary> /// <returns></returns> public string OutputLine(HighCharts highCharts) { string result = string.Empty; string urlLine = chartPath + "js\\template\\line.js"; using (StreamReader reader = new StreamReader(urlLine, Encoding.UTF8)) { StringBuilder buffer = new StringBuilder(reader.ReadToEnd()); buffer.Replace("{#title#}", highCharts.Title); buffer.Replace("{#yAxis#}", highCharts.YAxis); buffer.Replace("#categries#", highCharts.XAxis); buffer.Replace("{#series#}", highCharts.SeriesData); buffer.Replace("#tooltip#", highCharts.ToolTip); if (highCharts.Title == "注册人数") { buffer.Replace("#unit#", "个"); //buffer.Replace("#Yunit#", "千个"); buffer.Replace("#Yunit#", "个"); } else { buffer.Replace("#Yunit#", "人"); buffer.Replace("#unit#", "人"); } result = buffer.ToString(); } return(result); }
public byte[] RequestGraph(string format, HighCharts chart) { var postData = chart.GetSerializedData(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(HighChartsRequestUrl); request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; request.Method = "POST"; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(postData); streamWriter.Flush(); streamWriter.Close(); } try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { // Get the stream associated with the response. using (Stream receiveStream = response.GetResponseStream()) { return ReadBytesFromResponse(receiveStream); } } } catch (WebException ex) { StringBuilder builder = new StringBuilder(); builder.Append($"Status:{ex.Status}"); if (ex.Response != null) { // can use ex.Response.Status, .StatusDescription if (ex.Response.ContentLength != 0) { using (var stream = ex.Response.GetResponseStream()) { using (var reader = new StreamReader(stream)) { builder.Append($"\n\n Response: {reader.ReadToEnd()}"); } } } } throw new Exception(builder.ToString(),ex); } }
public byte[] RequestGraph(string format, HighCharts chart) { var postData = chart.GetSerializedData(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(HighChartsRequestUrl); request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; request.Method = "POST"; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(postData); streamWriter.Flush(); streamWriter.Close(); } try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { // Get the stream associated with the response. using (Stream receiveStream = response.GetResponseStream()) { return(ReadBytesFromResponse(receiveStream)); } } } catch (WebException ex) { StringBuilder builder = new StringBuilder(); builder.Append($"Status:{ex.Status}"); if (ex.Response != null) { // can use ex.Response.Status, .StatusDescription if (ex.Response.ContentLength != 0) { using (var stream = ex.Response.GetResponseStream()) { using (var reader = new StreamReader(stream)) { builder.Append($"\n\n Response: {reader.ReadToEnd()}"); } } } } throw new Exception(builder.ToString(), ex); } }
private string ProcessHighChartImageFromExportServer(HighCharts highCharts, string ChartTitle = "Chart Title") { try { var chartImageName = string.Format(@"{0}.jpeg", Guid.NewGuid()); string outputFile = HttpContext.Server.MapPath("~/ReportResource/" + chartImageName); var client = new HighchartsClient("http://export.highcharts.com/"); var infile = JsonConvert.SerializeObject(highCharts.options, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); JObject jo = new JObject(); jo = JObject.Parse(infile); string title = @"{""text"":" + '"' + ChartTitle + '"' + "}"; jo.Add("title", JObject.Parse(title)); JObject header = (JObject)jo.SelectToken("chart"); header.Property("marginRight").Remove(); header.Property("marginLeft").Remove(); //jo.Property("marginLeft").Remove(); infile = jo.ToString(); //System.IO.File.WriteAllText(HttpContext.Current.Server.MapPath("~/Phantom/jsondata.json"), infile); Thread.Sleep(14000); var res = client.GetChartImageLinkFromOptionsAsync(infile).Result; using (WebClient webClient = new WebClient()) { webClient.DownloadFile(new Uri(res), outputFile); } //logger.Error(chartImageName + " Image Generated!"); return(chartImageName); } catch (Exception ex) { //logger.Error(ex.InnerException + "Process Image--"); throw; } }
public string GetFromInternalServer(HighCharts highChartsData) { try { //using (HighChartsRenderServer server = new HighChartsRenderServer()) using (HighChartsRenderServer server = new HighChartsRenderServer(10000, 4, "127.0.0.1", "3003", true, null)) { // some highcharte render server needs some times to startup. that's why set a sleep. Thread.Sleep(1000); var response = server.ProcessHighChartsRequest(highChartsData); var chartImageName = string.Format(@"{0}.png", Guid.NewGuid()); string outputFile = HttpContext.Server.MapPath("~/ReportResource/" + chartImageName); //string retOutputFile = portalUrl + "ReportResource/HighchartImage/" + chartImageName; //File.WriteAllBytes(outputFile, response); return(chartImageName); } } catch (Exception ex) { throw; } }
public byte[] ProcessHighChartsRequest(HighCharts chart) { if (ExeProcess.HasExited) { if (_keepAlive) { StartServer(); } else { Dispose(); throw new Exception("could not process. Server is no longer running and KeepAlive is set to false."); } } var newGuid = Guid.NewGuid(); var temporaryGraphImageFile = Path.Combine(TemporaryImagesDirectory, $"{newGuid}.png"); var wrapper = new HighChartsRenderServerWrapper() { infile = JsonConvert.SerializeObject(chart.options, Formatting.Indented, _jsonSerializerSettings), constr = "Chart", outfile = temporaryGraphImageFile, callback = chart.callback }; return PostRequestAndReturnBytesOnSuccess(wrapper, temporaryGraphImageFile); }