IRONSOFTWAREHOME

如何在C#中将HTML转换为PDF(开发者指南)

Jacob Mellor,Team Iron 的首席技术官
Jacob Mellor
Updated: 2026年9月5日

用C#将HTML转换为PDF看起来简单,直到实际项目遇到渲染、部署和扩展限制。 本指南展示了如何使用IronPDF的Chrome引擎可靠地执行此操作,从开始的可运行代码到一分钟内即可运行。 如果您还在选择工具,先比较所有C# HTML到PDF库

TL;DR:HTML 转 PDF 快速入门指南

您可以很容易地在C#中使用IronPDF库将HTML转换为PDF,该库提供ChromePdfRenderer.RenderHtmlAsPdf方法以从HTML、CSS和JavaScript创建高质量的PDF文件。

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

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

    new IronPdf.ChromePdfRenderer()
        .RenderHtmlAsPdf("<p>Hello World</p>")
        .SaveAs("pixelperfect.pdf");
    C#
  3. 3部署到您的生产环境中进行测试

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

购买或注册 IronPDF 30 天试用版后,请查找发送到您电子邮件中的许可证密钥。 在应用程序开始时添加您的许可密钥。

IronPdf.License.LicenseKey = "KEY";

本指南中的所有代码均在IronPDF v2026.6.1 · .NET 10 · 2026年6月上经过验证。

为什么.NET开发人员需要C#的HTML转PDF转换器

IronPDF 利用嵌入式 Google Chromium 渲染引擎确保高保真转换,准确保留网页内容的布局和样式。

✅**强大的Chrome渲染引擎:**使用Chrome的Blink引擎进行精确的HTML转PDF转换。

✅**像素级准确性:**生成的PDF完全匹配网页,而不是打印友好版本。

✅**完整的现代Web支持:**完整支持CSS3、HTML5和JavaScript的所有HTML元素。

✅**5-20倍性能提升:**显著快于浏览器自动化或Web驱动程序。

✅ **PDF/UA合规:**可生成符合508条款标准的可访问型PDF。

✅**无外部依赖:**无需在服务器上安装可执行文件。

✅专为C#、F#和VB.NET设计,适用于.NET 109、8、7、6、Core、Standard和Framework

请注意: 最新版本v2026.6.1 (2026年6月):渲染过程中从HTML标题自动生成PDF书签,完全在内存中对云和沙箱环境进行PDF线性化,带有签名者证书检查的ECDSA数字签名、可点击链接注释,以及更精简,更加安全的Linux和Docker镜像。 请参阅完整的变更日志以了解完整的发布历史。)]

IronPDF 为 .NET 开发人员简化了这一过程,为从您的网络应用程序的 HTML 生成专业外观的 PDF 文档提供了一个直接高效的解决方案。 从发票和报告到证书和档案,开发人员可以使用他们熟悉的网络堆栈工作,而 IronPDF 只需几行代码就能处理复杂的问题。

相关: IronPDF Changelog:更新、里程碑、路线图

您将学到什么

1. 如何将 HTML 转换为 PDF C#

2. 如何配置 HTML 到 PDF 的设置如何设置自定义HTTP头、Cookie和登录凭据 如何配置代理以进行PDF渲染

3. 如何使用高级 PDF 生成和安全功能

  1. 如何在云平台上部署HTML到PDF转换 如何在Azure上部署 如何在AWS Lambda上部署 如何使用Docker部署

  2. 将IronPDF与其他.NET PDF库进行比较

  3. 疑难解答与技术支持

根据使用案例选择您的HTML至PDF路径

不确定从哪里开始? 直接跳转到与您正在构建的内容相匹配的路径:

您正在构建的内容在此开始
转换一次性的HTML字符串HTML String to PDF
存档一个实时URL或网页URL to PDF
构建Razor Pages或MVC应用程序Razor / MVC to PDF
批量或高容量的服务器端生成异步及批量生成

1. How to Convert HTML to PDF C#

无论您是处理 HTML 字符串、URL 还是 HTML 文件,IronPDF 都能提供灵活的选项,生成符合您特定要求的高质量 PDF 文档。

在本教程中,我们将引导您了解最常见的情况,包括 HTML 字符串到 PDF、URL 到 PDF 以及 HTML 文件到 PDF。 此外,IronPDF 还提供各种操作 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");

在IronPDF v2026.6.1 · .NET 10 · 2026年6月上经过验证。

输出

运行上面的代码片段,IronPDF返回一个单页PDF,准确地包含您传递的标题,这是最简单的渲染形式:

性能

IronPDF 将字符串、URL 和 HTML 转换为 PDF 的性能测试是在配备 16GB 内存的联想笔记本电脑上进行的。 测试文档是一份 3 页的 Enterprise 发票,其中包含标准的 CSS Grid、渐变效果和多区域表格。

翻译结果如下:

指标价值
平均渲染时间~486 毫秒
每次渲染的内存~3.6 MB

在 16 核工作站(Windows 11,.NET 8)上连续渲染 5 次测得。 首次调用还包含一次性的 Chromium 引擎初始化(约 1.3 秒)

我第一次运行测试时,渲染速度非常缓慢(每次调用超过一秒!)。 观察了一会儿后,我意识到当时有多个 Chromium 实例正在运行,而且设备处于电池供电状态,这两点都导致该库无法展现其真正的速度。 关闭竞争进程并连接电源后,运行效率显著提升:预热运行平均耗时约 486 毫秒,最快仅需 473 毫秒。

提示: 最近更新修复了HTML元数据中特殊字符/表情符号的问题,并确保更好地处理HTML表单字段,包括Linux上的中文字符。 使用EnableJavaScript = true测试动态内容以获得最佳结果。

当您的HTML字符串引用本地资源如图像或样式表时,使用baseUrlOrPath参数适当地转换带有所有资源的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");
提示: baseUrlOrPath告诉IronPDF在哪里找到您的CSS、JavaScript和图像文件。 HTML 字符串中的所有相对路径都将从此目录解析。
警告: 一个需要注意的问题是,无论使用何种库进行自动化文档生成,测试输出结果都至关重要,因为当引用默认回退到系统设置时,Enterprise文档中可能会出现损坏的元素或缺失的资源。 IronPDF为您提供baseUrlOrPath参数以将相对路径指向正确的目录,因此在批量运行前快速输出检查通常是抓住它所需要的。

RELATED HOW-TO ARTICLE: 如何用 C# 将 HTML 字符串转换为 PDF

