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

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

查克尼特·宾

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

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

这篇文章的灵感来源于以下YouTube视频:

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

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

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 nuget.org/packages/IronPdf/
Install-Package IronPdf

考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip

手动安装到你的项目中

下载DLL

在 ASP.NET Core Web App 中安装 Razor.Templating.Core 包 以将 Razor 视图转换为 html 文档。

Install-Package Razor.Templating.Core

将 Razor 视图渲染为 PDF 文件

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

添加查看

  • 右键单击 "主页 "文件夹。选择 "添加 "和 "添加视图"。
  • 创建空的 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 应用程序打开。 (模型-视图-控制器) 项目。

点击此处下载项目。

查克尼特·宾

软件工程师

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