如何使用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日

相关文章

  • 详解.Net中字符串不变性与相等判断的特殊场景

    针对.Net中字符串不变性与相等判断的特殊场景,我们需要从以下几个方面进行讲解: 字符串不变性的概念与原理 字符串相等判断的常规方法 特殊场景下的字符串相等判断问题及解决方法 1. 字符串不变性的概念与原理 在 .Net 中,为了追求运行效率和确保字符串的安全性,字符串被设计为不可变对象,即字符串一旦被创建之后,不能被修改。基于这种不可变的特性,字符串在被使…

    C# 2023年5月31日
    00
  • c#将字节数组转成易读的字符串的实现

    将字节数组转成易读的字符串在c#中是一个常见的问题。这个问题的实现方式有很多种,但是其中一种流行的方式是使用“BitConverter”类将字节数组转换为字符串。以下是介绍“c#将字节数组转成易读的字符串的实现”的完整攻略: 使用BitConverter类 .NET Framework中已经内置了一个类来实现将字节数组转换为字符串,那就是BitConvert…

    C# 2023年6月8日
    00
  • javascript深拷贝的原理与实现方法分析

    JavaScript深拷贝的原理与实现方法分析 在JavaScript中,一个对象的同名属性可以有多个引用。当一个对象被拷贝时,只是拷贝了引用,而不是对象本身。这种拷贝称为浅拷贝。浅拷贝的问题在于如果原始对象中某个属性是一个对象,那么在拷贝对象中的该属性也只是一个对象的引用,当原始对象中的该属性发生改变时,拷贝对象中的该属性也会改变。想要避免这个问题,需要用…

    C# 2023年6月8日
    00
  • WEB API .NET环境发布

    1、创建WEBAPI 1 using Dapper; 2 using MesErp.Models; 3 using Microsoft.AspNetCore.Mvc; 4 using Microsoft.Extensions.Configuration; 5 using Newtonsoft.Json; 6 using System; 7 using Sys…

    C# 2023年5月9日
    00
  • C#使用async和await实现异步编程

    下面是C#使用async和await实现异步编程的完整攻略。 什么是异步编程? 异步编程是指同时执行多个操作,而且不用等待当前操作完成再去执行下一个操作的编程方式。使用异步编程可以在所有操作都完成之前充分利用资源,提高性能和效率。 C#异步编程的实现方式 在C#中,异步编程可以使用async和await关键字实现。async关键字用于修饰方法,表明该方法是异…

    C# 2023年5月15日
    00
  • asp.net中控制反转的理解(文字+代码)

    控制反转(Inversion of Control,简称IoC)是一种设计模式,它的核心是将对象的创建和对象之间的依赖关系的管理交给IoC容器来完成,使得应用程序更加灵活和可扩展。在ASP.NET中,IoC容器通常可以通过NuGet安装并使用。 下面就详细介绍一下在ASP.NET中控制反转的理解和使用。 IoC容器的基本原理 IoC容器的作用就是将对象的依赖…

    C# 2023年5月31日
    00
  • VisualStudio怎么设置粘贴时格式不变? vs粘贴时自动缩进的技巧

    当在VisualStudio中使用复制粘贴操作时,有时候会出现格式混乱的情况,这时候我们可以进行设置来使得粘贴时不改变格式。同时,还可以设置粘贴时自动缩进,方便代码的编写与阅读。 以下是VisualStudio设置粘贴时格式不变或自动缩进的方法: 1. 设置粘贴时格式不变 步骤: 打开VisualStudio,进入“工具”菜单,选择“选项”。 在弹出的“选项…

    C# 2023年6月6日
    00
  • 基于c#用Socket做一个局域网聊天工具

    下面是如何基于C#使用Socket编写一个局域网聊天工具的完整攻略。 1. 确定聊天工具功能 在开发之前,我们需要明确自己需要实现哪些功能。一个基本的局域网聊天工具需要完成的功能有:连接、发送、接收、断开、修改昵称等操作。 2. 基本架构 想要实现局域网聊天工具,需要先了解Socket编程的基本原理。需要使用TcpListener和TcpClient来建立连…

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