需要将 ej2 图表从 syncfusion 导出到指定路径。
Angular8 UI 端的 HTML 代码;
<ejs-chart style='display:block;' [primaryXAxis]='primaryXAxis' [primaryYAxis]='primaryYAxis' [title]='title' [chartArea]='chartArea'>
<e-series-collection>
<e-series [dataSource]='data' type='Column' xName='x' yName='y' width=2>
</e-series>
</e-series-collection>
</ejs-chart>
Angular8客户端的TS文件代码;
this.chart.exportModule.export('PNG', 'chart');
此导出似乎没有选项来指定需要保存图表的位置。有没有办法实现它?如果不可能,有没有办法将此图表对象传递到 .NET Core 服务器端并从那里保存到指定位置?
我试图从客户端获取图表的数据 URL 并将其传递到服务器端并保存在那里。正在保存文件,但其中没有图表。
引用此链接以获取 dataURL,Sample 以获取 dataURl。
这是放置在服务器端以从客户端获取数据的代码。但是,我不确定如何在这里获取ChartModel。
// To specify corresponding folder
static string path = "D:\\";
// To export chart image in the specified folder
public void ExportChart(string Data, string ChartModel)
{
ChartProperties obj = ConvertChartObject(ChartModel);
string type = obj.ExportSettings.Type.ToString().ToLower();
string fileName = obj.ExportSettings.FileName;
string orientation = obj.ExportSettings.Orientation.ToString();
Data = Data.Remove(0, Data.IndexOf(',') + 1);
MemoryStream stream = new MemoryStream(Convert.FromBase64String(Data));
using (FileStream fs = new FileStream(path + "CoreChart.png", FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
byte[] data = Convert.FromBase64String(Data);
bw.Write(data);
bw.Dispose();
}
}
}
// To create chart properties
private ChartProperties ConvertChartObject(string ChartModel)
{
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
ChartProperties chartProp = new ChartProperties();
chartProp = JsonConvert.DeserializeObject<ChartProperties>(ChartModel, settings);
return chartProp;
}