摘要:C# MVC 透過Rotativa 將HTML轉PDF
我想HTML轉PDF的功能,在某些特定的網站上使用的頻率相當的頻繁,
當然透過google大神找到了http://wkhtmltopdf.org/但我想有使用過的前輩,
大部分應該都是透過wkhtmltopdf.exe對這執行檔下指令去產生PDF檔
剛好日前有看到NUGET上在2012年就有人分享出FOR MVC的架構
但實際上作者也提供了一個靜態方法,能讓我們能夠透過指令的方式來產出.
的第三方套件https://www.nuget.org/packages/Rotativa,
仔細看一下,
隨然提供的方法跟範例都必須繼承在System.Web.Mvc之下,
就是在Controller裡嚕
隨然在網路上已經有國外的前輩提出操作的分享,
不過自己動手做還是比較有印象
接下來就直接Step By step嚕
先至https://www.nuget.org/packages/Rotativa
安裝好後會發現多了一個資料夾
如果有到這http://wkhtmltopdf.org直接下載過應該不陌生
其實該作者也是透過wkhtmltopdf.exe將我們將網頁轉換成PDF
接下來就看看提供了哪些方法
下列範例的原始出處是來自於
http://www.codeproject.com/Tips/818197/Generate-PDF-in-ASP-NET-MVC-Using-Rotativa
小弟有稍微整理跟修改,
只是其中還有一個方法
並未Try出就是RouteAsPdf()
如果有前輩試出來還不吝指導小弟
目前該作者除了上述所提的方法
共提供了五種方法
第一種方法 -ViewAsPdf()
第二種方法-ActionAsPdf()
透過Action產生PDF
第三種方法-PartialViewAsPdf()
透過PartialView產生PDF
第四種方法-UrlAsPdf
透過URL產生PDF
第五種方法- BuildPdf()
再Server端產生PDF
目前為止這五種方法,
都可以讓我們很方便的將網頁直接產出PDF,
但仔細看這五種方法都繼承在System.Web.Mvc.ActionResult
所以只能在MVC的架構中使用,但若仔細往裡面翻會發現作者其實提供一個靜態類別,
並未繼承任何跟System.Web.Mvc有關的東東.
所以在專案內我新增一隻APIController做測試
這意味著,是可以透過直接呼叫wkhtmltopdf.exe來作操作
其實跟之前的操作方法是一樣的,
只是作者多包了一層,
讓我們只要輸入wkhtmltopdf.exe的路徑,
跟需要下的指令
接下來這就是直接呼叫wkhtmltopdf.exe的做法
就看各位看官覺得哪個實用嚕
最後DEMO的畫面如下
範例GitHub位置:請點我