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");
}
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();
document.Add(new Paragraph("PDF Sample"));
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 をダウンロードできる。