ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

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");
    }
}