如何以無頭方式將 Razor 視圖轉換為 PDF
「無頭渲染」一詞指的是在沒有圖形使用者介面的情況下渲染網頁內容的過程。 (圖形用戶介面) 或瀏覽器窗口。雖然 IronPdf.Extensions.Razor 此套件非常有用,但它不提供无头渲染功能。無頭渲染可以填補 IronPDF.Extensions.Razor 套件無法滿足的使用情境。
我們將利用 Razor.Templating.Core cshtml轉換套件 (Razor視圖) 將其轉換為 HTML,然後利用 IronPDF 從中生成 PDF 文件。
這篇文章的靈感來源於以下 YouTube 視頻:
如何以無頭方式將 Razor 視圖轉換為 PDF
立即開始在您的專案中使用IronPDF,並享受免費試用。
查看 IronPDF 上 Nuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變PDF。
Install-Package IronPdf
請考慮安裝 IronPDF DLL 直接下載並手動安裝到您的專案或GAC表單: IronPdf.zip
手動安裝到您的項目中
下載DLL安裝 Razor.Templating.Core package 來在 ASP.NET Core Web App 中將 Razor Views 轉換為 html 文件。
Install-Package Razor.Templating.Core
將 Razor 視圖渲染為 PDF
你需要一個 ASP.NET Core 網頁應用程式 (模型-視圖-控制器) 將檢視轉換為 PDF 檔案的專案。
添加視圖
- 右鍵單擊 "Home" 文件夾。選擇 "添加" 和 "添加視圖"。
- 創建一個空的 Razor 視圖並命名為 "Data.cshtml"。
編輯 Data.cshtml 文件
添加您想要渲染為 PDF 的 HTML 字串:
<table class="table">
<tr>
<th>Name</th>
<th>Title</th>
<th>Description</th>
</tr>
<tr>
<td>John Doe</td>
<td>Software Engineer</td>
<td>Experienced software engineer specializing in web development.</td>
</tr>
<tr>
<td>Alice Smith</td>
<td>Project Manager</td>
<td>Seasoned project manager with expertise in agile methodologies.</td>
</tr>
<tr>
<td>Michael Johnson</td>
<td>Data Analyst</td>
<td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
</tr>
</table>
<table class="table">
<tr>
<th>Name</th>
<th>Title</th>
<th>Description</th>
</tr>
<tr>
<td>John Doe</td>
<td>Software Engineer</td>
<td>Experienced software engineer specializing in web development.</td>
</tr>
<tr>
<td>Alice Smith</td>
<td>Project Manager</td>
<td>Seasoned project manager with expertise in agile methodologies.</td>
</tr>
<tr>
<td>Michael Johnson</td>
<td>Data Analyst</td>
<td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
</tr>
</table>
編輯 Program.cs 檔案
在 "Program.cs" 檔案中,添加以下程式碼。以下程式碼使用 Razor.Templating.Core 函式庫中的 RenderAsync
方法將 Razor 視圖轉換為 HTML。其次,它實例化 ChromePdfRenderer 類,並將返回的 HTML 字串傳遞給 RenderHtmlAsPdf
方法。用戶可以使用 RenderingOptions 訪問一系列功能,例如添加自定義 文字,包括 HTML 標題和頁腳 在生成的 PDF 中,定義自訂邊距,並應用 頁碼.
app.MapGet("/PrintPdf", async () =>
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", async () =>
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", Async Function()
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All
Dim html As String = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot")
Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
End Function)
更改資產鏈接
導航到 "Views" 資料夾 -> "Shared" 資料夾 -> "_Layout.cshtml" 文件。在鏈接標籤中,將 "~/" 更改為 "./"。
這很重要,因為 "~/" 與 IronPDF 配合不佳。
執行專案
這將向您展示如何執行專案並生成 PDF 檔案。
輸出 PDF
下載 ASP.NET Core MVC 專案
您可以下載本指南的完整代碼。這是一個壓縮文件,您可以在 Visual Studio 中作為 ASP.NET Core Web App 開啟。 (模型-視圖-控制器) 專案。