以前、iTextSharp を使って ASP.NET MVC で PDF を作成する方法を試した。
ASP.NET MVC で PDF を作成 - present
ただ、実現したいのは「表示している HTML を PDF でダウンロードする機能」なので、 iTextSharp だと HTML と同じような見た目になるように、自力でゴリゴリ頑張る必要があってツライ。
例えば、Rails で wicked_pdf を使ったときのように、HTML から PDF に変換するのが一番いい。 wicked_pdf は wkhtmltopdf を Rails で使うラッパー gem なので、 .NET にも同じようなものがあるかもしれない。
ネットで探して見つけたのは次の 3 つ。
この中で今も開発が活発なのは TuesPechkin だったので、今回はこのライブラリを採用してみた。
ASP.NET MVC プロジェクトに、NuGet でパッケージを追加。
Install-Package TuesPechkin Install-Package TuesPechkin.Wkhtmltox.Win32
試しに、トップページを PDF に変換するサンプルを書いてみた。
using System.Drawing.Printing; using System.Web.Mvc; using TuesPechkin; namespace PdfSample.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult Pdf() { 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 Win32EmbeddedDeployment( new TempFolderDeployment() ) ) ); var pdfData = converter.Convert(document); return File(pdfData, "application/pdf", "PdfSample.pdf"); } } }
デバッグ実行し、Web ブラウザで /Home/Pdf にアクセスすると、PDF ファイルをダウンロードできる。