IronPDF 操作指南 CSHTML到PDF(无头) How to Convert Razor Views to PDFs Headlessly in C Curtis Chau 已更新:2026年1月31日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 This article was translated from English: Does it need improvement? Translated View the article in English 使用Razor将 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 包管理器安装 https://www.nuget.org/packages/IronPdf PM > Install-Package IronPdf 复制并运行这段代码。 var html = await RazorTemplateEngine.RenderAsync("Views/Template.cshtml", model); new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs("output.pdf"); 部署到您的生产环境中进行测试 通过免费试用立即在您的项目中开始使用IronPDF Free 30 Day Trial 最小工作流程(5 个步骤) 下载用于在 ASP.NET Core Web App 中将 Razor 视图转换为 PDF 的 C# 库。 创建一个新的Razor视图并编辑文件以显示数据 使用 `RenderAsync` 方法将 Razor View 转换为 HTML 使用 `RenderHtmlAsPdf` 方法将 HTML 转换为 PDF 下载样本项目以快速开始 安装 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 或使用 Razor Pages 将 CSHTML 转换为 PDF 。 为什么我需要 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 以实现基于云的生成。 如何安装所需的 NuGet 软件包? 使用 NuGet 软件包管理器安装软件包。 您需要 IronPDF 和 Razor.Templating.Core: // Install via Package Manager Console Install-Package IronPdf Install-Package Razor.Templating.Core // Or add to your .csproj file // <PackageReference Include="IronPdf" Version="2024.x.x" /> // <PackageReference Include="Razor.Templating.Core" Version="1.x.x" /> // Install via Package Manager Console Install-Package IronPdf Install-Package Razor.Templating.Core // Or add to your .csproj file // <PackageReference Include="IronPdf" Version="2024.x.x" /> // <PackageReference Include="Razor.Templating.Core" Version="1.x.x" /> $vbLabelText $csharpLabel 如何创建和配置用于生成 PDF 的 Razor 视图? 右键单击 "Home "文件夹。 选择 "添加",然后选择 "添加视图"。 创建一个名为 "Data.cshtml "的空 Razor 视图。 我应该在 Razor 视图中添加哪些 HTML 内容? 添加要渲染为 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 对于复杂的布局,请使用 CSS 和打印样式,以确保完美的 PDF 渲染。 IronPDF 支持现代 CSS3 功能,可实现复杂的文档布局。 为什么使用表格显示 PDF 数据? 表格提供了结构化、有条理的信息,可以很好地翻译成印刷文件。 译文必须保持跨平台的格式一致,并能以 PDF 格式阅读。 IronPDF 的渲染引擎可以很好地处理表格布局,保留边框、间距和对齐方式。 对于高级格式,请探索自定义页边距以优化布局。 PDF 输出的常见样式考虑因素有哪些? 对于 PDF 输出,请使用特定于印刷的 CSS 媒体查询、固定像素值而不是相对单位,并使用嵌入式字体以获得一致的渲染效果。 IronPdf 支持 web 字体和图标字体,以实现品牌一致性。 考虑多页文档的分页符和适当的页边距,以达到专业的外观效果。 如何为无头 PDF 渲染配置 Program.cs? 在 "Program.cs "中添加以下代码。 它使用Razor中的 RenderAsync 将Razor视图转换为 HTML,然后实例化 ChromePdfRenderer 并将 HTML 传递给 RenderHtmlAsPdf。 使用 RenderingOptions 可自定义文本、页眉、页脚、页边距和页码。 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"); }); 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"); }); $vbLabelText $csharpLabel 我可以对 PDF 应用哪些渲染选项? IronPdf 提供广泛的渲染选项。 添加页眉和页脚,设置自定义纸张大小,控制页面方向,以及添加水印。 ChromePdfRenderer 提供超过 50 个属性来自定义 PDF 生成。 如何处理 PDF 生成过程中的错误? 实施错误处理以生成稳健的 PDF: 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); } 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); } $vbLabelText $csharpLabel 何时应启用详细日志记录? 确保在开发和故障排除过程中记录详细日志。 IronPDF 的日志记录可以深入了解渲染情况,帮助识别 HTML 解析、资产加载或配置问题。 对于生产,请使用自定义日志与应用程序的日志基础架构集成。 为什么需要修改资产链接路径? 导航至 "视图">"共享">"_Layout.cshtml"。 在链接标签中,将 "~/" 更改为 "./",因为 "~/" 与IronPDF不兼容。 我还应注意哪些与路径相关的问题? 除了 tilde (~) 路径问题外,还要确保图片来源使用绝对路径或适当的相对引用。 对于外部资源,请使用 基础 URL,以确保正确加载资产。 有关 Azure Blob Storage 图像,请参阅 从 Azure Blob Storage 嵌入图像。 静态资产如何影响 PDF 生成? 静态资产(CSS、JavaScript、图像)会影响 PDF 生成的性能和质量。 确保资产在渲染过程中可以访问,使用优化的图片,并考虑嵌入关键的 CSS 以加快渲染速度。 了解渲染延迟和超时,适用于 JavaScript 较多的内容。 如何测试无头 PDF 生成? 运行项目,生成 PDF 文档。 输出 PDF 文件 我的最终 PDF 应该是什么样的? 您的 PDF 应保持所有 Razor View 格式--表格结构、字体、颜色和布局。 译文大小要合适,页边要整齐,外观要专业。 要验证输出质量,请使用 IronPDF 的光栅化功能以图像形式预览页面。 如何排除常见的 PDF 渲染问题? 常见问题包括样式缺失、布局破损或内容不完整。 启用详细的日志记录、验证资产路径并确保 HTML 验证正确。 对于复杂的布局,请使用 Chrome 调试工具 在转换前预览 HTML。 对于特定的渲染问题,请使用 WaitFor delays 以确保内容在渲染前加载。 在哪里可以下载完整的工作示例? 以压缩的 Visual Studio ASP.NET Core Web App(模型-视图-控制器)项目的形式下载完整代码。 点击这里下载项目。 运行示例项目的前提条件是什么? 您需要 Visual Studio 2019 或更高版本和 .NET 6.0 SDK 或更高版本。 该项目需要连接互联网以还原 NuGet 软件包。 运行前请更新 Program.cs 中的 IronPDF 许可证密钥。 关于部署,请查看Windows 安装指南以了解其他要求。 如何为我的用例定制示例? 该样本为满足您的特定需求奠定了基础。 添加动态数据模型,对频繁生成的 PDF 实施缓存,或与现有的身份验证集成。 对于高级应用场景,可探索 async PDF 生成以提高性能,或实施 PDF 压缩以减小文件大小。 为文档真实性添加数字签名,或为敏感文档添加密码保护。 常见问题解答 如何在不使用 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,920,939 | 版本: 2026.3 刚刚发布 免费试用 免费 NuGet 下载 总下载量:17,920,939 查看许可证 还在滚动吗? 想快速获得证据? PM > Install-Package IronPdf 运行示例看着你的HTML代码变成PDF文件。 免费 NuGet 下载 总下载量:17,920,939 查看许可证