如何在C#中使用Razor无头将CSHTML转换为PDF | IronPDF

如何在 C# 中将 Razor 视图无头转换为 PDF.

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

通过使用 Razor.Templating.Core 将 cshtml 文件转换为 HTML,然后使用 IronPDF 的 RenderHtmlAsPdf 方法生成 PDF 文档,而无需 GUI 或浏览器窗口,从而在 C# 中将 Razor 视图转换为 PDF。

无头渲染无需图形用户界面即可处理网页内容。 虽然IronPdf.Extensions.Razor很有用,但它缺乏无头渲染功能。 本指南弥补了这一不足。

我们将使用 Razor.Templating.Core 将 cshtml 转换为 HTML,然后使用 IronPDF 生成 PDF。

快速入门:在几秒钟内将 Razor 视图转换为 PDF

使用 IronPDF 的无头转换功能将 Razor 视图转换为 PDF。 使用 IronPDF.HtmlToPdf.StaticRender.RenderHtmlAsPdf 将 Razor 视图中的 HTML 呈现为 PDF。 这种方法可在 ASP.NET Core 环境中无缝运行。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronPDF

    PM > Install-Package IronPdf

  2. 复制并运行这段代码。

    var html = await RazorTemplateEngine.RenderAsync("Views/Template.cshtml", model); 
    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs("output.pdf");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronPDF,免费试用!
    arrow pointer

安装 Razor.Templating.Core,在 ASP.NET Core Web 应用程序中将 Razor 视图转换为 HTML。

# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
SHELL

