You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET服务器端通过Highcharts获取SVG字符串以生成邮件图表?

解决方案

完全可以通过Highcharts.NET在服务器端生成SVG字符串,无需依赖DOM渲染,刚好适配你的需求。以下是具体实现步骤:

1. 安装Highcharts.NET库

通过NuGet安装官方的Highcharts.NET包(如Highcharts,具体包名可根据版本调整),确保项目能引用相关命名空间。

2. 服务器端生成SVG字符串

在WebForms后台代码中,直接构建图表配置(逻辑和客户端Highcharts一致),调用Highcharts.NET的API生成SVG:

using Highcharts;
using Highcharts.Options;

// 构建图表配置
var chart = new Chart
{
    Title = new Title { Text = "上周数据统计图表" },
    XAxis = new XAxis { Categories = new[] { "周一", "周二", "周三", "周四", "周五", "周六", "周日" } },
    YAxis = new YAxis { Title = new YAxisTitle { Text = "数值" } },
    Series = new List<Series>
    {
        new Series
        {
            Name = "业务数据",
            Data = new Data(new object[] { 120, 190, 150, 230, 270, 220, 180 })
        }
    },
    // 禁用交互配置,适配服务器端生成场景
    PlotOptions = new PlotOptions
    {
        Series = new PlotOptionsSeries { EnableMouseTracking = false }
    }
};

// 生成SVG字符串
string svgString = chart.ToSvg();

3. 将SVG转为PDF并发送邮件

拿到SVG字符串后,可使用PDF生成库(如PdfSharp、iTextSharp)转换为PDF文件。以PdfSharp为例,大致逻辑如下:

using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.IO;

PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();

using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
    XSvgImage svgImage = XSvgImage.FromString(svgString);
    gfx.DrawImage(svgImage, 0, 0, page.Width, page.Height);
}

// 将PDF保存到内存流
MemoryStream pdfStream = new MemoryStream();
document.Save(pdfStream);
pdfStream.Position = 0;

// 后续通过SmtpClient发送邮件,将PDF作为附件

4. 实现每周自动触发

可以通过Windows任务计划定期调用应用的特定接口(如ashx处理程序),或者使用Quartz.NET在应用内部实现定时任务,自动执行图表生成、PDF转换和邮件发送逻辑。

内容的提问来源于stack exchange,提问作者narutouzumaki 99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:24:15