如何使用 Rotativa 在 ASP.NET Core MVC 中创建 PDF
Rotativa 是一个用于在 ASP.NET Core MVC 中创建 PDF 的开源工具,可以将 Razor 视图转换为 PDF 文件。本攻略将详细介绍如何使用 Rotativa 在 ASP.NET Core MVC 中创建 PDF,并提供多个示例说明。
步骤一:安装 Rotativa
在使用 Rotativa 之前,需要先安装 Rotativa。可以使用以下命令在 NuGet 上安装 Rotativa:
$ dotnet add package Rotativa.AspNetCore
步骤二:创建 Razor 视图
在使用 Rotativa 创建 PDF 之前,需要先创建一个 Razor 视图。以下是一个简单的 Razor 视图示例:
@model IEnumerable<string>
<h1>Names</h1>
<ul>
@foreach (var name in Model)
{
<li>@name</li>
}
</ul>
以上代码中,定义了一个简单的 Razor 视图,用于显示一组字符串。
步骤三:创建 PDF 控制器
在创建 Razor 视图后,需要创建一个 PDF 控制器,用于将 Razor 视图转换为 PDF 文件。以下是一个简单的 PDF 控制器示例:
public class PdfController : Controller
{
public IActionResult Index()
{
var names = new List<string> { "Alice", "Bob", "Charlie" };
return View(names);
}
public IActionResult GeneratePdf()
{
var names = new List<string> { "Alice", "Bob", "Charlie" };
var pdf = new ViewAsPdf("Index", names);
return pdf;
}
}
以上代码中,定义了一个 PdfController 类,用于实现 PDF 控制器。Index 方法返回 Razor 视图,并传递一个字符串列表作为模型。GeneratePdf 方法使用 ViewAsPdf 类将 Razor 视图转换为 PDF 文件,并返回 PDF 文件。
步骤四:配置 Rotativa
在使用 Rotativa 创建 PDF 之前,需要先配置 Rotativa。以下是一个简单的 Rotativa 配置示例:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddMvc().AddRotativa();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
以上代码中,使用 AddRotativa 方法添加 Rotativa 服务,并在 Configure 方法中配置路由。
示例说明
以下是两个示例说明:
示例一:使用 Razor 视图创建 PDF
使用 Razor 视图创建 PDF,可以将 Razor 视图转换为 PDF 文件。以下是一个简单的示例:
- 创建 Razor 视图:
@model IEnumerable<string>
<h1>Names</h1>
<ul>
@foreach (var name in Model)
{
<li>@name</li>
}
</ul>
- 创建 PDF 控制器:
public class PdfController : Controller
{
public IActionResult Index()
{
var names = new List<string> { "Alice", "Bob", "Charlie" };
return View(names);
}
public IActionResult GeneratePdf()
{
var names = new List<string> { "Alice", "Bob", "Charlie" };
var pdf = new ViewAsPdf("Index", names);
return pdf;
}
}
- 配置 Rotativa:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddMvc().AddRotativa();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
- 启动应用程序,并访问 /Pdf/GeneratePdf 路径,将会下载一个包含字符串列表的 PDF 文件。
以上示例中,使用 Razor 视图创建了一个 PDF 文件,并成功下载了该文件。
示例二:使用 CSS 样式创建 PDF
使用 CSS 样式创建 PDF,可以将 Razor 视图的样式应用到 PDF 文件中。以下是一个简单的示例:
- 创建 Razor 视图:
@model IEnumerable<string>
<h1>Names</h1>
<ul>
@foreach (var name in Model)
{
<li>@name</li>
}
</ul>
<style>
h1 {
color: red;
}
li {
font-size: 20px;
}
</style>
- 创建 PDF 控制器:
public class PdfController : Controller
{
public IActionResult Index()
{
var names = new List<string> { "Alice", "Bob", "Charlie" };
return View(names);
}
public IActionResult GeneratePdf()
{
var names = new List<string> { "Alice", "Bob", "Charlie" };
var pdf = new ViewAsPdf("Index", names)
{
CustomSwitches = "--page-offset 0 --footer-center [page]/[toPage]"
};
return pdf;
}
}
- 配置 Rotativa:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddMvc().AddRotativa();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
- 启动应用程序,并访问 /Pdf/GeneratePdf 路径,将会下载一个包含字符串列表和样式的 PDF 文件。
以上示例中,使用 CSS 样式创建了一个 PDF 文件,并成功下载了该文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用Rotativa在ASP.NET Core MVC中创建PDF详解 - Python技术站