如何使用Rotativa在ASP.NET Core MVC中创建PDF详解

如何使用 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 文件。以下是一个简单的示例:

  1. 创建 Razor 视图:
@model IEnumerable<string>

<h1>Names</h1>

<ul>
@foreach (var name in Model)
{
    <li>@name</li>
}
</ul>
  1. 创建 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;
    }
}
  1. 配置 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?}");
    });
}
  1. 启动应用程序,并访问 /Pdf/GeneratePdf 路径,将会下载一个包含字符串列表的 PDF 文件。

以上示例中,使用 Razor 视图创建了一个 PDF 文件,并成功下载了该文件。

示例二:使用 CSS 样式创建 PDF

使用 CSS 样式创建 PDF,可以将 Razor 视图的样式应用到 PDF 文件中。以下是一个简单的示例:

  1. 创建 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>
  1. 创建 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;
    }
}
  1. 配置 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?}");
    });
}
  1. 启动应用程序,并访问 /Pdf/GeneratePdf 路径,将会下载一个包含字符串列表和样式的 PDF 文件。

以上示例中,使用 CSS 样式创建了一个 PDF 文件,并成功下载了该文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用Rotativa在ASP.NET Core MVC中创建PDF详解 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • C#实现分页组件的方法

    我来分享一下如何用C#实现分页组件的方法。分页组件是一个常见的Web开发需求,一般用于处理大量数据,使得数据可以分页展示,提高用户体验。以下为完整攻略: 1. 定义分页参数 我们先定义一个类来表示分页参数,包含以下三个属性: public class Pagination { // 当前页码,从1开始 public int PageIndex { get; …

    C# 2023年5月31日
    00
  • winform 实现选择文件和选择文件夹对话框的简单实例

    以下是“winform 实现选择文件和选择文件夹对话框的简单实例”的攻略。 1. 引言 在编写 winform 程序时,我们常常需要用到让用户选择文件或者目录的功能。实现这个功能,我们需要用到 System.Windows.Forms 命名空间中的 OpenFileDialog 和 FolderBrowserDialog 类。 2. 实现选择文件对话框 接下…

    C# 2023年6月1日
    00
  • SQL2005CLR函数扩展-繁简转换的实现代码

    SQL2005CLR函数扩展-繁简转换的实现代码的完整攻略如下: 1. 确定需求并搜集资料 首先,我们需要确定我们要实现的是一个繁简转换的函数。繁简转换是指将繁体中文转换为简体中文,或将简体中文转换为繁体中文。为了实现这个功能,我们需要搜集相关的资料,包括繁简转换的算法和实现思路等。 2. 编写CLR函数代码 在了解了繁简转换的实现思路后,我们可以开始编写C…

    C# 2023年6月7日
    00
  • C#异步调用示例详解

    下面是关于“C#异步调用示例详解”的完整攻略,包含两个示例。 1. C#异步调用简介 在C#中,可以使用异步调用来执行长时间运行的操作,例如网络请求或数据库查询。异步调用可以提高应用程序的响应性能,因为它允许应用程序在等待操作完成时继续执行其他任务。 2. 使用async和await关键字进行异步调用 可以使用async和await关键字来执行异步调用。以下…

    C# 2023年5月15日
    00
  • C#实现彻底删除文件的方法

    C#实现彻底删除文件有多种方法,下面将为大家介绍两种实现的方法及示例。 方法一:使用File类的Delete方法 使用File类的Delete方法可以实现彻底删除文件,该方法可以接收文件路径作为参数,会删除目标文件而不会将其放入回收站。 下面是一个删除文件的示例代码: using System; using System.IO; namespace Dele…

    C# 2023年6月1日
    00
  • WCF入门教程之Windows通讯接口

    下面是关于“WCF入门教程之Windows通讯接口”的完整攻略,包含两个示例。 1. 什么是WCF WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的框架。它提供了一种统一的编程模型,可以使用不同的传输协议和编码方式来实现跨平台的通信。WCF支持多种传输协议,包括HTTP、TCP、MSMQ等,可以在不同的…

    C# 2023年5月15日
    00
  • c#创建圆形类Circle、矩形类实现代码

    下面是关于“c#创建圆形类Circle、矩形类实现代码”的详细攻略。 创建圆形类 Circle 定义类 在 C# 中创建一个 Circle 类,需要定义一个类(class),使用 class 关键字进行定义,并给类起一个名称,本例中我们将其命名为 Circle: class Circle { } 添加属性 接下来,我们需要为圆形类添加若干个属性,包括: 半径…

    C# 2023年6月1日
    00
  • C# Winfrom实现Skyline画直线功能的示例代码

    让我为您详细讲解“C# Winfrom实现Skyline画直线功能的完整攻略”: 1. 确定需求 在开始编写代码前,首先要确定我们的需求就是实现Skyline功能,即在Windows窗体中画直线。 2. 创建Windows窗体应用程序 根据需求,我们需要创建一个Windows窗体应用程序。可以在Visual Studio中选择新建项目,选择“WindowsF…

    C# 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部