如何将现有 URL 导出到 PDF.

using C# 将整个网页渲染为 PDF,使团队能够将 PDF 设计和后端渲染工作分开。 通过这种方法,您可以将任何指定的 URL 直接转换为 PDF 格式。

核心方法是RenderUrlAsPdf,它获取一个实时页面并在一次调用中渲染它:

using IronPdf;

// Create a PDF from any existing web page
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("wikipedia.pdf");

输出

这里RenderUrlAsPdf捕获一个实时的维基百科文章到一个静态的、打印就绪的PDF文件中,文本、图片、表格和布局在全部33页中保持一致:

打印与屏幕 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

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

在将高级 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://observablehq.com/@d3/chord-diagram");

// Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf");

在IronPDF v2026.6.1 · .NET 10 · 2026年6月上经过验证。

响应式 CSS

由于响应式网页是设计为在浏览器中查看的,并且IronPDF不会在服务器的操作系统中打开真实的浏览器窗口,因此响应式HTML元素可能在其最小大小呈现。推荐PdfCssMediaType.Print解决在渲染整个网页时的问题。

// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

相关 "如何 "文章: 如何将 URL 渲染为 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

在IronPDF v2026.6.1 · .NET 10 · 2026年6月上经过验证。

输出

RenderHtmlFileAsPdf指向HTML发票模板,文件的完整设计(徽标、项目表、总计)以完美的像素呈现,无需您编写额外代码:

性能

通过将所有变量保持恒定,再次测量了性能,以渲染来自磁盘文件中的那份 3 页 Enterprise 发票:

指标价值
平均渲染时间~502 毫秒
每次渲染的内存~3.1 MB

在同一台 16 核工作站(Windows 11,.NET 8)上连续渲染 5 次测得。 基于文件的渲染与内存中字符串渲染的误差在 3% 左右; 从磁盘读取 HTML 不会增加可测量的开销。

将 HTML 文件及其资源(CSS、图像)放在单独的文件夹中,以便在将 HTML 文件转换为 PDF 之前在浏览器中进行编辑和测试。 这样可以确保您的 HTML 代码完美渲染,从而生成高质量的 PDF 文档。

相关 "如何做 "文章: 将 HTML 文件渲染为 PDF

如何将Razor页面转换为PDF

如果您的ASP.NET Core项目已经使用Razor Pages,您可以直接将它们转换为PDF,而无需重新构建HTML。 IronPDF的Razor扩展添加了RenderRazorToPdf方法,它接收您的.cshtml页面(包括其模型和布局)并在一次调用中将其渲染为PDF文件。

Install-包 IronPdf.Extensions.Razor

using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

public class ReportModel : PageModel
{
    public IActionResult OnGet()
    {
        var renderer = new ChromePdfRenderer();

        // Render a Razor Page directly to PDF
        PdfDocument pdf = renderer.RenderRazorToPdf(this);

        Response.Headers.Add("Content-Disposition", "inline");
        return new FileContentResult(pdf.BinaryData, "application/pdf");
    }
}
请注意: RenderRazorToPdf需要一个ASP.NET Core Web应用项目。 它无法在控制台应用程序或类库中工作; Razor视图引擎必须在主机管道中可用。

相关的操作指南: 如何在Razor页面中将CSHTML转换为PDF

如何将MVC视图转换为PDF

使用MVC模式的团队可以直接从现有的视图和控制器生成PDF。 安装MVC Core扩展包,然后使用视图路径和模型调用RenderRazorViewToPdf; IronPDF处理Razor渲染管道并输出已完成的PDF。

这对于报告、发票以及任何已在浏览器中设计和测试的HTML页面特别有用。 生成的PDF保留完整的视图输出,包括布局页面和部分视图。

Install-包 IronPdf.Extensions.Mvc.Core

首先,在Program.cs中注册IRazorViewRenderer服务,以便您的控制器可以注入它:

using IronPdf.Extensions.Mvc.Core;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();

// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();

然后在您的控制器操作中,注入渲染器并将任何视图转换为PDF:

using IronPdf;
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc;

public class ReportController : Controller
{
    private readonly IRazorViewRenderer _viewRenderService;

    // Inject the view renderer via constructor
    public ReportController(IRazorViewRenderer viewRenderService)
    {
        _viewRenderService = viewRenderService;
    }

    public IActionResult Download()
    {
        var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
        var renderer = new ChromePdfRenderer();

        // Render an MVC View with model data to PDF
        PdfDocument pdf = renderer.RenderRazorViewToPdf(
            _viewRenderService, "Views/Home/Report.cshtml", reportModel);

        Response.Headers.Add("Content-Disposition", "inline");
        return new FileContentResult(pdf.BinaryData, "application/pdf");
    }
}

相关的操作指南: 如何在ASP.NET Core MVC中将视图转换为PDF

动态网页生成PDF

您是否需要保留并将动态网页转换为PDF,并保留精确的布局和格式? 不妨试试IronPDF,它能快速将多种流行的动态网页框架转换为PDF。

从ASPX页面生成PDF

以下是一个简短的代码片段,用于将ASPX页面在Active Server Pages中转换为PDF。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using IronPdf;

namespace AspxToPdfTutorial
{
    public partial class Invoice : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);
        }
    }
}

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

XAML转换为PDF(MAUI)

对于希望构建跨平台应用程序的开发人员,.NET MAUI是框架中受欢迎的选择之一。 IronPDF完全支持使用几步将XAML转换为PDF。

using IronPdf.Extensions.Maui;

namespace mauiSample;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private void PrintToPdf(object sender, EventArgs e)
    {
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Apply HTML header
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<h1>Header</h1>",
        };

        // Render PDF from Maui Page
        PdfDocument pdf = renderer.RenderContentPageToPdf<MainPage, App>().Result;

        pdf.SaveAs(@"C:\Users\lyty1\Downloads\contentPageToPdf.pdf");
    }
}

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

生成PDF报告

在生成PDF报告时,精确的尺寸和格式至关重要。 因此,IronPDF允许您通过仅几步无缝生成PDF。

using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

在Blazor服务器中创建PDF

IronPDF支持.NET 6,包含Blazor等项目类型,此代码片段简要介绍了如何在Blazor服务器中创建PDF。

