IronPDF Razor 擴展

查克尼思·賓
查克尼思·賓
2023年1月25日
已更新 2024年10月20日
分享:
This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF 是一個適用於 .NET 和 .NET Core 的 PDF 程式庫。 這主要是一個免費的 PDF 庫,因為 IronPDF 是一個商業的 C# PDF 庫。 開發時免費,但商業部署必須授權。 這種更清晰的授權模型不需要開發者去學習GNU / AGPL授權模型的各種細節,而可以專注於他們的項目。

IronPDF 讓 .NET 和 .NET Core 開發人員能夠在 C#、F# 和 VB.NET 上輕鬆生成、合併、拆分、編輯和擷取 PDF 內容,適用於 .NET Core 和 .NET Framework,還可以從 HTML、ASPX、CSS、JS 和圖像文件中創建 PDF。

IronPDF具有通過HTML到PDF的全面PDF編輯和生成功能。 它是如何運作的? 大多數的文件設計和佈局可以使用現有的HTML和HTML5資源。

您可以從IronPDF Razor View to PDF 下載中下載 C# Razor-to-PDF 範例專案。

IronPDF 功能適用於 .NET 與 .NET Core 應用程式

一些出色的IronPDF PDF庫功能包括:

  • .NET PDF 文件庫可以從 HTML、圖像和 ASPX 文件生成 PDF 文件
  • 在 .NET 和 .NET Core 應用程式中讀取 PDF 文本
  • 從PDF中提取數據和圖像
  • 合併PDF文件
  • 拆分PDFs
  • 操作 PDF

IronPDF 優勢

  • IronPDF PDF 庫易於安裝
  • IronPDF .NET 庫提供快速且簡便的授權選項
  • IronPDF 優於大多數 .NET PDF 庫,並超越大多數 .NET Core PDF 庫。

IronPDF 是您一直在尋找的 PDF 解決方案。


安裝 IronPDF PDF 庫

在 .NET 或 .NET Core 中安裝 IronPDF PDF 庫相當簡單。 您可以通过以下方式安装:

使用 NuGet 包管理器並在命令提示符中輸入以下內容:

Install-Package IronPdf

在 Visual Studio 中使用 NuGet 套件管理器,開啟專案功能表中的「選擇管理 NuGet 套件」,然後搜尋 IronPDF,如下所示:

**圖 1** - *IronPDF NuGet 套件* 這會安裝PDF擴展。 使用 IronPDF,您可以使用 ASP.NET MVC 返回 PDF 檔案。以下是一些程式碼範例: 以下顯示的是一個可能由您的控制器提供服務的方法範例。 ```cs public FileResult Generate_PDF_FromHTML_Or_MVC(long id) { using var objPDF = Renderer.RenderHtmlAsPdf(""); //Create a PDF Document var objLength = objPDF.BinaryData.Length; //return a PDF document from a view Response.AppendHeader("Content-Length", objLength.ToString()); Response.AppendHeader("Content-Disposition", "inline; filename=PDFDocument_" + id + ".pdf"); return File(objPDF.BinaryData, "application/pdf;"); } ``` 以下是如何在 ASP.NET 中呈現已存在的 PDF 的範例。 ```cs Response.Clear(); Response.ContentType = "application/pdf"; Response.AddHeader("Content-Disposition", "attachment;filename=\"FileName.pdf\""); Response.BinaryWrite(System.IO.File.ReadAllBytes("PdfName.pdf")); Response.Flush(); Response.End(); ```
讓我們使用MVC和.NET Core在ASP.NET中快速示範一個例子。 打開 Visual Studio 並創建一個新的 ASP.NET Core 網頁應用程式。 ## 1. 在 Visual Studio 中創建一個新的 ASP.NET Core 網絡專案 [//]: # 'image wrapper to make margin bigger - formatting' 創建 ASP.NET Core 專案
## 2. 建立 MVC 模型 - 創建一個新資料夾並將其命名為「Models」。 [//]: # 'image wrapper to make margin bigger - formatting'
新增資料夾
- 在模型資料夾上點擊右鍵,並新增一個類別。 [//]: # 'image wrapper to make margin bigger - formatting'
添加類別
- 將類名更改為“ExampleModel”。 將內容添加到模型,例如: ```cs namespace WebApplication4.Models { public class ExampleModel { public string Name { get; set; } public string Surname { get; set; } public int Age { get; set; } } } ```
## 3. 新增 MVC 控制器 - 創建一個新文件夾並將其命名為“Controllers”。 - 在 Controllers 資料夾上右鍵點擊,然後新增一個「MVC 控制器 - 空白」 [//]: # 'image wrapper to make margin bigger - formatting'
新增控制器類別
將內容新增到控制器: ```cs namespace WebApplication4.Models { public class HomeController : Controller { [HttpPost] public IActionResult ExampleView(ExampleModel model) { var html = this.RenderViewAsync("_Example", model); var ironPdfRender = new IronPdf.ChromePdfRenderer(); using var pdfDoc = ironPdfRender.RenderHtmlAsPdf(html.Result); return File(pdfDoc.Stream.ToArray(), "application/pdf"); } } } ```
## 4. 修改 Index.cshtml 在 Pages 資料夾內,修改 Index.cshtml 檔案為: ```html @page @model WebApplication4.Models.ExampleModel @{ ViewBag.Title = "Example Index View"; }

Index

@using (Html.BeginForm()) {
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.Surname, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Surname, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Surname, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.Age, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Age, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Age, "", new { @class = "text-danger" })
}
```
## 5. 添加 Razor 頁面 在 Pages 的 Shared 資料夾內,新增一個 Razor 頁面並命名為 "_Example.cshtml"。 [//]: # 'image wrapper to make margin bigger - formatting'
新增 Razor 頁面
將以下代碼新增至 _Example.cshtml: ```html @Html.Partial("../Index.cshtml") ```
## 6. 添加新類別 - 添加一個名為「ControllerPDF」的新類別 此類別將使用 _Layout.cshtml 包裝 _Example.cshtml 的 HTML 並將其返回到 HomeController.cs。 - 添加以下代碼: ```cs namespace WebApplication4 { public static class ControllerPDF { public static async Task RenderViewAsync(this Controller controller, string viewName, TModel model, bool partial = false) { if (string.IsNullOrEmpty(viewName)) { viewName = controller.ControllerContext.ActionDescriptor.ActionName; } controller.ViewData.Model = model; using (var writer = new StringWriter()) { IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine; ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial); if (viewResult.Success == false) { return $"A view with the name {viewName} could not be found"; } ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, new HtmlHelperOptions()); await viewResult.View.RenderAsync(viewContext); return writer.GetStringBuilder().ToString(); } } } } ```
## 7. 修改 Program.cs 將以下代碼添加到您的項目中,以確保當保存按鈕被按下時,頁面將導航到正確的URL。 ```cs app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); ```
## 8. 示範 - 從Index.cshtml中,當儲存按鈕被按下且asp-action="ExampleView"時,ExampleView方法將被激活。 - ControllerPDF 類的 RenderViewAsync 方法將從 ExampleView 被調用。 此方法將返回由 _layout.cshtml 包裹的 _Example.cshtml 所生成的 HTML。 - 通過將 RenderViewAsync 返回的 HTML 傳遞給 IronPDF 的 RenderHtmlAsPdf 方法來生成 PDF 文件。 [//]: # 'image wrapper to make margin bigger - formatting' 創建 ASP.NET Core 專案
查克尼思·賓
軟體工程師
Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。