如何使用.NET在Azure上生成HTML到PDF

如何使用 C# 在 Azure 功能上使用 IronPDF 将 HTML 转换为 PDF.

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

IronPDF 可在 Azure 平台(包括 MVC 网站和 Azure 函数)上生成、处理和读取 PDF 文档。 本指南介绍了如何在 Azure Functions 中实现 HTML 到 PDF 的转换,并针对生产环境进行了适当的配置和优化。

如果您在 Docker 容器中运行 Azure Functions,请参阅本 Azure Docker Linux 教程

快速入门:在 Azure 上使用 IronPDF 进行 HTML 到 PDF 转换

开始使用 IronPDF 在您的 Azure 应用程序中将 HTML 转换为 PDF。 本快速指南演示了如何使用 IronPDF 的 API 方法将 URL 呈现为 PDF 文档。 本示例展示了 IronPDF 将 PDF 功能集成到 Azure 解决方案中的简易性。 按照示例开始生成 PDF,不会丢失格式,让您的 Azure 项目快速运行。

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

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

    PM > Install-Package IronPdf

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

    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderHtmlAsPdf("<h1>Hello Azure!</h1>")
        .SaveAs("output-azure.pdf");
  3. 部署到您的生产环境中进行测试

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

如何使用教程

如何设置我的项目? --> <!--说明:显示代码执行输出或结果的截图 -->