@code {

    // Model to bind user input
    private InputHTMLModel _InputMsgModel = new InputHTMLModel();

    private async Task SubmitHTML()
    {
        // Set your IronPDF license key
        IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

        // Create a renderer to convert HTML to PDF
        var render = new IronPdf.ChromePdfRenderer();

        // Render the HTML input into a PDF document
        var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);

        var fileName = "iron.pdf";

        // Create a stream reference for the PDF content
        using var streamRef = new DotNetStreamReference(stream: doc.Stream);

        // Invoke JavaScript function to download the PDF in the browser
        await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
    }

    public class InputHTMLModel
    {
        public string HTML { get; set; } = "My new message";
    }
}

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

Razor到PDF(Blazor服务器)

除了在Blazor服务器中创建PDF之外,IronPDF还支持从Blazor页面中的Razor组件生成PDF文档。 使得PDF文件和页面的创建更加流线型。

[Parameter]
public IEnumerable<PersonInfo> persons { get; set; }
public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();
 
protected override async Task OnInitializedAsync()
{
    persons = new List<PersonInfo>
    {
        new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
        new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
        new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
    };
}
private async void PrintToPdf()
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
 
    // Apply text footer
    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} - {time}",
            DrawDividerLine = true,
            RightText = "Page {page} of {total-pages}",
            Font = IronSoftware.Drawing.FontTypes.Arial,
            FontSize = 11
        };
 
    Parameters.Add("persons", persons);
 
    // Render razor component to PDF
    PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);
 
    File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);
}

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

CSHTML到PDF

将CSHTML(Razor)转换为PDF允许您直接从网页应用程序生成专业、打印就绪的文档。 这对于发票、报告、合同或任何动态内容非常有用。 IronPDF支持Razor Pages、MVC Core和MVC Framework,以及无头渲染,使其在.NET应用程序中轻松集成PDF生成,只需几行代码。

CSHTML到PDF(Razor页面)
using IronPdf.Razor.Pages;
 
public IActionResult OnPostAsync()
{
    persons = new List<Person>
    {
    new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
    new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
    new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
    };
 
    ViewData["personList"] = persons;
 
    ChromePdfRenderer renderer = new ChromePdfRenderer();
 
    // Render Razor Page to PDF document
    PdfDocument pdf = renderer.RenderRazorToPdf(this);
 
    Response.Headers.Add("Content-Disposition", "inline");
 
    return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");
}

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

CSHTML到PDF(MVC核心)
public async Task<IActionResult> Persons()
{
    var persons = new List<Person>
    {
    new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
    new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
    new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
    };
    if (_httpContextAccessor.HttpContext.Request.Method == HttpMethod.Post.Method)
    {
        ChromePdfRenderer renderer = new ChromePdfRenderer();
 
        // Render View to PDF document
        PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons);
        Response.Headers.Add("Content-Disposition", "inline");
 
        // Output PDF document
        return File(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf");
    }
    return View(persons);
}

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

CSHTML到PDF(MVC框架)
public ActionResult Persons()
{
    var persons = new List<Person>
    {
    new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
    new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
    new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
    };
    if (HttpContext.Request.HttpMethod == "POST")
    {
        // Provide the path to your view file
        var viewPath = "~/Views/Home/Persons.cshtml";
        ChromePdfRenderer renderer = new ChromePdfRenderer();
 
        // Render Razor view to PDF document
        PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
        Response.Headers.Add("Content-Disposition", "inline");
 
        // View the PDF
        return File(pdf.BinaryData, "application/pdf");
    }
    return View(persons);
}

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

CSHTML到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();
   
    // 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");
});

有关此代码片段的更详细说明及其附加功能,请参见我们综合的指南

2.如何配置 HTML 转 PDF 设置

在操纵PDF文档方面,IronPDF通过ChromePdfRenderer.RenderingOptions属性为渲染的PDF提供广泛的自定义选项。

设置描述示例
PaperSize为现有 PDF 文件设置页面尺寸(A4、Letter、Legal 等)PdfPaperSize.A4
PaperOrientation为现有 PDF 设置纵向或横向PdfPaperOrientation.Landscape
MarginTop/Bottom/Left/Right以毫米为单位设置页边距(默认值:25 毫米)25
CssMediaType将 CSS 从 HTML 转换为 PDF 的屏幕或打印PdfCssMediaType.Print
PrintHtmlBackgrounds包含背景颜色/图像(默认值:true)真实
启用JavaScript

在呈现 HTML 内容之前执行 JavaScript

真实
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");
提示: 在渲染的 PDF 文件格式中使用 PdfCssMediaType 可以获得更清晰、更适合打印的布局。 使用 Screen 来精确匹配用户在浏览器中看到的内容。

相关 "如何做 "文章:

如何设置自定义HTTP头、Cookie和登录凭据

当渲染需要身份验证或特定请求元数据的URL时,IronPDF允许您在请求中包含登录凭据、会话Cookie和HTTP头。这样可以直接将内部网仪表板、限制性报告或API生成的页面直接渲染为PDF,而无需单独检索HTML。

对于基本或NTLM身份验证,在渲染器上设置一个LoginCredentials对象。 对于基于令牌或会话的访问,在调用RenderingOptions传递cookie和header。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
    NetworkUsername = "user@domain.com",
    NetworkPassword = "securePassword"
};

// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";

// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";

var pdf = renderer.RenderUrlAsPdf("https://intranet.com/pany.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");

相关的操作指南: 如何在登录身份验证后渲染PDF |自定义HTTP请求头

如何配置代理以进行PDF渲染

在渲染加载外部资源的HTML时,通过公司代理,作为RenderHtmlAsPdf()的第三个参数传递代理地址。 这是一种方法参数,而不是ChromePdfRenderOptions的属性,所以它是在每次渲染调用时设置,而不是在渲染器实例上。

对于经过身份验证的代理,使用http://user:pass@host:port格式在URL中直接嵌入凭证。 用Uri.EscapeDataString()对密码中的特殊字符进行URL编码。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Proxy is the third parameter, not a render option
var pdf = renderer.RenderHtmlAsPdf(
    "<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
    baseUrlOrPath: null,
    proxy: "http://proxy.co/rp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
C#

注意,RenderUrlAsPdf()不接受代理参数。 要渲染在代理后面的实时URL,首先使用RenderHtmlAsPdf()并带代理参数以进行资产加载。

相关的操作指南: 如何为PDF渲染配置代理服务器

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>

对于需要生成 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");
}

使用 Handlebars.NET 将 HTML 转换为 PDF 模板

