如何将 Razor 视图无头转换为 PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

查克尼特·宾

术语 "无头呈现 "指的是在没有图形用户界面的情况下呈现网页内容的过程(图形用户界面)或浏览器窗口。 While theIronPdf.Extensions.Razor此软件包非常有用,但它不提供无头渲染功能。 无头渲染可以解决IronPdf.Extensions.Razor包无法满足的用例差距。

我们将使用Razor.Templating.Core从 cshtml 转换的软件包(剃刀视图)将其转换为HTML,然后使用IronPDF从中生成PDF文档。

本文灵感来源于以下YouTube视频:

开始使用IronPDF

立即在您的项目中开始使用IronPDF,并享受免费试用。

第一步:
green arrow pointer


安装Razor.Templating.Core软件包,在ASP.NET Core Web应用程序中将Razor视图转换为html文档。

Install-Package Razor.Templating.Core

将Razor视图渲染为PDFs

您将需要一个ASP.NET Core Web应用程序(模型-视图-控制器)项目,将视图转换为 PDF 文件。

添加视图

  • 右键单击“Home”文件夹。 选择“添加”和“添加视图”。
  • 创建一个空的 Razor 视图并将其命名为 "Data.cshtml"。

    添加查看

编辑 Data.cshtml 文件

将您想要渲染为PDF的HTML字符串添加进来:

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
HTML

编辑 Program.cs 文件

在 "Program.cs "文件中添加以下代码。 下面的代码使用来自 Razor.Templating.Core 库的 RenderAsync 方法将 Razor 视图转换为 HTML。 其次,它实例化ChromePdfRenderer类,并将返回的HTML字符串传递给RenderHtmlAsPdf方法。 用户可以使用RenderingOptions来访问一系列功能,例如添加自定义文本,包括 HTML 页眉和页脚在生成的 PDF 中定义自定义页边距,并应用页码.

app.MapGet("/PrintPdf", async () =>
{
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", async () =>
{
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", Async Function()
	IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
	IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All

	Dim html As String = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")

	Dim renderer As New ChromePdfRenderer()
	Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot")

	Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
End Function)
VB   C#

更改资产链接

导航至“Views”文件夹 -> “Shared”文件夹 -> “_Layout.cshtml”文件。在链接标签中,将“~/”更改为“./”。

这很重要,因为“~/”与IronPDF不兼容。

运行项目

这将向您展示如何运行项目并生成PDF文档。

执行 ASP.NET Core MVC 项目

输出 PDF

下载 ASP.NET Core MVC 项目

您可以下载本指南的完整代码。它是一个压缩文件,您可以在 Visual Studio 中将其作为 ASP.NET Core Web 应用程序打开(模型-视图-控制器)项目。

下载 ASP.NET Core MVC 项目代码

Chaknith related to 下载 ASP.NET Core MVC 项目

查克尼特·宾

软件工程师

Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。