IronPDF 教程 HTML 到 PDF C# 转换 用 C# 将 HTML 转换为 PDF - 完全 .NET 开发人员指南 Jacob Mellor 已更新:九月 22, 2025 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在双子座打开 向 Gemini 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 This article was translated from English: Does it need improvement? Translated View the article in English 欢迎阅读我们的教程,了解如何将 HTML 转换为 PDF,用于动态网页内容、发票、报告或网络存档。 请跟随我们,使用最可靠的 C# HTML 到 PDF 转换器生成与您的实际网页设计相匹配的 PDF 文档。 TL;DR:将 HTML 转换为 PDF 的快速入门指南 您可以使用 IronPDF 库在 C# 中轻松地将 HTML 转换为 PDF,该库提供了 ChromePdfRenderer.RenderHtmlAsPdf 方法,用于从 HTML、CSS 和 JavaScript 创建高质量的 PDF 文件。 立即开始使用 NuGet 创建 PDF 文件: 使用 NuGet 包管理器安装 IronPDF PM > Install-Package IronPdf 复制并运行这段代码。 IronPdf.ChromePdfRenderer .StaticRenderHtmlAsPdf("<p>Hello World</p>") .SaveAs("pixelperfect.pdf"); 部署到您的生产环境中进行测试 立即开始在您的项目中使用 IronPDF,免费试用! 免费试用30天 购买或注册 IronPDF 30 天试用版后,请查找发送到您电子邮件中的许可证密钥。 在应用程序开始时添加您的许可密钥。 IronPdf.License.LicenseKey = "KEY"; IronPdf.License.LicenseKey = "KEY"; IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 为什么 .NET 开发人员需要 C# 的 HTML 到 PDF 转换器; .NET Framework 缺乏将 HTML 转换为 PDF 的内置功能。 IronPdf 利用嵌入式 Google Chromium 渲染引擎确保高保真转换,准确保留网页内容的布局和样式。 ✅ 稳健的 Chrome 浏览器渲染引擎: Chrome 浏览器的 Blink 引擎可将 HTML 准确转换为 PDF,现在又对内存、表单和渲染准确性进行了增强修复(v2025.9.4) ✅ 精确到像素:生成的 PDF 与网页精确匹配,而不是打印机友好版本。 最近的修复包括自定义页眉/页脚剪切、灰度文本保存和元数据中的特殊字符/表情符号(截至 v2025.9.4) ✅ 全面的现代网络支持:为所有 HTML 元素提供完整的 CSS3、HTML5 和 JavaScript 支持。 最近的增强功能对长文本区域和复选框的表单字段处理进行了隐蔽。 ✅ 性能提升 5-20 倍:速度明显快于浏览器自动化或网络驱动程序,现在还修复了内存泄漏问题,并减少了批量操作中重复元素(如图章/页眉)的文件大小。 ✅ PDF/UA 合规性: 生成符合第 508 条标准的无障碍 PDF,并增强跨平台(如 Linux)表单呈现。 ✅ 无外部依赖性:无需在服务器上安装可执行文件 专为在 .NET 10、9、8、7、6、Core、Standard 或 Framework 上运行的 C#、F# 和 VB.NET 设计 IronPDF 为 .NET 开发人员简化了这一过程,为从您的网络应用程序的 HTML 生成专业外观的 PDF 文档提供了一个直接高效的解决方案。 从发票和报告到证书和档案,开发人员可以使用他们熟悉的网络堆栈工作,而 IronPDF 只需几行代码就能处理复杂的问题。 RELATED: IronPDF Changelog: Updates, milestones, roadmap 您将学到什么 1. 如何将 HTML 转换为 PDF C# 如何将 HTML 字符串转换为 PDF 如何将现有 URL 导出到 PDF 如何从 HTML 文件生成 PDF 2. 如何配置 HTML 到 PDF 的设置。 3. 如何使用高级 PDF 生成和安全功能。 如何为批量创建 PDF 生成 HTML 模板。 如何使用异步方法生成 PDF 如何添加高级安全功能。 4.比较 IronPDF 与其他 .NET PDF 库。 Quick Decision Matrix:IronPDF 与其他 .NET PDF 转换器的比较。 Detailed Comparison:IronPDF 与其他 .NET PDF 转换器的比较。 Real-life HTML to PDF Conversion Comparison:渲染 Reddit 主页。 关于性能和输出 PDF 质量的结论 5. 故障排除和技术支持 常见错误快速修复。 从构建 IronPDF 的工程师处获得帮助,24/7。 1.如何将 HTML 转换为 PDF C#。 无论您是处理 HTML 字符串、URL 还是 HTML 文件,IronPDF 都能提供灵活的选项,生成符合您特定要求的高质量 PDF 文档。 在本教程中,我们将引导您了解最常见的情况,包括 HTML 字符串到 PDF、URL 到 PDF 以及 HTML 文件到 PDF。 此外,IronPDF 还提供各种操作 PDF 文档的操作: 多功能 PDF 转换 动态网页到 PDF 的转换 从 HTML ZIP 文件转换 PDF 将图像转换为 PDF 从 PDF 转换图像 将 DOCX 转换为 PDF 将 RTF 转换为 PDF 将 MD 转换为 PDF 将 XML 转换为 PDF 将 PDF 转换为 HTML 从 ASPX 页面转换 PDF 将 XAML 转换为 PDF (MAUI) 生成 PDF 报告 在 Blazor 服务器 中创建 PDF 将 Razor 转换为 PDF (Blazor Server) 将 CSHTML 转换为 PDF (Razor Pages) 将 CSHTML 转换为 PDF (MVC Core) 将 CSHTML 转换为 PDF (MVC 框架) 将 CSHTML 转换为 PDF(无头) 如何将 HTML 字符串转换为 PDF 文件 最基本的操作是将 HTML 字符串转换为 PDF。 这种方法非常适合动态生成的 HTML 内容。 当您直接将 HTML 转换为 PDF 时,RenderHtmlAsPdf 方法完全支持 HTML5、CSS3、JavaScript 和图像。 using IronPdf; // Create the Chrome renderer var renderer = new ChromePdfRenderer(); // Convert HTML string to PDF var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>"); // Save the PDF pdf.SaveAs("output.pdf"); using IronPdf; // Create the Chrome renderer var renderer = new ChromePdfRenderer(); // Convert HTML string to PDF var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>"); // Save the PDF pdf.SaveAs("output.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 提示(更新至 v2025.9.4)最近的更新修复了 HTML 元数据中的特殊字符/表情符号问题,并确保更好地处理 html 表单字段,包括 Linux 上的中文字符。 使用 EnableJavaScript = true 测试动态内容,以获得最佳效果。 当您的 HTML 字符串引用图片或样式表等本地资产时,请使用 BaseUrlPath 参数正确转换包含所有资源的 HTML 内容: using IronPdf; var renderer = new ChromePdfRenderer(); // Convert HTML content with local image and CSS references string html = @" <link rel='stylesheet' href='styles.css'> <img src='logo.png' alt='Company Logo'> <h1>Company Report</h1> <p>Annual report content...</p>"; // Set base path for resolving relative URLs in HTML to PDF conversion var pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\"); pdf.SaveAs("report.pdf"); using IronPdf; var renderer = new ChromePdfRenderer(); // Convert HTML content with local image and CSS references string html = @" <link rel='stylesheet' href='styles.css'> <img src='logo.png' alt='Company Logo'> <h1>Company Report</h1> <p>Annual report content...</p>"; // Set base path for resolving relative URLs in HTML to PDF conversion var pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\"); pdf.SaveAs("report.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 提示BaseUrlPath 告诉 IronPdf 在哪里可以找到 CSS、JavaScript 和图像文件。 HTML 字符串中的所有相对路径都将从该目录解析。 RELATED HOW-TO ARTICLE: How to Convert HTML String to PDF in C# 如何将现有 URL 导出到 PDF. 使用 C# 将整个网页渲染为 PDF,使团队能够将 PDF 设计和后端渲染工作分开。 通过这种方法,您可以将任何指定的 URL 直接转换为 PDF 格式。 打印与屏幕 CSS 对比 您可以将 IronPDF 配置为使用任一种 CSS 媒体类型呈现。 using IronPdf; using IronPdf.Rendering; // Initialize HTML to PDF converter var renderer = new ChromePdfRenderer(); // Configure CSS media type for rendering specified URLs renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; // Screen media type shows the entire web page as displayed on screen using IronPdf; using IronPdf.Rendering; // Initialize HTML to PDF converter var renderer = new ChromePdfRenderer(); // Configure CSS media type for rendering specified URLs renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; // Screen media type shows the entire web page as displayed on screen IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel JavaScript 支持 在将 HTML 转换为 PDF 时,IronPDF 完全支持 JavaScript、jQuery 甚至 AJAX。 对于动态 HTML 内容,您可以配置 IronPDF 等待 JavaScript 完成后再将网页渲染为 PDF。 这非常适合单页应用程序和动态网站。 using IronPdf; // Configure JavaScript rendering for dynamic HTML content to PDF var renderer = new ChromePdfRenderer(); // Enable JavaScript execution during PDF generation renderer.RenderingOptions.EnableJavaScript = true; // WaitFor.RenderDelay pauses before capturing the HTML renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds using IronPdf; // Configure JavaScript rendering for dynamic HTML content to PDF var renderer = new ChromePdfRenderer(); // Enable JavaScript execution during PDF generation renderer.RenderingOptions.EnableJavaScript = true; // WaitFor.RenderDelay pauses before capturing the HTML renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 在将高级 d3.js 和弦图从网页渲染为 PDF 格式时,还可以显示 JavaScript 的执行情况: using IronPdf; // Create renderer for JavaScript-heavy HTML var renderer = new ChromePdfRenderer(); // Convert d3.js visualization web page to PDF var pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006"); // Save the interactive chart as static PDF pdf.SaveAs("chart.pdf"); using IronPdf; // Create renderer for JavaScript-heavy HTML var renderer = new ChromePdfRenderer(); // Convert d3.js visualization web page to PDF var pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006"); // Save the interactive chart as static PDF pdf.SaveAs("chart.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 响应式 CSS。 由于响应式网页是为在浏览器中查看而设计的,而 IronPDF 不会在服务器的操作系统中打开真正的浏览器窗口,因此响应式 HTML 元素可能会以最小尺寸呈现。建议在呈现整个网页时使用 PdfCssMediaType.Print 来解决这一问题。 // Configure for optimal responsive design handling in HTML to PDF renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print; // Configure for optimal responsive design handling in HTML to PDF renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print; IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel RELATED HOW-TO ARTICLE: How to Render URL to PDF 如何将 HTML 文件转换为 PDF 文件 将本地 HTML 文件转换为 PDF 时会保留所有相关资产,包括 CSS、图像和 JavaScript,就像使用 file:// 协议打开一样。 这种 HTML 转 PDF 的方法最适合将模板或预先设计好的 HTML 页面转换为 PDF 文档。 using IronPdf; // Initialize ChromePdfRenderer for HTML file conversion var renderer = new ChromePdfRenderer(); // Convert HTML file to PDF documents // Preserves all relative paths and linked resources in HTML var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html"); // Save the HTML file as PDF pdf.SaveAs("Invoice.pdf"); // All CSS, JavaScript, and images load correctly in the generated PDF using IronPdf; // Initialize ChromePdfRenderer for HTML file conversion var renderer = new ChromePdfRenderer(); // Convert HTML file to PDF documents // Preserves all relative paths and linked resources in HTML var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html"); // Save the HTML file as PDF pdf.SaveAs("Invoice.pdf"); // All CSS, JavaScript, and images load correctly in the generated PDF IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 提示在将 HTML 文件转换为 PDF 之前,将 HTML 文件连同其资产(CSS、图片)保存在一个单独的文件夹中,以便在浏览器中进行编辑和测试。 这将确保您的 HTML 可以完美地渲染成高质量的 PDF 文档。 RELATED HOW-TO ARTICLE: Render HTML File to PDF 2.如何配置 HTML 转 PDF 设置 在操作 PDF 文档方面,IronPDF 通过 ChromePdfRenderer.RenderingOptions 属性为渲染的 PDF 提供了广泛的自定义功能。 Settings 描述 Example PaperSize 为现有 PDF 文件设置页面尺寸(A4、Letter、Legal 等) PDF纸张大小.A4 文件方向 为现有 PDF 设置纵向或横向 PdfPaperOrientation.Landscape 边距上/下/左/右 以毫米为单位设置页边距(默认值:25 毫米) 40 Css媒体类型 将 CSS 从 HTML 转换为 PDF 的屏幕或打印 PdfCssMediaType.打印 打印 HTML 背景 包含背景颜色/图像(默认值:true) true 启用JavaScript 在呈现 HTML 内容之前执行 JavaScript。 true WaitFor.RenderDelay(等待渲染延迟) 动态 HTML 内容的等待时间(毫秒) 500 有关操作 PDF 文档的完整配置示例,请参见本代码片段: using IronPdf; using IronPdf.Rendering; var renderer = new ChromePdfRenderer(); // Apply print-specific CSS rules renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; // Set custom margins in millimeters renderer.RenderingOptions.MarginTop = 50; renderer.RenderingOptions.MarginBottom = 50; // Enable background colors and images renderer.RenderingOptions.PrintHtmlBackgrounds = true; // Set paper size and orientation renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape; // Generate PDFs with all settings applied to HTML content var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>"; var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent); pdfDocument.SaveAs("styled-output.pdf"); using IronPdf; using IronPdf.Rendering; var renderer = new ChromePdfRenderer(); // Apply print-specific CSS rules renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print; // Set custom margins in millimeters renderer.RenderingOptions.MarginTop = 50; renderer.RenderingOptions.MarginBottom = 50; // Enable background colors and images renderer.RenderingOptions.PrintHtmlBackgrounds = true; // Set paper size and orientation renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape; // Generate PDFs with all settings applied to HTML content var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>"; var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent); pdfDocument.SaveAs("styled-output.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 提示使用 PdfCssMediaType 可在您渲染的 PDF 文件格式中实现更简洁的打印优化布局。 使用屏幕来准确匹配用户在浏览器中看到的内容。 相关 "如何做 "文章: 定制 PDF 转换 优化 PDF 布局 探索所有 PDF 渲染方法 如何设置自定义边距 如何生成灰度 如何添加目录 如何添加或避免分页符 How to Fit to Paper & Zoom 3.如何使用高级 PDF 生成和安全功能 通过高级模板、异步操作和安全功能,解锁 HTML 到 PDF 转换的企业级功能。 这些 PDF 操作方法可以让您大规模创建 PDF 文档,保护敏感的 PDF 文件,并在将 HTML 转换为专业 PDF 格式时确保文档的真实性。 如何生成用于批量创建 PDF 的 HTML 模板 基本批量 PDF 创建 批量创建 PDF 对于高效生成多个个性化 PDF 文档至关重要。 对于基本场景,C# 中的 String.Format 方法最适合用于简单的 PDF 操作。 // Simple HTML templating with String.Format string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World"); // Results in HTML content: <h1>Hello World!</h1> // Simple HTML templating with String.Format string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World"); // Results in HTML content: <h1>Hello World!</h1> IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 对于需要生成 PDF 文档的较长模板,请在 HTML 内容中使用占位符替换: using IronPdf; // Define reusable HTML template for PDF files var htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>"; // Customer names for batch PDF conversion processing var names = new[] { "John", "James", "Jenny" }; // Create personalized PDF documents for each customer var renderer = new ChromePdfRenderer(); foreach (var name in names) { // Replace placeholder with actual data in HTML string var htmlInstance = htmlTemplate.Replace("[[NAME]]", name); // Generate personalized PDF document from HTML content var pdf = renderer.RenderHtmlAsPdf(htmlInstance); // Save with customer-specific filename as PDF files pdf.SaveAs($"{name}-invoice.pdf"); } // Define reusable HTML template for PDF files var htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>"; // Customer names for batch PDF conversion processing var names = new[] { "John", "James", "Jenny" }; // Create personalized PDF documents for each customer var renderer = new ChromePdfRenderer(); foreach (var name in names) { // Replace placeholder with actual data in HTML string var htmlInstance = htmlTemplate.Replace("[[NAME]]", name); // Generate personalized PDF document from HTML content var pdf = renderer.RenderHtmlAsPdf(htmlInstance); // Save with customer-specific filename as PDF files pdf.SaveAs($"{name}-invoice.pdf"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 使用 Handlebars.NET 将 HTML 转换为 PDF 模板 当您将 HTML 转换为 PDF 时,对于带有循环和条件的复杂模板,可使用 Handlebars.NET 高级模板生成带有动态 HTML 内容的 PDF 文档。 # First, install Handlebars.NET for HTML to PDF templating PM > Install-Package Handlebars.NET # First, install Handlebars.NET for HTML to PDF templating PM > Install-Package Handlebars.NET SHELL using HandlebarsDotNet; using IronPdf; // Define Handlebars template with placeholders for HTML content var source = @"<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>"; // Compile template for reuse in PDF conversion var template = Handlebars.Compile(source); // Create data object (can be database records) for HTML to PDF directly var data = new { title = "Monthly Report", body = "Sales increased by 15% this month." }; // Merge template with data to create HTML content var htmlResult = template(data); // Convert templated HTML to PDF using the PDF converter var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlResult); pdf.SaveAs("monthly-report.pdf"); using HandlebarsDotNet; using IronPdf; // Define Handlebars template with placeholders for HTML content var source = @"<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>"; // Compile template for reuse in PDF conversion var template = Handlebars.Compile(source); // Create data object (can be database records) for HTML to PDF directly var data = new { title = "Monthly Report", body = "Sales increased by 15% this month." }; // Merge template with data to create HTML content var htmlResult = template(data); // Convert templated HTML to PDF using the PDF converter var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlResult); pdf.SaveAs("monthly-report.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel RELATED HOW-TO ARTICLE: Learn more about Handlebars.NET on GitHub 控制 PDF 断页: 在转换 HTML 片段时,管理生成 PDF 文档中的分页可确保布局专业、可读性强。使用 CSS 控制 PDF 文件中分页的位置。 <!DOCTYPE html> <html> <head> <style type="text/css" media="print"> .page { page-break-after: always; page-break-inside: avoid; } </style> </head> <body> <div class="page"> <h1>Page 1 Content</h1> </div> <div class="page"> <h1>Page 2 Content</h1> </div> <div class="page"> <h1>Page 3 Content</h1> </div> </body> </html> <!DOCTYPE html> <html> <head> <style type="text/css" media="print"> .page { page-break-after: always; page-break-inside: avoid; } </style> </head> <body> <div class="page"> <h1>Page 1 Content</h1> </div> <div class="page"> <h1>Page 2 Content</h1> </div> <div class="page"> <h1>Page 3 Content</h1> </div> </body> </html> HTML 如何使用异步方法生成 PDF. 当您需要大规模生成 PDF 文件时,IronPDF 可提供企业级性能,支持完全异步和多线程,满足 HTML 到 PDF 的转换要求。 using IronPdf; using System.Threading.Tasks; // Async method for non-blocking PDF generation from HTML content public async Task<byte[]> GeneratePdfAsync(string html) { var renderer = new ChromePdfRenderer(); // Async HTML to PDF conversion preserves thread pool var pdf = await renderer.RenderHtmlAsPdfAsync(html); // Return PDF files as byte array for web responses return pdf.BinaryData; } // Concurrent batch PDF generation for multiple HTML strings public async Task GenerateMultiplePdfsAsync(List<string> htmlTemplates) { var renderer = new ChromePdfRenderer(); // Create parallel conversion tasks to generate PDF documents var tasks = htmlTemplates.Select(html => renderer.RenderHtmlAsPdfAsync(html) ); // Await all PDF conversions simultaneously var pdfs = await Task.WhenAll(tasks); // Save generated PDF files from HTML content for (int i = 0; i < pdfs.Length; i++) { pdfs[i].SaveAs($"document-{i}.pdf"); } } using IronPdf; using System.Threading.Tasks; // Async method for non-blocking PDF generation from HTML content public async Task<byte[]> GeneratePdfAsync(string html) { var renderer = new ChromePdfRenderer(); // Async HTML to PDF conversion preserves thread pool var pdf = await renderer.RenderHtmlAsPdfAsync(html); // Return PDF files as byte array for web responses return pdf.BinaryData; } // Concurrent batch PDF generation for multiple HTML strings public async Task GenerateMultiplePdfsAsync(List<string> htmlTemplates) { var renderer = new ChromePdfRenderer(); // Create parallel conversion tasks to generate PDF documents var tasks = htmlTemplates.Select(html => renderer.RenderHtmlAsPdfAsync(html) ); // Await all PDF conversions simultaneously var pdfs = await Task.WhenAll(tasks); // Save generated PDF files from HTML content for (int i = 0; i < pdfs.Length; i++) { pdfs[i].SaveAs($"document-{i}.pdf"); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 提示HTML 转换为 PDF 的性能优化技巧 使用 64 位系统以获得最佳的 PDF 生成性能。 生成 PDF 文档时确保有足够的服务器资源(避免功率不足的免费层) 为 HTML 内容中复杂的 JavaScript 留出足够的渲染延迟(RenderDelay)。 尽可能重复使用 ChromePdfRenderer 实例。 利用 v2025.9.4 对批处理/同步操作的内存修复来减少资源使用; 测试通过重复自定义页眉/页脚来缩小文件大小。 RELATED HOW-TO ARTICLE: How to Generate PDFs with Async and Multithreading 如何添加高级安全功能 如何在 .NET 中为 PDF 文件添加密码保护。 将 HTML 内容转换为受保护的 PDF 格式时,使用密码和权限保护生成的敏感 PDF 文档。 using IronPdf; var renderer = new ChromePdfRenderer(); // Convert HTML to PDF with security var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>"); // Configure security settings for PDF files pdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documents pdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files // Set granular permissions for PDF format pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserAnnotations = false; pdf.SecuritySettings.AllowUserPrinting = PrintPermissions.LowQualityPrint; // Apply strong encryption to PDF documents pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256; pdf.SaveAs("secure-document.pdf"); using IronPdf; var renderer = new ChromePdfRenderer(); // Convert HTML to PDF with security var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>"); // Configure security settings for PDF files pdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documents pdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files // Set granular permissions for PDF format pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserAnnotations = false; pdf.SecuritySettings.AllowUserPrinting = PrintPermissions.LowQualityPrint; // Apply strong encryption to PDF documents pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256; pdf.SaveAs("secure-document.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 如何在 PDF 文件中添加数字签名 从 HTML 内容生成 PDF 文件时,添加加密签名以确保 PDF 文档的真实性。 using IronPdf; using IronPdf.Signing; var renderer = new ChromePdfRenderer(); // Generate PDF from HTML page var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>"); // Create digital signature with certificate for PDF files var signature = new PdfSignature("certificate.pfx", "password") { SigningContact = "legal@company.com", SigningLocation = "New York, NY", SigningReason = "Contract Approval", SignerName = "Authorized Signer" // New property in v2025.8.8 for enhanced signature details }; // Apply signature to PDF documents pdf.Sign(signature); pdf.SaveAs("signed-contract.pdf"); using IronPdf; using IronPdf.Signing; var renderer = new ChromePdfRenderer(); // Generate PDF from HTML page var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>"); // Create digital signature with certificate for PDF files var signature = new PdfSignature("certificate.pfx", "password") { SigningContact = "legal@company.com", SigningLocation = "New York, NY", SigningReason = "Contract Approval", SignerName = "Authorized Signer" // New property in v2025.8.8 for enhanced signature details }; // Apply signature to PDF documents pdf.Sign(signature); pdf.SaveAs("signed-contract.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel RELATED HOW-TO ARTICLE: Digitally Signing PDF Documents with C# 4.将 IronPDF 与其他 .NET PDF 库进行比较。 IronPDF 凭借其强大的 Chromium 驱动的渲染引擎、直观的 API 和频繁的产品升级,成为许多团队生成 C# PDF 的首选解决方案。 让我们将 IronPDF 与其他 PDF 转换器进行比较,找到最适合您的 PDF 生成需求的产品。 快速决策矩阵:IronPDF 与其他 .NET PDF 转换器的比较。 解决方案 何时使用 最适合 IronPDF 以准确的视觉保真度将现代网站/HTML 转换为 PDF。 需要可靠的 HTML 渲染引擎、动态内容和专业支持的企业应用。 wkhtmltopdf中文版 在可以接受过时呈现的非关键应用中进行简单的 HTML 转换。 使用传统 HTML/CSS 生成基本文档。 Syncfusion 已在 Syncfusion 生态系统中投资或有资格获得免费社区许可证。 使用多个 Syncfusion 组件的组织。 Aspose.PDF 在对 HTML 呈现质量要求不高的情况下进行复杂的 PDF 操作。 HTML 转换之外的广泛 PDF 编辑功能。 请注意:PDFSharp 和 iTextSharp 等解决方案缺乏将 HTML 转换为 PDF 的本机功能,因此不在本次比较之列。 QuestPDF 要求采用代码优先的方法,不支持 HTML。 使用这些库的开发人员必须依赖第三方工具进行 HTML 渲染。 相关比较: 比较 IronPdf 和 Syncfusion 比较 IronPDF 和 Aspose 详细比较:IronPDF 与其他 .NET PDF 转换器的比较。 IronPDF wkhtmltopdf Syncfusion Aspose.PDF 渲染准确性 完美像素 打印风格 Good Good HTML5 支持 Full Outdated Full Full CSS3 支持 Full Limited Full Full JavaScript Full No Limited Limited 易用性 高级应用程序接口 CLI Only Good Complex 服务器安装 None 可执行 None None 性能 快速 + 异步 Slow Fast Fast Support 全天候工程师 Community 商业 商业 License 商业 LGPLv3 商业(订阅) 商业 Pricing $799+ View Licensing Free $900+ $1,175+ 真实环境下的 HTML 转 PDF 比较:渲染 Reddit 主页 为了评估输出 PDF 的质量,我们测试了包含动态网络内容、现代 CSS 和 JavaScript HTML 元素的 Reddit 主页。 该页面是生成输出 PDF 的理想测试案例。 https://www.reddit.com/ IronPDF IronPDF 提供像素级精确的结果,保留所有动态网页内容、现代的网页字体样式和交互元素,完全按照 Chrome 中显示,只需要几行代码。 Syncfusion Syncfusion 渲染的 PDF 大多数内容和样式都缺失,特别是动态内容。 最初被 Reddit 的安全措施阻挡。 要达到更好的结果需要大量命令行调试,然而输出仍然是不完整的。 Aspose.PDF Aspose.PDF 首先需要手动下载 HTML(不支持直接 URL)。 转换后,输出缺乏适当的格式,几乎所有内容部分都缺失,使其不适合处理包含动态内容的现代网页。 wkhtmltopdf wkhtmltopdf 完成速度较快但生成了一个平凡、静态的页面,缺少关键内容如实时更新、动态元素和交互部分。 这展示了 wkhtmltopdf 不适用于现代的、JavaScript 驱动的网站。 性能和输出 PDF 质量的结论 对于需要可靠的 HTML 转 PDF 转换器的 .NET 开发者来说,IronPDF 以最少的代码量、易于使用的 API 和频繁的产品增强而脱颖而出。 在涉及 Web 内容的真实世界测试中,它提供了最快速、最精确的结果,而 Syncfusion 表现落后,Aspose 需要额外步骤,而 wkhtmltopdf 缺失现代样式。 IronPDF 为现代 HTML 转 PDF 转换工作流提供了速度、精确性和简便性的最佳平衡。 请注意: Aspose、SyncFusion 和 wkhtmltopdf 是其各自所有者的商标。 本网站与它们无关且未得到它们的认可。 所有名称、徽标和品牌属于其所有者,并且比较基于撰写时公开可用的信息。 总结 本指南涵盖了在 .NET 中将 HTML 转换为 PDF 所需的一切:从基本字符串转换到异步处理、数字签名和批量生成等高级功能。 我们展示了三种转换方法、基本配置、高级功能和安全设置,并通过动态文档生成的实际测试比较了 IronPDF 和其他库的表现。 而竞争对手在现代网站上表现不佳或者需要复杂的解决办法,IronPDF 的强大渲染引擎以最少的代码量提供了完美的结果。 准备好简化您的 PDF 工作流并在几行代码内体验多功能的 PDF 生成吗? 通过 NuGet 包管理器(或选择在 Visual Studio 中管理 NuGet 包)安装 IronPDF 并立即将您的第一个 HTML 转换为 PDF。 启动您的 30 天免费试用进行无水印的生产测试。 灵活的许可方案从 $799 开始,提供透明的团队定价以满足您的需求。 查看 IronPdf 授权许可 5. 排错与技术支持 处理 HTML 转 PDF 转换中遇到的以下错误有麻烦吗? IronPDF 提供 24/7 工程师支持,可通过 https://ironpdf.com/ 上的聊天小工具获取。 快速解决常见错误 首次渲染慢? 正常。 Chrome 在 2–3 秒内初始化,然后加速。 云问题? 至少使用 Azure B1 或同等资源。 资产丢失? 设置基本路径或嵌入为 base64。 元素丢失? 为 JavaScript 执行添加 RenderDelay。 渲染时的内存问题? 更新到 v2025.9.4 以解决 HTML 转 PDF、戳记和页眉/页脚问题。 表单字段问题(如长文本区、复选框)? 在 v2025.7.17 中已修复; 确保复选框具有唯一名称。 自定义页眉/页脚裁剪或特殊字符损坏? 在 v2025.8.8 中已解决; 测试自动换行和元数据。 从 IronPDF 的工程师团队获得帮助,全天候提供服务 全面的故障排除指南 性能优化策略 工程支持请求 快速故障排除检查表 下一步 如何合并或拆分 PDF 文档 查看如何使用 如何在 PDF 文件中添加自定义页眉和页脚 查看如何使用 如何编辑 PDF 中的文本和区域 查看如何使用 Creating PDFs in C# Editing PDFs in C# 常见问题解答 如何使用 C# 将 HTML 字符串转换为 PDF? 要将 HTML 字符串转换为 PDF,请使用 ChromePdfRenderer 类及其 RenderHtmlAsPdf 方法。将 HTML 字符串传递给此方法,然后使用 SaveAs 保存 PDF。 在 C# 中将网页 URL 转换为 PDF 文档的步骤是什么? 您可以使用 RenderUrlAsPdf 方法直接将网页 URL 转换为 PDF,这使您可以保留样式、图像和交互元素,如表单和超链接。 如何确保 PDF 中的 JavaScript 内容被正确渲染? 通过设置 RenderingOptions.EnableJavaScript = true 启用 JavaScript 渲染,并使用 RenderingOptions.WaitFor.RenderDelay 添加渲染延迟,以确保在转换之前动态内容已完全加载。 在 C# 中将标题和页脚添加到 PDF 的最佳方法是什么? 使用 TextHeaderFooter 类用于简单文本标题和页脚,或使用 HtmlHeaderFooter 类用于更复杂的 HTML 内容。您可以包括动态占位符,如 {page}、{total-pages} 和 {date} 用于自动生成内容。 我可以使用 C# 从一个 HTML 模板创建多个 PDF 吗? 是的,创建包含占位符的 HTML 模板,然后使用 like Handlebars.NET 这样的字符串替换或模板库。在循环数据中用实际值替换占位符,并使用 RenderHtmlAsPdf 生成 PDF。 是否可以用密码保护我生成的 PDF? 是的,您可以使用 SecuritySettings 属性设置用户和所有者密码,配置如打印和复制等权限,并应用 SecuritySettings.EncryptionAlgorithm 进行 AES256 加密。 如何优化生成大量 PDF 的性能? 通过使用诸如 RenderHtmlAsPdfAsync 等异步方法进行非阻塞操作来优化性能。重用 ChromePdfRenderer 实例,使用 Task.WhenAll 并发处理多个 PDF,并确保您的 64 位系统拥有足够的服务器资源。 如何在 C# .NET 中管理 PDF 输出中的分页符? 通过在打印媒体类型 CSS 块中使用 CSS 属性如 page-break-after: always 和 page-break-inside: avoid 控制 PDF 中的分页符。 PDF 设置纸张尺寸和方向有哪些选项? 使用 RenderingOptions.PaperSize 设置纸张尺寸(选项包括 A4、Letter、Legal 等),并使用 RenderingOptions.PaperOrientation 设置方向为纵向或横向。还支持以毫米或英寸为单位的自定义尺寸。 如何合并多个 PDF 或在我的文档中包含封面? 使用静态 PdfDocument.Merge 方法合并多个 PDF。单独生成您的封面页并与您的主文档合并以创建综合性 PDF。 此库的渲染质量与 wkhtmltopdf 等其他选项相比如何? 此库使用现代 Chrome 渲染引擎来创建像素完美的 PDF,而 wkhtmltopdf 使用过时的 WebKit 引擎。它不需要服务器可执行文件,支持完整的 JavaScript/CSS3,定期更新并提供专业支持。 为何选择此库而不是 PDFSharp 进行 HTML 转 PDF 转换? PDFSharp 缺乏内置 HTML 到 PDF 转换,需复杂的解决方案。此库提供直接的 HTML/URL/文件转换,高级 API,支持现代网络技术以及定期更新和专业支持。 此库与 iTextSharp 在 HTML 转换方面有何不同? iTextSharp 的免费版本不支持原生 HTML 到 PDF 转换,并且 API 的复杂度较高。此库提供无缝的 HTML 转换,直观的 API,完整的 CSS3/JavaScript 支持,以及没有 AGPL 许可证限制。 此库的渲染质量与 Aspose.PDF 相比如何? 此库生产 Chrome 质量的像素完美 PDF,而 Aspose.PDF 常常会丢失样式和动态内容。Aspose 需要手动下载 HTML 进行 URL 转换,但此库直接转换 URL,精确度更高。 为什么可能选择此库而不是 Syncfusion PDF? 虽然 Syncfusion 功能强大,此库优化的 Chrome 引擎性能更快,处理动态内容更有效。提供更简单的 API 和附加功能,如 OCR 和条码生成。 .NET 10 兼容性:IronPDF 是否立即支持 .NET 10? 是的——IronPDF 完全兼容 .NET 10。根据 IronPDF 的发布说明,该库无需任何额外配置即可立即用于 .NET 10 项目。无论您使用的是 Web 应用程序、控制台应用程序、桌面应用程序还是微服务应用程序,IronPDF 都能与 .NET 10 无缝集成。 Jacob Mellor 立即与工程团队聊天 首席技术官 Jacob Mellor 是 Iron Software 的首席技术官,是 C# PDF 技术的先锋工程师。作为 Iron Software 核心代码库的原始开发者,自公司成立以来,他就塑造了公司的产品架构,并与首席执行官 Cameron Rimington 一起将其转变成一家公司,拥有50多人,服务于 NASA、特斯拉和全球政府机构。Jacob 拥有曼彻斯特大学 (1998-2001) 的一级荣誉土木工程学士学位。1999 年在伦敦创办了自己的第一家软件公司,并于 2005 年创建了他的第一个 .NET 组件后,他专注于解决微软生态系统中的复杂问题。他的旗舰 IronPDF 和 Iron Suite .NET 库在全球已获得超过 3000 万次的 NuGet 安装,其基础代码继续为全球使用的开发者工具提供支持。拥有 25 年商业经验和 41 年编程经验的 Jacob 仍专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。 审核者 Jeffrey T. Fritz 首席项目经理 - .NET 社区团队 Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。 评论 12 五月, 2025 csharpBuilderX says: 回复迅速且帮助准确。支持体验非常棒! 11 五月, 2025 Daniel N. says: 所有事情处理得非常快。我没想到会这么顺利。 9 五月, 2025 Leila G. says: 在问题解决过程中得到耐心和清晰的指导。顶级支持。 7 五月, 2025 johnny_dev87 says: 支持人员很友好,乐于助人,一直陪伴我直到问题解决。干得好! 4 五月, 2025 Theo B. says: 反应迅速,迅速了解问题。很欣赏这种无麻烦的解决方法。 29 四月, 2025 megan.codes says: 绝佳的客户体验。感觉有人真正倾听和帮助了我。 27 四月, 2025 Matt Mariano says: 过程非常简单。非常感谢 21 四月, 2025 Ajay V. says: 感谢快速的帮助和流畅的交流。毫无压力地得到了我需要的。 19 四月, 2025 Matt Mariano says: 过程非常简单。非常感谢 12 四月, 2025 Santosh Ramareddy says: 理解并能轻松指导我 4 四月, 2025 Rob Davis says: 立刻帮我解决了问题并等待我测试。我对收到的服务感到非常满意 3 四月, 2025 harry_devtools says: 支持团队准确知道该怎么做。快速、高效,而且在整个过程中礼貌。 30 三月, 2025 Chris Derham says: 无痛地解决了问题。干得好。你应该给支持团队加薪! 22 三月, 2025 Varonique Philander says: 我能够获取所需的信息。谢谢。 11 三月, 2025 Jan Dolezalek says: 支持快速响应。问题立即得到解决。 4 三月, 2025 Henrik Melchander says: 快速而清晰 25 二月, 2025 Aayush Raj says: 杰作 15 二月, 2025 Doug Charbonneau says: 支持花了不少时间与我一起解决问题。原本快放弃了,可能挽救了一笔交易!! 1 二月, 2025 Rod Rencoret says: 支持服务很到位,服务很好。谢谢你。 19 一月, 2025 Beugin says: 简单而有效。 3 一月, 2025 William Mayerchak says: 好文章,响应时间快。 18 九月, 2024 Abby Fields says: 老实说,还不错。解释很清楚,我喜欢这些示例可以直接复制粘贴。不是每篇文档都能做到这一点。一个建议:添加一个关于与 Razor 视图集成的部分。 8 六月, 2024 Leo Fernandez says: 我正在寻找一种将动态 HTML 模板转换为 PDF 而不影响 CSS 样式的方法,这个教程很到位。我需要的东西全都有。甚至许可部分也帮我解开了一些困惑。 17 一月, 2024 iAmNick_C says: 简单明了,我很欣赏这一点。PDF 输出的效果看起来也很不错。 30 十一月, 2023 user12345 says: PDF 现在在正确的边距内打印,终于可以了。谢谢! 3 十月, 2023 Oscar Vega says: 如果您正在使用 .NET,想要在不失去理智的情况下将 HTML 转换为 PDF,这份指南是一个好选择。轻松集成,没有奇怪的依赖项。只需添加包即可。 11 六月, 2023 skywalker.dev says: 在我的咖啡凉之前我就开始运行了。这说明了什么! 21 四月, 2023 Vanessa Li says: 教程出乎意料地详细。我尤其欣赏对渲染样式和字体的关注。我们在一个相当大的企业应用中使用了 IronPDF,它还没有让我们失望。 2 一月, 2023 theRealCSharpNerd says: 坚实的指南。在 IronPDF 的学习曲线上有点奇怪,但这让它更容易让我理解。 27 八月, 2022 Nadia Hassan says: 不错的资源。可以更多地涵盖边缘案例,但对大多数开发人员来说是一个很好的起点。 14 三月, 2022 Tina Q. says: 还可以。我期望能有更多高级用例,比如动态添加书签或目录。不过总体上,它让我开始使用了。 9 二月, 2022 Priya Chatterjee says: 我喜欢这是没有假设太多内容。它对初学者友好,但对像我这样的开发者仍然有用,想确认最佳实践。做得很好。 13 十一月, 2021 dev_mike89 says: 运行得很顺利。10 分钟就搞定了! 11 五月, 2021 Harvey Becker says: 用于内部报告仪表板项目。开箱即可正常工作。希望能看到一些关于长渲染作业的异步处理示例。 4 十一月, 2020 lucy_d_coder says: 干净简单。我喜欢这样。 5 七月, 2020 Jacob.Stone says: 希望早些找到这个。为我节省了大量的反复试验。 29 四月, 2020 Benito Reyes says: 可以更多地使用 Razor Pages 示例。不过,教程提供了所有正确的部分以使其工作。 10 二月, 2020 xXJoelXx says: 就两个字:生活救星。 8 十月, 2019 Laura Meyers says: 我已经使用 IronPDF 几年了。每次我回顾文档,它们都有所改进。这篇 HTML 到 PDF 教程也不例外——组织良好,非常面向开发者。 20 九月, 2019 CodeWithMarla says: 老派开发者在此。IronPDF 也不赖。本教程提供了足够的信息来让我在谷歌知道之前就能入手。 25 六月, 2018 Matt R. says: 这份指南在我从另一个 PDF 引擎迁移时对我很有帮助。关于嵌入 CSS 的样式支持部分,非常棒。 查看所有评论 留下评论 准备开始了吗? Nuget 下载 16,493,056 | Version: 2025.11 刚刚发布 免费 NuGet 下载 总下载量:16,493,056 查看许可证