对于转换HTML到PDF时包含循环和条件的复杂模板,使用高级模板与Handlebars.NET生成具有动态HTML内容的PDF文档。

# First, install Handlebars.NET for HTML to PDF templating
PM > Install-包 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");

相关的教程文章: 在GitHub上了解更多关于Handlebars.NET的信息

控制 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>
HTML

如何使用异步方法生成 PDF.

IronPDF为您的HTML到PDF转换要求提供企业级性能,通过完整的异步和多线程支持,满足大规模生成PDF文件的需求。

using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

public class PdfGenerationService
{
    // 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> html模板)
    {
        var renderer = new ChromePdfRenderer();

        // Create parallel conversion tasks to generate PDF documents
        var tasks = html模板.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");
        }
    }
}
C#

在IronPDF v2026.6.1 · .NET 10 · 2026年6月上经过验证。

提示: HTML 转 PDF 性能优化技巧
  • 使用 64 位系统以获得最佳的 PDF 生成性能。
  • 生成 PDF 文档时确保有足够的服务器资源(避免功率不足的免费层)
  • 为 HTML 内容中复杂的 JavaScript 留出足够的渲染延迟(RenderDelay)。
  • 尽可能重用ChromePdfRenderer实例。
  • 利用最近的内存修复进行批量/异步操作,以减少资源使用; 测试通过重复自定义页眉/页脚来缩小文件大小。

相关 "如何 "文章: 如何使用异步和多线程生成 PDF

如何添加高级安全功能

如何在 .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 = PdfPrintSecurity.PrintLowQuality;

// Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;
pdf.SaveAs("secure-document.pdf");

如何在 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"
};

// Apply signature to PDF documents
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
C#

在IronPDF v2026.6.1 · .NET 10 · 2026年6月上经过验证。

相关的 HOW-TO 文章: 使用 C# 对 PDF 文档进行数字签名

如何将HTML表单转换为可填写的PDF

要将标准的HTML表单元素转换为交互的、可填充的PDF表单字段,请启用CreatePdfFormsFromHtml渲染选项。 这会在生成的PDF文档中将文本输入、复选框、单选按钮和下拉菜单保留为可编辑字段。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string htmlForm = @"
    <h2>Employee Onboarding Form</h2>
    <form>
        <label>Full Name:</label>
        <input type='text' name='fullName' value='' /><br/>
        <label>Department:</label>
        <select name='department'>
            <option value='engineering'>Engineering</option>
            <option value='marketing'>Marketing</option>
            <option value='sales'>Sales</option>
        </select><br/>
        <label>Agree to Terms:</label>
        <input type='checkbox' name='agreeTerms' />
    </form>";

var pdf = renderer.RenderHtmlAsPdf(htmlForm);
pdf.SaveAs("onboarding-form.pdf");
警告: 您的HTML中的每个表单字段必须具有一个唯一的name属性。 重复的名称将在生成的PDF中导致字段共享相同的值,会导致用户填写表单时出现意外行为。

相关的操作指南: 如何在C#中创建可填写的PDF表单

如何将特定HTML元素转换为PDF

要呈现页面的特定部分而不是整个文档,请在渲染之前隔离目标元素。 最直接的方法是使用WaitFor.HtmlQuerySelector()以确保元素在提取前存在。 下面的代码段保留了document.head,以便样式表和字体随之传递; 如果没有这一步骤,依赖于祖先选择器的CSS规则将在提取的PDF中丢失。

在您可以访问原始HTML的服务器端场景下,使用像AngleSharp这样的解析器提取目标片段并传递给RenderHtmlAsPdf(),无需JavaScript执行。

using IronPdf;

// Full page HTML containing the target element
string fullPageHtml = @"
<html>
<body>
    <header><h1>Acme Corp Invoice</h1></header>
    <div id='invoice-summary'>
        <h2>Invoice #12345</h2>
        <p>Total: $1,250.00</p>
    </div>
    <footer>Confidential</footer>
</body>
</html>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;

// Replace the body with only the target element
renderer.RenderingOptions.Javascript = @"
    var el = document.querySelector('#invoice-summary');
    if (el) {
        var head = document.head.innerHTML;
        document.body.innerHTML = el.outerHTML;
        document.head.innerHTML = head;
    }
";

// Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);

var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);
pdf.SaveAs("invoice-summary.pdf");

相关的操作指南: 如何将HTML元素和部分页面转换为PDF

如何将已认证的页面渲染为PDF

有三种机制用于渲染位于身份验证之后的页面:网络登录凭据、自定义Cookie和HTTP请求头。 这些涵盖了在将受保护的网页内容转换为PDF时最常见的身份验证场景。

登录凭据

在将受保护的URL转换为PDF时,使用ChromeHttpLoginCredentials进行基本、摘要或NTLM身份验证。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure network authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
    NetworkUsername = "user@domain.com",
    NetworkPassword = "securePassword",
    AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
};

var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");
pdf.SaveAs("authenticated-report.pdf");

Cookie和HTTP头

对于基于令牌或会话的身份验证,将自定义Cookie和HTTP头直接附加到渲染请求中。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Add session cookies
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";
renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";

// Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.HttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";

var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");
pdf.SaveAs("dashboard.pdf");
C#

CustomCookies字典以渲染受保护的页面。

相关的操作指南: 如何将登录身份验证后的HTML转换为PDF

如何从多个HTML代码片段生成PDF?

要通过组合 HTML 代码片段生成 PDF,您可以将它们合并。 这样可以生成多章节报告或合并来自不同来源的内容:

var renderer = new ChromePdfRenderer();

PdfDocument part1 = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>");
PdfDocument part2 = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>");

var merged = PdfDocument.Merge(part1, part2);
merged.SaveAs("Merged.pdf");

// Alternative approach: copy specific pages
var combinedDoc = new PdfDocument();
combinedDoc.CopyPage(part1, 0); // Copy first page
combinedDoc.CopyPage(part2, 0); // Copy first page
combinedDoc.SaveAs("Combined.pdf");

这有助于从不同的 HTML 片段创建多部分报告。 您还可以添加书签以方便导航。

Adobe Acrobat界面显示一份PDF文档,包含'第1节'标题和展示第1节和第2节缩略图的页面面板。

如何在 Web API 中将 HTML 转换为 PDF?

在 ASP.NET Web API 中,使用MemoryStream生成并返回 PDF,而不保存到磁盘。 这种模式非常适合Blazor 应用程序和 RESTful 服务:

