ASP.NET MVC でチャートを表示するには、 System.Web.Helpers にある Chart クラスを使えばいいことが分かった。
ASP.NET MVC でチャートを表示 - present
ここからさらに、チャートを含んだドキュメントを PDF でダウンロードできるようにしたい。 これを実現するには、iTextSharp を使うのが良さそうだ。 iTextSharp では、PDF に画像を埋め込むのはそう難しくない。
using iTextSharp; using iTextSharp.text; using iTextSharp.text.pdf; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.Helpers; using System.Web.Mvc; namespace PdfSample.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult Pdf() { var pdf = CreatePdf(); return File(pdf, "application/pdf", "PdfSample.pdf"); } // PDF(バイナリ)を作成 private byte[] CreatePdf() { using(var document = new Document(PageSize.A4, 20, 20, 20, 20)) using(var stream = new MemoryStream()) using (var writer = PdfWriter.GetInstance(document, stream)) { document.Open(); // テキストを PDF に書き込む document.Add(new Paragraph("PDF Sample")); // レーダーチャート画像を PDF に埋め込む var chart = CreateRadarChart(); var image = Image.GetInstance(chart); document.Add(image); document.Close(); return stream.ToArray(); } } // レーダーチャート画像を作成 private byte[] CreateRadarChart() { var chart = new Chart( width: 400, height: 400, theme: ChartTheme.Blue ); chart.AddTitle("チャートサンプル"); chart.AddSeries( name: "能力", chartType: "Radar", xValue: new[] { "ミート", "パワー", "走力", "肩力", "守備力" }, yValues: new[] { "90", "60", "80", "80", "90" } ); return chart.GetBytes(); } } }
Web ブラウザでアクションを呼び出すと、レーダーチャートが埋め込まれた PDF をダウンロードできる。