IronPDF Razor 扩展程序

查克尼特·宾
查克尼特·宾
2023年一月25日
更新 2024年十月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 for .NET Core 和 .NET Framework 轻松生成、合并、分割、编辑和提取 PDF 内容,并从 HTML、ASPX、CSS、JS 和图像文件中创建 PDF。

IronPDF拥有全面的PDF编辑和生成功能,可以通过HTML转换为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 文档
  • 分割 PDF
  • 操作 PDF

IronPDF 的优势

  • IronPDF PDF 库易于安装
  • IronPDF .NET 库具有快速、简便的许可选项
  • IronPDF 优于大多数 .NET PDF 库,也优于大多数 .NET Core PDF 库

IronPDF 是您一直在寻找的 PDF 解决方案。


安装 IronPDF PDF 库

在 .NET 或 .NET Core 中安装用于 PDF 的 IronPDF 库非常简单。 您可以通过以下方式安装它:

使用 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(); ```
让我们用ASP.NET MVC和.NET Core来做一个快速示例。 打开Visual Studio并创建一个新的ASP.NET Core网页应用程序。 ## 1.在 Visual Studio 中创建一个新的 ASP.NET Core Web 项目 [//]: # '图像包装器以增大边距 - 格式化' 创建 ASP.NET Core 项目
## 创建 MVC 模型 - 创建一个新文件夹并将其命名为“Models”。 [//]: # '图像包装器以增大边距 - 格式化'
添加文件夹
- 右键单击模型文件夹并添加一个新类 [//]: # '图像包装器以增大边距 - 格式化'
添加类
- 将类名更改为“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”。 - 右键单击控制器文件夹,添加新的 "MCV 控制器 - 空"。 [//]: # '图像包装器以增大边距 - 格式化'
添加控制器类
为控制器添加内容: ```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页面 在页面的共享文件夹中,添加一个 Razor 页面并将其命名为"_Example.cshtml"。 [//]: # '图像包装器以增大边距 - 格式化'
"添加 Razor 页面"
将以下代码添加到 _Example.cshtml 中: ```html @Html.Partial("../Index.cshtml") ```
## 6. 添加一个新类 - 添加一个新的类名“ControllerPDF” 该类将提取 _Example.cshtml 中的 HTML 并对 _Layout.cshtml 进行封装,然后将其返回到 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 文档。 [//]: # '图像包装器以增大边距 - 格式化' 创建 ASP.NET Core 项目
查克尼特·宾
软件工程师
Chaknith 负责 IronXL 和 IronBarcode 的工作。他在 C# 和 .NET 方面拥有深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的洞察力,有助于提升产品、文档和整体体验。