我应该安装哪个 IronPDF 软件包? 第一步是使用 NuGet 安装 IronPDF: - 在基于 Windows 的 Azure Functions 上使用 ` IronPdf ` 软件包 - [Windows 的 NuGet IronPdf 软件包](https://www.nuget.org/packages/IronPdf/) - 在基于 Linux 的 Azure Functions 上使用 ` IronPdf.Linux ` 软件包 - [Linux 的 NuGet IronPdf 软件包](https://www.nuget.org/packages/IronPdf.Linux/) ```shell :ProductInstall ``` *或者,通过使用 [Azure 的 IronPDF 直接下载包](https://ironpdf.com/packages/IronPdf.Package.For.azure.zip) 链接手动安装 .dll。* 有关更多高级安装选项,请查看我们全面的 [NuGet Packages 指南](https://ironpdf.com/get-started/advanced-installation-nuget/)。

我需要配置哪些 Azure 选项?

我应该选择哪个 Azure 托管层级? Azure Basic **B1** 是满足渲染需求所需的最低托管级别。 如果您正在创建一个高吞吐量系统,这可能需要升级。 B1 层为 [Chrome PDF 渲染引擎](https://ironpdf.com/how-to/ironpdf-2021-chrome-rendering-engine-eap/)提供足够的资源,该引擎为 IronPDF 的 HTML 到 PDF 转换提供动力。 [{w:(未能选择**应用程序服务计划**的计划类型可能导致 IronPdf 无法呈现 PDF 文档。
Azure 功能应用程序创建表单,计划类型下拉框中突出显示应用程序服务计划选项

为什么要取消选中 "从软件包文件运行"? 发布您的 Azure Functions 应用程序时,请确保未选择 `从软件包文件运行`。 此选项可创建只读部署,防止 IronPDF 在执行过程中提取必要的运行时依赖关系。
Azure Functions 发布对话框显示未选中的

如何为 .NET 6 进行配置? 微软最近从 .NET 6+ 中移除了成像库,破坏了许多遗留的 API。因此,有必要配置您的项目以仍然允许这些遗留的 API 调用。 1. 在 Linux 上,设置 `Installation.LinuxAndDockerDependenciesAutoConfig=true;` 以确保在机器上安装 `libgdiplus` 2. 为您的 .NET 6 项目在 .csproj 文件中添加以下内容: ```xml true ``` 3. 在您的项目中创建一个名为 `runtimeconfig.template.json` 的文件,并填充以下内容: ```json { "configProperties": { "System.Drawing.EnableUnixSupport": true } } ``` 5. 最后,添加以下行到程序的开头以启用 Unix 支持的 System.Drawing: ```csharp System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true); ```

何时应在 Azure 上使用 Docker? 获得控制、SVG 字体访问以及控制性能的一种方法是在 Docker 容器中使用 IronPDF 应用和函数。 这种方法可以更好地控制运行环境,消除许多特定平台的限制。 我们有一个全面的[IronPDF Azure Docker 教程](/get-started/ironpdf-docker/),适用于 Linux 和 Windows 实例,建议阅读。

Azure 函数代码看起来像什么? 本示例自动将日志条目输出到内置的 Azure 日志记录器(请参阅 `ILogger log`)。 有关详细的日志配置,请参阅我们的[自定义日志指南](https://ironpdf.com/how-to/custom-logging/)。 ```csharp [FunctionName("PrintPdf")] public static async Task Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log, ExecutionContext context) { log.LogInformation("Entered PrintPdf API function..."); // Apply license key IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"; // Configure logging IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom; IronPdf.Logging.Logger.CustomLogger = log; IronPdf.Logging.Logger.EnableDebugging = false; // Configure IronPdf settings Installation.LinuxAndDockerDependenciesAutoConfig = false; Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled; try { log.LogInformation("About to render pdf..."); // Create a renderer and render the URL as PDF ChromePdfRenderer renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://www.google.com/"); log.LogInformation("Finished rendering pdf..."); // Return the rendered PDF as a file download return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" }; } catch (Exception e) { log.LogError(e, "Error while rendering pdf"); } return new OkObjectResult("OK"); } ``` ### 高级 HTML 字符串渲染示例 对于涉及带有 CSS 样式的自定义 HTML 的更复杂情况,您可以使用 [HTML 字符串转 PDF](https://ironpdf.com/how-to/html-string-to-pdf/) 功能: ```csharp [FunctionName("RenderHtmlWithCss")] public static async Task RenderHtmlWithCss( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("Processing HTML to PDF request"); // Read HTML content from request body string htmlContent = await new StreamReader(req.Body).ReadToEndAsync(); // Configure renderer with custom options var renderer = new ChromePdfRenderer() { RenderingOptions = new ChromePdfRenderOptions() { MarginTop = 20, MarginBottom = 20, MarginLeft = 10, MarginRight = 10, CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print, PrintHtmlBackgrounds = true, CreatePdfFormsFromHtml = true } }; try { // Add custom CSS string styledHtml = $@" {htmlContent} "; var pdf = renderer.RenderHtmlAsPdf(styledHtml); return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "styled-document.pdf" }; } catch (Exception ex) { log.LogError(ex, "Failed to render HTML to PDF"); return new BadRequestObjectResult("Error processing HTML content"); } } ``` 关于在您的 Azure Functions 中管理许可证,请参阅我们的 [Using License Keys](https://ironpdf.com/get-started/license-keys/) 文档。

已知问题有哪些?

为什么共享托管计划无法渲染 SVG 字体? 一个限制是[Azure 托管平台概述](https://azure.microsoft.com/en-us/)不支持服务器加载 SVG 字体,例如 Google 字体,在其更便宜的共享 web-app 层。 这是由于安全限制阻止访问 Windows GDI+ 图形对象。 我们建议使用[IronPDF 的 Windows 或 Linux Docker 容器指南](/get-started/ironpdf-docker/),或在需要最佳字体渲染的地方使用 Azure 上的 VPS。

为什么 Azure 免费层托管速度慢? Azure 免费和共享层以及消耗计划不适合 PDF 渲染。 我们推荐 Azure B1 托管/高级计划,这是我们自己使用的。 `HTML 到 PDF` 的过程对于任何计算机来说都是重要的"工作"——类似于在自己的机器上打开和渲染网页。 **使用了真实的浏览器引擎**,因此需要相应地提供资源,并预期与类似性能的桌面机器类似的渲染时间。

如何在本地调试 Azure 函数? 关于本地开发和测试,请参阅我们的[在本地机器上调试 Azure Functions 项目](https://ironpdf.com/troubleshooting/debugging-azure-functions-on-local-machine-ironpdf/)指南。 这有助于您在部署到 Azure 之前发现并解决问题。

在哪里可以找到 Azure 日志? 在排除 PDF 生成问题时,Azure 日志非常宝贵。 请查看我们的 [Azure 日志文件](https://ironpdf.com/troubleshooting/azure-log-files/)指南,了解访问和解释 IronPdf 操作特定日志的说明。

如何创建工程支持请求? 要创建请求票单,请参阅[如何为 IronPdf 提出工程支持请求](/troubleshooting/engineering-request-pdf/)指南。 ## 生产的最佳实践 1.**始终使用适当的托管层级** - `B1` 或更高,以获得可靠的性能 2.**正确配置日志**--使用 Azure Application Insights 进行生产监控 3.**优雅地处理异常** - 针对瞬时故障实施重试逻辑 4.**优化 HTML 内容** - 尽可能减少外部资源,尽可能使用 base64 编码的图片 5.**彻底测试**--在 Azure 部署前在本地验证 PDF 生成 6.**监控资源使用情况** - 跟踪内存和 CPU 消耗情况,以便适当扩展

常见问题解答

生成 PDF 所需的最低 Azure 托管层级是什么?

IronPDF 要求将 Azure Basic B1 层作为满足 PDF 渲染需求的最低托管级别。B1 层为 Chrome PDF 渲染引擎提供了充足的资源,该引擎为 IronPDF 的 HTML 到 PDF 转换功能提供了动力。

我应该为基于 Windows 的 Azure 函数安装哪个软件包?

对于基于 Windows 的 Azure Functions,请从 NuGet 安装 IronPDF 软件包。该软件包已针对 Windows 环境进行了优化,可使用 Chrome 渲染引擎提供完整的 PDF 生成功能。

如何在 Azure Functions 中将 HTML 转换为 PDF?

使用 IronPDF 的 ChromePdfRenderer,只需一行代码即可将 HTML 转换为 PDF。只需创建一个新实例,并调用 RenderHtmlAsPdf() 来渲染 HTML 内容,然后保存生成的 PDF 文件即可。

如果我没有选择正确的应用程序服务计划会发生什么情况?

如果未选择 App 服务计划的计划类型,可能会导致 IronPDF 无法渲染 PDF 文档。正确配置 Azure 托管环境对于 PDF 呈现引擎正常运行至关重要。

为什么发布时必须取消选中 "从软件包文件运行"?

发布您的 Azure Functions 应用程序时,必须取消选中 "从包文件运行",以确保 IronPDF 可以在 Azure 环境中正确访问和使用其渲染组件和依赖项。

能否使用基于 Linux 的 Azure 函数生成 PDF?

是的,对于基于 Linux 的 Azure 函数,请使用 NuGet 中的 IronPdf.Linux 软件包。该软件包专门针对 Linux 环境进行了优化,同时提供相同的 PDF 生成功能。

如果我需要更高的 PDF 生成吞吐量怎么办?

对于高吞吐量系统,您可能需要升级到 B1 层以上。IronPDF 可根据您的 Azure 资源进行扩展,使您能够通过选择更高性能层来处理增加的 PDF 生成需求。

Curtis Chau
技术作家

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

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

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