Example #1
0
        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));
        }
Example #2
0
    /// <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);
            }
        }
Example #5
0
        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;
            }
        }
Example #6
0
        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);
        }