[HttpGet("download")]
public IActionResult GetPdf()
{
    var renderer = new ChromePdfRenderer();
    string html = "<h1>Web Report</h1><p>Generated dynamically.</p>";

    var pdf = renderer.RenderHtmlAsPdf(html);
    var bytes = pdf.BinaryData;

    // Optional: Add metadata
    pdf.MetaData.Author = "API Service";
    pdf.MetaData.CreationDate = DateTime.Now;

    return File(bytes, "application/pdf", "report.pdf");
}

这种模式非常适合在 .NET 10 Web 应用程序中生成服务器端 PDF 文件。 您可以将其与 MVC 应用程序的CSHTML 视图集成。

如何添加页眉、水印和安全设置?

添加Professional页眉和页脚

显示页码、日期或品牌标识的页眉和页脚,能显著提升多页文档的可读性与Professional度。 IronPDF 将其作为 HTML 片段进行处理,因此您可以使用完整的 CSS 样式,包括图片和品牌颜色:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 50,
    HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
    BaseUrl = new Uri(@"file:///C:/assets/")
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 30,
    HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
    DrawDividerLine = true
};

renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;

var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");
pdf.SaveAs("report-with-headers.pdf");

{page}{total-pages} 这样的占位符会在渲染时自动替换。请查看 页眉和页脚教程,了解动态日期注入、徽标放置和交替页面样式。

应用水印、加密和数字签名

水印可保护草稿文档和机密报告。 密码保护和权限设置可限制哪些用户可以打印、复制或编辑 PDF。 数字签名可为合同和受监管文件增添一层可验证的真实性保障。 您可以将这三者整合到一个工作流中:

using IronPdf;
using System.Security.Cryptography.X509Certificates;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");

// Watermark
pdf.ApplyWatermark(
    "<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
    rotation: 45,
    opacity: 30
);

// Encryption and permissions
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

