C#MVC 透過Rotativa 將HTML轉PDF

摘要: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()

透過View產生PDF

 

第二種方法-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位置:請點我

 

 

參考連結

Rotativa 1.6.4

webgio/Rotativa

[C#]HTML轉PDF檔案,wkhtmltopdf 搭配 iTextsharp