如何以無頭方式將 Razor 視圖轉換為 PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

查克尼思·賓

「無頭渲染」一詞指的是在沒有圖形使用者介面的情況下渲染網頁內容的過程。 (圖形用戶介面) 或瀏覽器窗口。雖然 IronPdf.Extensions.Razor 此套件非常有用,但它不提供无头渲染功能。無頭渲染可以填補 IronPDF.Extensions.Razor 套件無法滿足的使用情境。

我們將利用 Razor.Templating.Core cshtml轉換套件 (Razor視圖) 將其轉換為 HTML,然後利用 IronPDF 從中生成 PDF 文件。

這篇文章的靈感來源於以下 YouTube 視頻:

C# NuGet 程式庫用于 PDF

安裝與 NuGet

Install-Package IronPdf
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于 PDF

安裝與 NuGet

Install-Package IronPdf
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronPDFNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變PDF。

C# NuGet 程式庫用于 PDF nuget.org/packages/IronPdf/
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>
HTML

編輯 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)
VB   C#

更改資產鏈接

導航到 "Views" 資料夾 -> "Shared" 資料夾 -> "_Layout.cshtml" 文件。在鏈接標籤中,將 "~/" 更改為 "./"。

這很重要,因為 "~/" 與 IronPDF 配合不佳。

執行專案

這將向您展示如何執行專案並生成 PDF 檔案。

執行ASP.NET Core MVC專案

輸出 PDF

下載 ASP.NET Core MVC 專案

您可以下載本指南的完整代碼。這是一個壓縮文件,您可以在 Visual Studio 中作為 ASP.NET Core Web App 開啟。 (模型-視圖-控制器) 專案。

點擊這裡下載專案。

查克尼思·賓

軟體工程師

Chaknith 是開發者界的夏洛克福爾摩斯。他第一次意識到自己可能有個軟體工程的未來,是在他為了娛樂而參加程式挑戰的時候。他的重點是 IronXL 和 IronBarcode,但他也引以為豪的是,他幫助客戶解決所有產品的問題。Chaknith 利用他與客戶直接對話中獲得的知識,以進一步改進產品。他的實際反饋超越了 Jira 工單,並支持產品開發、文件撰寫和行銷,以提升客戶的整體體驗。不在公司時,他通常在學習機器學習、寫程式和徒步旅行。