如何设置我的 ASP.NET Core 项目进行 Razor 到 PDF 的转换? <!--说明:显示代码执行输出或结果的截图 --> 您需要一个 ASP.NET Core Web App(模型-视图-控制器)项目来将视图转换为 PDF。 设置包括在 Visual Studio 中创建项目、安装 NuGet 软件包和配置项目结构。 有关类似技术,请参阅[在 MVC Core 中将 CSHTML 转换为 PDF](https://ironpdf.com/how-to/cshtml-to-pdf-mvc-core/) 或[使用 Razor Pages 将 CSHTML 转换为 PDF](https://ironpdf.com/how-to/cshtml-to-pdf-razor/) 。 ### 为什么我需要 Razor.Templating.Core 而不是 IronPdf.Extensions.Razor? Razor.Templating.Core提供真正的无头渲染--无需网络上下文或浏览器窗口即可将Razor视图转换为HTML。 这适合后台服务、控制台应用程序或无用户界面环境。 IronPdf.Extensions.Razor 需要网络环境才能运行。

什么项目类型最适合无头生成 PDF? ASP.NET Core Web App(模型-视图-控制器)项目提供了必要的 Razor View 基础设施,具有灵活的部署选项。 在后台服务、Azure 函数或控制台应用程序中使用这种方法。 请参阅[将 IronPDF 部署到 Azure](https://ironpdf.com/how-to/azure/) 以实现基于云的生成。

如何安装所需的 NuGet 软件包? 使用 NuGet 软件包管理器安装软件包。 您需要 IronPDF 和 Razor.Templating.Core: ```csharp // Install via Package Manager Console Install-Package IronPdf Install-Package Razor.Templating.Core // Or add to your .csproj file // // ```

如何创建和配置用于生成 PDF 的 Razor 视图? - 右键单击 "Home "文件夹。 选择 "添加",然后选择 "添加视图"。 - 创建一个名为 "Data.cshtml "的空 Razor 视图。 !a href="/static-assets/pdf/how-to/cshtml-to-pdf-razor-headlessly/add-view.webp">Visual Studio 解决方案资源管理器上下文菜单显示用于创建新 MVC 视图的添加 > 视图选项。

我应该在 Razor 视图中添加哪些 HTML 内容? 添加要渲染为 PDF 的 HTML: ```html
Name Title Description
John Doe Software Engineer Experienced software engineer specializing in web development.
Alice Smith Project Manager Seasoned project manager with expertise in agile methodologies.
Michael Johnson Data Analyst Skilled data analyst proficient in statistical analysis and data visualization.
``` 对于复杂的布局,请使用 [CSS 和打印样式](https://ironpdf.com/how-to/html-to-pdf-responsive-css/),以确保完美的 PDF 渲染。 IronPDF 支持现代 CSS3 功能,可实现复杂的文档布局。

为什么使用表格显示 PDF 数据? 表格提供了结构化、有条理的信息,可以很好地翻译成印刷文件。 译文必须保持跨平台的格式一致,并能以 PDF 格式阅读。 IronPDF 的渲染引擎可以很好地处理表格布局,保留边框、间距和对齐方式。 对于高级格式,请探索[自定义页边距](https://ironpdf.com/how-to/custom-margins/)以优化布局。

PDF 输出的常见样式考虑因素有哪些? 对于 PDF 输出,请使用特定于印刷的 CSS 媒体查询、固定像素值而不是相对单位,并使用嵌入式字体以获得一致的渲染效果。 IronPdf 支持 [web 字体和图标字体](https://ironpdf.com/how-to/webfonts-webicons/),以实现品牌一致性。 考虑[多页文档的分页符](https://ironpdf.com/how-to/html-to-pdf-page-breaks/)和适当的页边距,以达到专业的外观效果。

如何为无头 PDF 渲染配置 Program.cs? 在 "Program.cs "中添加以下代码。 它使用 Razor.Templating.Core 中的 `RenderAsync` 将 Razor 视图转换为 HTML,然后实例化 `ChromePdfRenderer` 并将 HTML 传递给 `RenderHtmlAsPdf` 。 使用 `RenderingOptions` 自定义文本、页眉、页脚、页边距和页码。 ```csharp app.MapGet("/PrintPdf", async () => { // Set your IronPDF license key IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"; // Enable detailed logging for troubleshooting IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All; // Render the Razor view to an HTML string string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml"); // Create a new instance of ChromePdfRenderer ChromePdfRenderer renderer = new ChromePdfRenderer(); // Configure rendering options for professional output renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 25; renderer.RenderingOptions.MarginBottom = 25; renderer.RenderingOptions.MarginLeft = 20; renderer.RenderingOptions.MarginRight = 20; // Render the HTML string as a PDF document PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot"); // Return the PDF file as a response return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf"); }); ```

我可以对 PDF 应用哪些渲染选项? IronPdf 提供广泛的渲染选项。 添加[页眉和页脚](https://ironpdf.com/how-to/headers-and-footers/),设置[自定义纸张大小](https://ironpdf.com/how-to/custom-paper-size/),控制[页面方向](https://ironpdf.com/how-to/page-orientation-rotation/),以及添加[水印](https://ironpdf.com/how-to/custom-watermark/)。 `ChromePdfRenderer`提供了 50 多个属性用于自定义 PDF 生成。

如何处理 PDF 生成过程中的错误? 实施错误处理以生成稳健的 PDF: ```csharp try { var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml"); var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot"); return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf"); } catch (Exception ex) { // Log the error details IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}"); return Results.Problem("Failed to generate PDF", statusCode: 500); } ```

何时应启用详细日志记录? 确保在开发和故障排除过程中记录详细日志。 IronPDF 的日志记录可以深入了解渲染情况,帮助识别 HTML 解析、资产加载或配置问题。 对于生产,请使用[自定义日志](https://ironpdf.com/how-to/custom-logging/)与应用程序的日志基础架构集成。

为什么需要修改资产链接路径? 导航至 "视图">"共享">"_Layout.cshtml"。 在链接标签中,将 `"~/"` 更改为 `"./"` ,因为 `"~/"` 不能很好地与 IronPDF 配合使用。

我还应注意哪些与路径相关的问题? 除了 tilde (~) 路径问题外,还要确保图片来源使用绝对路径或适当的相对引用。 对于外部资源,请使用 [基础 URL](https://ironpdf.com/how-to/base-urls/),以确保正确加载资产。 有关 Azure Blob Storage 图像,请参阅 [从 Azure Blob Storage 嵌入图像](https://ironpdf.com/how-to/images-azure-blob-storage/)。

静态资产如何影响 PDF 生成? 静态资产(CSS、JavaScript、图像)会影响 PDF 生成的性能和质量。 确保资产在渲染过程中可以访问,使用优化的图片,并考虑嵌入关键的 CSS 以加快渲染速度。 了解[渲染延迟和超时](https://ironpdf.com/how-to/javascript-to-pdf/),适用于 JavaScript 较多的内容。

如何测试无头 PDF 生成? 运行项目,生成 PDF 文档。 Visual Studio showing running ASP.NET Core MVC app with Program.cs open and successful debug output #### 输出 PDF 文件

我的最终 PDF 应该是什么样的? 您的 PDF 应保持所有 Razor View 格式--表格结构、字体、颜色和布局。 译文大小要合适,页边要整齐,外观要专业。 要验证输出质量,请使用 IronPDF 的[光栅化功能](https://ironpdf.com/how-to/rasterize-pdf-to-images/)以图像形式预览页面。

如何排除常见的 PDF 渲染问题? 常见问题包括样式缺失、布局破损或内容不完整。 启用详细的日志记录、验证资产路径并确保 HTML 验证正确。 对于复杂的布局,请使用 [Chrome 调试工具](https://ironpdf.com/how-to/pixel-perfect-html-to-pdf/) 在转换前预览 HTML。 对于特定的渲染问题,请使用 [WaitFor delays](https://ironpdf.com/how-to/waitfor/) 以确保内容在渲染前加载。

在哪里可以下载完整的工作示例? 以压缩的 Visual Studio ASP.NET Core Web App(模型-视图-控制器)项目的形式下载完整代码。 [点击这里下载项目。](/static-assets/pdf/how-to/cshtml-to-pdf-razor-headlessly/ViewToPdfMVCCoreHeadlesslySample.zip)

运行示例项目的前提条件是什么? 您需要 Visual Studio 2019 或更高版本和 .NET 6.0 SDK 或更高版本。 该项目需要连接互联网以还原 NuGet 软件包。 运行前请更新 Program.cs 中的 IronPDF 许可证密钥。 关于部署,请查看[Windows 安装指南](https://ironpdf.com/how-to/windows/)以了解其他要求。

如何为我的用例定制示例? 该样本为满足您的特定需求奠定了基础。 添加动态数据模型,对频繁生成的 PDF 实施缓存,或与现有的身份验证集成。 对于高级应用场景,可探索 [async PDF 生成](https://ironpdf.com/how-to/async/)以提高性能,或实施 [PDF 压缩](https://ironpdf.com/how-to/pdf-compression/)以减小文件大小。 为文档真实性添加[数字签名](https://ironpdf.com/how-to/signing/),或为敏感文档添加[密码保护](https://ironpdf.com/how-to/pdf-permissions-passwords/)。

常见问题解答

如何在不使用 C# 图形用户界面的情况下将 Razor 视图转换为 PDF?

使用 Razor.Templating.Core 将 cshtml 文件转换为 HTML,然后使用 IronPDF 的 RenderHtmlAsPdf 方法无头生成 PDF。通过这两步流程,您无需图形用户界面或浏览器窗口即可将Razor视图转换为PDF文档。

将 Razor 视图无头渲染为 PDF 的最快方法是什么?

最快的方法是使用两行代码:首先使用 RazorTemplateEngine.RenderAsync 将 Razor 视图转换为 HTML,然后使用 IronPDF 的 ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs() 方法创建并保存 PDF 文件。

为什么我应该使用 Razor.Templating.Core 而不是 IronPdf.Extensions.Razor?

Razor.Templating.Core提供真正的无头渲染功能,允许您在没有网页上下文或浏览器窗口的情况下将Razor视图转换为HTML。虽然IronPdf.Extensions.Razor很有用,但它需要网络上下文才能运行,因此Razor.Templating.Core更适合后台服务和控制台应用程序。

无头 PDF 生成需要哪种类型的 ASP.NET Core 项目?

使用 ASP.NET Core Web App(模型-视图-控制器)项目,该项目提供了必要的 Razor View 基础架构和灵活的部署选项。这种设置与 IronPDF 的后台服务、Azure 函数或控制台应用程序配合使用效果很好。

如何安装 Razor to PDF 转换所需的软件包?

使用 NuGet 软件包管理器,使用 "Install-Package Razor.Templating.Core "命令安装 Razor.Templating.Core。你还需要在项目中安装 IronPDF,以处理 HTML 到 PDF 的转换步骤。

我能否在云环境中使用这种无头 PDF 生成方法?

是的,IronPDF 的无头 Razor 至 PDF 转换可在云环境中出色地运行,包括 Azure Functions、AWS Lambda 和容器化应用程序,使其成为可扩展文档生成服务的理想选择。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 17,012,929 | 版本: 2025.12 刚刚发布