如何将 Razor 视图无头转换为 PDF
术语 "无头呈现 "指的是在没有图形用户界面的情况下呈现网页内容的过程 (图形用户界面) 或浏览器窗口。当 IronPdf.Extensions.Razor 包非常有用,但它不提供无头渲染功能。无头渲染可以解决 IronPdf.Extensions.Razor 软件包无法满足的用例缺口。
我们将利用 Razor.Templating.Core 从 cshtml 转换的软件包 (剃刀视图) 将其转为HTML,然后利用IronPDF从中生成PDF文档。
这篇文章的灵感来源于以下YouTube视频:
如何将 Razor 视图无头转换为 PDF
开始在您的项目中使用IronPDF,并立即获取免费试用。
查看 IronPDF 上 Nuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。
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>
编辑 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)
更改资产链接
导航至 "Views "文件夹->"Shared "文件夹->"_Layout.cshtml "文件。在链接标记中,将"~/"改为"./"。
这一点很重要,因为"~/"不能很好地与 IronPDF 配合使用。
运行项目
将向您演示如何运行项目并生成 PDF 文档。
输出 PDF
下载 ASP.NET Core MVC 项目
您可以下载本指南的完整代码。它是一个压缩文件,您可以在 Visual Studio 中将其作为 ASP.NET Core Web 应用程序打开。 (模型-视图-控制器) 项目。