ASP.NET MVC画面イメージをPDFにする。
ASP.NET MVCの画面をPDF化する方法
ASP.NET MVCでの帳票関連で使えるのがないか調べている内に見つかった。もので、画面イメージをそのままPDF化出来るものがあったので、メモる。
TuesPechkin
wkhtmltopdfをベースにラッピングしている模様。注意としてwkhtmltopdfがAzureでは動作しないみたいで、Azureで使用するなら別の方法を考えた方がいいかも GitHub - tuespetre/TuesPechkin: A .NET wrapper for the wkhtmltopdf library with an object-oriented API.
Nuget
Nugetからインストールする。Win32と64がそれぞれあるけど、AnyCPUで問題なかった。
PM> Install-Package TuesPechkin.Wkhtmltox.AnyCPU
Controller
pdf化したい画面をUrlにし、HtmlToPdfDocumentに渡せば基本簡単に出来ちゃう感じです。 ASP.NET MVCでやっているが、MVCは特に関係なさそう。
using TuesPechkin; public class HomeController : Controller { public ActionResult ToPdfPage() { var helper = new UrlHelper(ControllerContext.RequestContext); var indexUrl = helper.Action("Index", "Home", null, Request.Url.Scheme); var document = new HtmlToPdfDocument() { GlobalSettings = { ProduceOutline = true, DocumentTitle = "PDF Sample", PaperSize = PaperKind.A4, Margins = { All = 1.375, Unit = Unit.Centimeters } }, Objects = { new ObjectSettings() { PageUrl = indexUrl, }, } }; var converter = new StandardConverter( new PdfToolset( new WinAnyCPUEmbeddedDeployment( new TempFolderDeployment()))); var pdfData = converter.Convert(document); return File(pdfData, "application/pdf", "PdfSample.pdf"); } }