// Digital signature
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");
var signature = new PdfSignature(cert)
{
    SigningContact = "Jane Smith",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");

了解水印技术PDF 安全设置以及基于证书的签名(包括硬件安全模块 (HSM) 的集成)。

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic

微软MVP

查看案例研究

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle

首席技术官,OPYN

查看案例研究

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones

首席软件工程师,Agorus Build

查看案例研究

4. 如何在云平台上部署HTML到PDF转换

在云环境中部署HTML到PDF转换需要针对无头渲染、临时文件路径和资源分配进行特定配置。 本节涵盖了IronPDF的最常见云平台和容器化部署。

平台最小资源自动配置临时路径关键问题
Azure应用服务B1层(基本)IronPdf.Linuxtrue/tmp免费/共享层失败(无GPU,内存低)
Azure Functions(Windows)B1层IronPdftrue/tmp取消选中"从包文件运行"
AWS Lambda512 MB / 60秒超时IronPdf.Linuxtrue/tmp(必需)默认文件系统是只读的
Docker(Ubuntu/Debian)取决于镜像IronPdf.Linuxfalse镜像默认设置false(Dockerfile处理依赖)

如何在Azure上部署

在部署到Azure Functions或应用服务时,禁用GPU加速,并确保您的托管层提供足够的内存用于基于Chrome的渲染。 在应用程序启动时添加这些设置,任何渲染调用之前。

Azure沙箱以无头模式运行,无法访问GPU,免费/共享层(F1,D1)缺乏Chrome所需的资源。 选择目标为**B1(基本)**层或更高。

using IronPdf;

// Azure sandboxes block GPU access, always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");
pdf.SaveAs("azure-report.pdf");
注意: Azure应用服务免费和共享层(F1,D1)没有足够的资源用于基于Chrome的PDF渲染。 至少使用**B1(基本)**层或更高以避免内存不足错误和进程超时。

相关入门指南: 如何在Azure上部署IronPDF

如何在AWS Lambda上部署

AWS Lambda需要基于Docker的部署以进行基于Chrome的PDF渲染。 默认的Lambda文件系统是只读的,因此所有临时和部署路径必须指向/tmp

在函数处理程序的顶部配置这些设置,任何渲染调用之前。

using Amazon.Lambda.Core;
using IronPdf;

public class PdfFunction
{
    public string FunctionHandler(string input, ILambdaContext context)
    {
        // Lambda's only writable directory
        var tmpPath = "/tmp/";

        IronPdf.Installation.TempFolderPath = tmpPath;
        IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
        IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
        // Let IronPDF install Chrome dependencies on first cold start
        IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;

        context.Logger.LogLine("Rendering PDF...");

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(input);

        // Save to /tmp before uploading to S3 or returning
        var outputPath = $"{tmpPath}output.pdf";
        pdf.SaveAs(outputPath);

        return outputPath;
    }
}
请注意: 将您的Lambda函数配置为至少512 MB的内存和最少60秒超时。 基于Chrome的渲染占用大量内存,冷启动需要额外的初始化时间来初始化嵌入的浏览器引擎。

相关入门指南: 如何在AWS Lambda上部署IronPDF

如何使用Docker部署

对于Docker部署,使用IronPdf.Linux NuGet包以减少镜像大小并避免运行时下载资产。 该包包含预先打包的优化容器化环境的Linux原生二进制文件。

设置apt-get安装Chrome的共享库依赖项时。 在此情况下,运行时自动安装是多余的,并可能导致权限错误或较长的冷启动时间。

平台关键配置
Ubuntu 22.04 / DebianIronPdf.Linux默认,开箱即用
Alpine LinuxIronPdf.Linux在Dockerfile中通过apk安装chromium
Amazon Linux 2IronPdf.Linux使用LinuxAndDockerDependencies自动配置 = true
Windows容器IronPdf无需额外配置

适用于基于Ubuntu/Debian镜像的最小多阶段Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out

FROM mcr.microsoft.com/dotnet/aspnet:10.0
# Install Chrome dependencies for PDF rendering
RUN apt-get update && apt-get install -y \
    libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 \
    libcups2 libdrm2 libxkbcommon0 libxcomposite1 \
    libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 \
    libcairo2 libasound2 libxshmfence1 && \
    rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Text

using IronPdf;

// Dependencies handled by Dockerfile apt-get, disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
// No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");
pdf.SaveAs("output.pdf");

在IronPDF v2026.6.1 · .NET 10 · 2026年6月上经过验证。

相关入门指南: 如何使用Docker运行IronPDF

如何优化和扩展.NET Core中的HTML到PDF性能?

IronPDF的Chromium引擎已经可以在现代硬件上以<1s渲染大多数页面,但可以通过批量渲染、启用多线程以及减少无头Chrome开销来倍增吞吐量。

1. 在后台线程池中批量渲染

IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Set rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;

renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");

2. 修剪无头 Chrome 启动成本

2. 修剪无头Chrome启动成本

池化有帮助,Linux 容器 必须包括两个本机库: 缺少任何一个库将"libnss3.so not found"错误在 Docker 日志中出现。

RUN apt-get update && \
    apt-get install -y --no-install-recommends libnss3 libatk1.0-0
Text

缺少任一库将在Docker日志中显示为libnss3.so not found错误。

推荐的Chrome标志(IronPDF自动应用)包括--no-sandbox,以减少容器中的内存和根用户问题。

3. 使用WaitFor等待延迟加载的JavaScript

加载完DOMContentLoaded后可能还需要短暂延迟的页面动画或数据获取:

renderer.RenderingOptions.RenderDelay = 200;        // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";

查看专门的**WaitFor教程**以获取自定义承诺和DOM检查。

4. 启用一次请求的调试日志记录

IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("1.pdf");
PdfDocument pdf2 = PdfDocument.FromFile("2.pdf");
pdf.AppendPdf(pdf2);
pdf.SaveAs("appendedFile.pdf");

实时DevTools跟踪可以揭示丢失的字体、404图片和不重新编译代码的计时事件。

5. 重用模板PDF而不是重新渲染

对于发票运行,创建一个支持的PDF模板,如[[name]]这样的占位符,并进行文本替换,而不是重建复杂的HTML。 它速度快10倍且内存轻。

进一步阅读


5. 将IronPDF与其他.NET PDF库进行比较

IronPDF 凭借其强大的 Chromium 驱动的渲染引擎、直观的 API 和频繁的产品升级,成为许多团队生成 C# PDF 的首选解决方案。 让我们将 IronPDF 与其他 PDF 转换器进行比较,找到最适合您的 PDF 生成需求的产品。

免费和开源替代品

一些可能考虑的工具:

  • **PuppeteerSharp:**Puppeteer的MIT许可的.NET移植版,驱动无头Chrome。
  • **用于.NET的Playwright:**微软的Apache-2.0自动化库,也是基于Chromium的。
  • **wkhtmltopdf:**一个经久不衰的独立HTML到PDF二进制文件。
  • **原生浏览器路径:**直接从无头浏览器或操作系统打印驱动打印到PDF。

首先值得区分的是:PuppeteerSharp和Playwright是浏览器自动化框架,而不是PDF库。 它们在实际的Chromium上开放一个打印到PDF的调用,因此渲染的保真度很高,但对于像页眉和页脚、加密、签名、PDF/A等PDF相关的细节,以及浏览器的生命周期管理,都需要自己处理:输送和更新Chromium二进制,处理并发和崩溃恢复,并手动构建文档结构。 Playwright增加了一个早期值得注意的限制:它的PdfAsync仅运行在无头的Chromium中(不支持Firefox或WebKit),因此部署必须保证无头Chrome,这在容器和无服务器环境中很重要。

wkhtmltopdf又有所不同。 该项目于2024年被存档,其最终版本(0.12.6,2020年)运行一个~2012年的Qt WebKit引擎,未再收到安全补丁,包括一个未修复的严重SSRF建议(CVE-2022-35583); 在受信任的输入下用于简单的静态文档仍然可行,但不太适合公开输出。 原生浏览器路径根本不需要任何库,但代价是没有任何.NET原生PDF API或对服务器端自动化的真实控制。

对于原型、内部工具和零预算的工作,这些都是合法的选择。 下面的比较涵盖了商业库的功能比对。

快速决策矩阵:IronPDF 与其他 .NET PDF 转换器的比较

解决方案何时使用最适合
IronPDF以准确的视觉保真度将现代网站/HTML 转换为 PDF。

需要可靠的 HTML 渲染引擎、动态内容和专业支持的企业应用

wkhtmltopdf中文版

在可以接受过时呈现的非关键应用中进行简单的 HTML 转换。使用传统 HTML/CSS 生成基本文档。
Syncfusion已在 Syncfusion 生态系统中投资或有资格获得免费社区许可证。使用多个 Syncfusion 组件的组织。
Aspose.PDF在对 HTML 呈现质量要求不高的情况下进行复杂的 PDF 操作。HTML 转换之外的广泛 PDF 编辑功能。

相关比较:

详细比较:IronPDF 与其他 .NET PDF 转换器的比较

Show the full feature-by-feature table (10 .NET PDF libraries)
特征★ 推荐IronPDFwkhtmltopdfiTextAspose.PDFSyncfusionApryseSelectPdfSpire.PDFPDFSharpQuestPDF
渲染与转换
渲染精度像素级完美印刷风格仅限程序化好的好的好的好的低级别无需渲染代码优先布局
HTML5 支持满的过时的添加在部分的满的模块满的有限的否(代码优先)
CSS3 支持满的有限的添加在部分的满的模块满的有限的否(代码优先)
JavaScript 执行完整最佳争议有限的有限的有限的非常有限
HTML→PDF(现代布局)嵌入式铬最佳Qt WebKit(已过时)付费插件部分;JS 有争议闪烁引擎需要模块完整 HTML→PDF基于图像的不是 HTML 渲染器
PDF→图像渲染是的是的是的有限的仅限自有文档
文档操作
通过编程方式生成 PDF是的是的是的是的是的仅HTML是的基本的是的(Fluent API)
合并、拆分和重新排列是的是的是的是的是的是的是的有限的是的
页眉/页脚/页码HTML/文本/图像最佳数量有限通过活动通过活动模板手册仅限手动头等舱座位
水印和印章文字与图像是的是的是的是的是的有限的是的(叠加层)
从 PDF 中提取文本是的是的是的是的是的是的是的基本的
扫描PDF的OCR通过IronOCR集成添加在独立产品添加在添加在解决方法
安全性与合规性
数字签名是的是的是的是的示例代码是的未记录
PDF/A 合规是的(PDF/A-3B)完整版PDF/A验证并创建需要原生 SDKPDF合规性是的有限的PDF/A-2x 和 3x
平台与开发者体验
跨平台Windows · Linux · macOS全部 3取决于二进制文件.NET Standard 2.0Linux额外设置Blink + .NET服务器原生 SDK仅限 Windows 系统 *Linux 文档有限以 Windows 为中心的Windows/Linux/macOS
云端和 Docker 部署Azure · AWS · Docker最佳复杂;遗产多包部分;容器需要额外的 Blink 组件本地部门仅限 Windows信息有限简单;轻便Docker/K8s;本地
支持与文档
文档广泛 + 复制/粘贴最佳部分 CLI 文档广泛的;KB广泛; GitHub帮助中心跨语言目录入门指南节目指南社区指南结构化 + 配套应用程序
开发人员支持全天候工程师最佳服务仅限社区成员包含订阅论坛 + 付费24/5 直达轨道商业的电子邮件论坛 + 电子邮件仅限社区成员社区 + GitHub
许可与定价
许可模式永久开源AGPL / 订阅永久年度订阅定制/消费永久永久免费(MIT)麻省理工学院免费/付费层级
起价$999永久许可 · 1 名开发者 style="color:#16a34a">自由的~4.5万美元/年定制报价,175+每位开发者定制报价免费 <M(社区)~9,000+美元/年定制报价9+永久许可9永久许可证 · 1年更新 style="color:#16a34a">自由的 style="color:#16a34a">免费社区 MIT <100万美元
免费试用30天 · 所有功能无限制不适用(免费)30天是的(带水印)Community <$1M Rev社区(5 页)免费(10页)不适用(免费)N/A (MIT Free <$1M)
定价透明度已发布和清晰最佳开源复合AGPL多层级联系我们获取报价未公布价格已发布已发布麻省理工学院;无限制麻省理工学院;基于信任

真实环境下的 HTML 转 PDF 比较:渲染 Reddit 主页

为了评估输出 PDF 的质量,我们测试了包含动态网络内容、现代 CSS 和 JavaScript HTML 元素的 Reddit 主页。 该页面是生成输出 PDF 的理想测试案例。

https://www.reddit.com/

Reddit 首页截图,展示了用于 PDF 转换测试的动态内容、现代风格和交互元素

IronPDF

 IronPDF转换结果,完美呈现 Reddit 首页,所有动态内容、样式和交互元素均得以保留

IronPDF 提供像素级精确的结果,保留所有动态网页内容、现代的网页字体样式和交互元素,完全按照 Chrome 中显示,只需要几行代码。

Syncfusion

Syncfusion PDF 转换显示 Reddit 主页部分渲染缺失,样式不完整

Syncfusion 渲染的 PDF 大多数内容和样式都缺失,特别是动态内容。 最初被 Reddit 的安全措施阻挡。 要达到更好的结果需要大量命令行调试,然而输出仍然是不完整的。

Aspose.PDF

Aspose.PDF 转换尝试,显示内容捕获极少,Reddit 主页的大部分页面元素缺失

Aspose.PDF 首先需要手动下载 HTML(不支持直接 URL)。 转换后,输出缺乏适当的格式,几乎所有内容部分都缺失,使其不适合处理包含动态内容的现代网页。

wkhtmltopdf

wkhtmltopdf 输出显示 Reddit 主页的静态、无样式版本,不包含动态元素或现代 CSS

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 天免费试用进行无水印的生产测试。 灵活的许可从$999开始,提供符合您需求的透明团队定价。

查看 IronPDF 授权许可

6. 疑难解答与技术支持

处理 HTML 转 PDF 转换中遇到的以下错误有麻烦吗? IronPDF 提供 24/7 工程师支持,可通过 https://ironpdf.com/ 上的聊天小工具获取。

快速解决常见错误

  • 首次渲染慢? 正常。 Chrome 在 2–3 秒内初始化,然后加速。
  • 云问题? 至少使用 Azure B1 或同等资源。
  • 资产丢失? 设置基本路径或嵌入为 base64。
  • 元素丢失? 添加RenderDelay以执行JavaScript。
  • 渲染时的内存问题? 更新到最新版本(v2026.6.1)以获取在HTML到PDF、邮票和页眉/页脚上的修复。
  • 表单字段问题(如长文本区、复选框)? 在 v2025.7.17 中已修复; 确保复选框具有唯一名称。
  • 自定义页眉/页脚裁剪或特殊字符损坏? 在 v2025.8.8 中已解决; 测试自动换行和元数据。

从 IronPDF 的工程师团队获得帮助,全天候提供服务

下一步
如何合并或拆分 PDF 文档查看如何使用
如何在 PDF 文件中添加自定义页眉和页脚查看如何使用
如何编辑 PDF 中的文本和区域查看如何使用

常见问题解答

如何用 C# 将 HTML 转换为 PDF?

您可以使用 Chrome 渲染库将 HTML、CSS3 和 JavaScript 转换成像素完美的 PDF,从而用 C# 将 HTML 转换成 PDF。IronPDF 等工具可让您从 URL、HTML 字符串或文件进行渲染,同时支持标题、身份验证和打印设置。

什么是 .NET 的最佳 HTML 转 PDF 库?

最佳的库应支持准确的Chrome渲染、跨平台部署和企业功能。IronPDF涵盖了所有这些功能——在Windows、Linux、macOS和Docker上运行,并支持安全性、签名、合规性和可扩展的.NET应用程序。

有哪些免费将HTML转换为PDF的.NET选项?

开源方案如wkhtmltopdf、PuppeteerSharp和Playwright可以无成本将HTML转换为PDF,但需要牺牲便利性以进行维护——老旧的渲染引擎、捆绑的浏览器二进制文件或手动服务器配置。IronPDF是商业产品,提供免费30天试用,开发期间具有全功能且无水印;生产许可价格从$999起。查看价格→

如何使用 C# 将 HTML 字符串转换为 PDF?

要将 HTML 字符串转换为 PDF,请使用 ChromePdfRenderer 类及其 RenderHtmlAsPdf 方法。将 HTML 字符串传递给此方法,然后使用 SaveAs 保存 PDF。

在 C# 中将网页 URL 转换为 PDF 文档的步骤是什么?

您可以使用 RenderUrlAsPdf 方法直接将网页 URL 转换为 PDF,这使您可以保留样式、图像和交互元素,如表单和超链接。

如何用 C# 将 HTML 文件转换为 PDF?

使用ChromePdfRenderer.RenderHtmlFileAsPdf("path/to/file.html")将本地HTML文件转换为PDF。IronPDF会自动解析所有相对资源路径(如图片、CSS、JS)。

如何将ASP.NET Razor Pages或MVC Views转换为PDF?

IronPDF提供了专门的扩展包——IronPdf.Extensions.Razor用于Razor Pages,IronPdf.Extensions.Mvc.Core用于MVC Views。使用RenderRazorToPdfRenderRazorViewToPdf与依赖注入结合,从您的控制器直接将视图转换为PDF。参见Razor指南 →

如何确保 PDF 中的 JavaScript 内容被正确渲染?

通过设置RenderingOptions.EnableJavaScript = true启用JavaScript渲染,并使用RenderingOptions.WaitFor.RenderDelay添加渲染延迟,以确保在转换前动态内容完全加载。参见WaitFor指南 →

为什么我的HTML到PDF输出是空白或缺少内容?

空白或部分PDF几乎总是意味着页面在捕获时尚未完成渲染,或其资源未加载。对于动态或JavaScript驱动的内容,设置RenderingOptions.EnableJavaScript = true,并添加WaitFor.RenderDelay(或WaitFor.HtmlQuerySelector)以便Chrome先完成绘制。如果本地图片、CSS或字体缺失,传递一个BaseUrlPath以正确解析相对路径。查看WaitFor指南→

在 C# 中将标题和页脚添加到 PDF 的最佳方法是什么?

使用TextHeaderFooter类用于简单的文本页眉和页脚,或使用HtmlHeaderFooter类用于更复杂的HTML内容。您可以包含动态占位符,例如{page}{total-pages}{date}用于自动内容生成。参见页眉和页脚指南 →

如何在 C# .NET 中管理 PDF 输出中的分页符?

通过在打印媒体类型的CSS块中使用诸如page-break-after: alwayspage-break-inside: avoid等CSS属性来控制PDF中的分页符。参见分页符指南 →

PDF 设置纸张尺寸和方向有哪些选项?

使用RenderingOptions.PaperSize设置纸张尺寸(选项包括A4、Letter、Legal等)以及用RenderingOptions.PaperOrientation设置方向为纵向或横向。也支持毫米或英寸的自定义尺寸。参见纸张尺寸指南 →

我可否将已认证的网页转换为PDF?

可以。IronPDF支持Cookie、自定义HTTP头以及基于表单的认证。通过ChromePdfRenderer.RenderingOptions.CustomCookies设置Cookie,或传递认证标头以支持基于令牌的认证。同时支持Windows NTLM和Kerberos认证。参见Cookies指南 →

我可以使用 C# 从一个 HTML 模板创建多个 PDF 吗?

是的,创建包含占位符的 HTML 模板,然后使用 like Handlebars.NET 这样的字符串替换或模板库。在循环数据中用实际值替换占位符,并使用 RenderHtmlAsPdf 生成 PDF。

是否可以用密码保护我生成的 PDF?

可以,您可以使用SecuritySettings属性设置用户和所有者密码,配置打印和复制权限,并通过SecuritySettings.EncryptionAlgorithm应用AES256加密。参见加密指南 →

我能否从HTML生成符合PDF/A标准的文档?

可以。IronPDF支持PDF/A-1b、PDF/A-2b、PDF/A-3b和PDF/UA标准,用于存档和可访问性合规,这是大多数HTML到PDF转换器不提供的功能。参见PDF/A指南 →

如何优化生成大量 PDF 的性能?

通过使用异步方法如RenderHtmlAsPdfAsync进行非阻塞操作来优化性能。重用ChromePdfRenderer实例,使用Task.WhenAll同时处理多个PDF,并确保您在64位系统上拥有充足的服务器资源。参见异步指南 →

如何合并多个 PDF 或在我的文档中包含封面?

使用静态PdfDocument.Merge方法合并多个PDF。单独生成您的封面页,然后将其与主文档合并以创建一个综合的PDF。查看合并指南 →

我可以在Azure、AWS或Docker上部署IronPDF吗?

可以。IronPDF可以在Azure App Service、Azure Functions、AWS Lambda和Linux上的Docker容器中运行。每个平台都有专门的设置指南和Docker镜像可用。查看Azure指南 → · 查看AWS指南 → · 查看Docker指南 →

.NET 10 兼容性:IronPDF 是否立即支持 .NET 10?

可以 —— IronPDF完全兼容.NET 10。根据IronPDF的发布说明,该库可立即用于.NET 10项目,无需额外配置。无论您使用的是web、控制台、桌面或微服务应用程序,IronPDF都能与.NET 10开箱即用。

IronPDF 是免费使用的吗?

IronPDF提供免费30天试用,具有完整功能且在开发中无水印。用于生产需要起价$999的商业许可。提供Lite、Plus、Professional和Enterprise级别。查看价格→

这个库的渲染质量如何与其他选项如wkhtmltopdf相比?

此库使用现代 Chrome 渲染引擎来创建像素完美的 PDF,而 wkhtmltopdf 使用过时的 WebKit 引擎。它不需要服务器可执行文件,支持完整的 JavaScript/CSS3,定期更新并提供专业支持。

为何选择此库而不是 PDFSharp 进行 HTML 转 PDF 转换?

PDFSharp缺乏内置的HTML到PDF转换,需要复杂的解决方案。这个库提供直接的HTML/URL/文件转换,具有高级API,支持现代Web技术,并定期更新,提供专业支持。查看PDFSharp对比 →

为什么这个是比iTextSharp更好的HTML转换选择?

iTextSharp的免费版本不支持本地HTML到PDF转换,且API复杂。这个库提供无缝的HTML转换,具有直观的API,全面支持CSS3/JavaScript,无AGPL许可限制。查看iTextSharp对比 →

此库的渲染质量与 Aspose.PDF 相比如何?

这个库生成像素完美的Chrome质量PDF,而Aspose.PDF通常会丢失样式和动态内容。Aspose需要手动HTML下载进行URL转换,但这个库可以直接转换URL,准确性更高。查看Aspose对比 →

为什么可能选择此库而不是 Syncfusion PDF?

虽然Syncfusion能力出众,这个库的优化Chrome引擎性能更快,处理动态内容更高效。它提供更简单的API和额外功能,如OCR和条形码生成。查看Syncfusion对比 →

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

准备开始了吗?

Nuget Downloads 20,878,335版本:2026.9刚刚发布

免费获取

30天试用密钥 即刻获取。

bullet_checked无需信用卡或创建账户
bullet_test在生产环境中测试
且无水印
bullet_calendar30天完全
功能性产品
bullet_support试用期间提供
24/5技术支持
立即获取您的免费30 天试用密钥
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户