跳至页脚内容
使用IRONPDF

如何选择适合的PDF SDK 适用于 .NET in C#

许多寻找 PDF SDK 的 .NET 开发人员都面临同样的问题:这些库往往需要繁琐的配置、许可层级不透明,且其 API 显然是围绕 PDF 规范而非开发者体验设计的。 IronPDF 是一款专为消除这种障碍而打造的 .NET PDF 库。 它通过一个跨 .NET Framework、.NET Core 和 .NET 10 运行的 NuGet 包,提供 PDF 创建、编辑、表单处理和文档安全功能。

立即开始免费试用,加入 NASA、特斯拉和 3M 等团队的行列,他们都依赖 IronPDF 来管理文档工作流。

选择 .NET PDF SDK 时应考虑哪些标准?

为生产环境选择 PDF 库需要权衡各种取舍,而简单的 NuGet 安装测试无法揭示这些问题。 有四个标准始终能将合格的库与生产就绪的库区分开来。

渲染准确性与 HTML 引擎质量

最关键的选择在于该库是采用真实的浏览器引擎(Chromium 或 WebKit),还是自定义的 HTML 转 PDF 渲染器。 自定义渲染器支持 CSS2 的子集——基础排版和浮动布局可正常工作,但 Flexbox、CSS Grid 以及 JavaScript 渲染的内容无法正常显示。 基于 Chromium 的引擎能与 Chrome 完全一致地渲染 HTML,因此现有的 Razor 视图、报表模板和客户端 JavaScript 无需手动调整布局即可生成准确的输出。 为测试渲染准确性,请渲染一份使用 CSS Grid 和 JavaScript 生成的内容的文档; CSS 支持有限的库会导致元素位置错乱,或退回到无样式输出。

跨平台及 Linux 容器支持

一款 .NET PDF SDK 必须能在 Linux 上运行,且无需依赖 Microsoft Office 或 COM 自动化。 将 HTML 渲染委托给 WORD 互操作的库无法在 Linux Docker 容器中运行。 基于 Chromium 的库将渲染引擎作为原生二进制文件提供,在 Debian 或 Ubuntu 主机上只需要标准系统软件包(libgdiplusfontconfig)。 .NET 关于跨平台部署的文档涵盖了针对 Linux 或 Alpine Docker 镜像时适用的运行时标识符约定。

ASP.NET Core 中的线程安全与并发

许多 PDF 库仅在脚注中说明线程安全问题。 对于通过 HTTP 请求生成 PDF 的 .NET Core 应用程序而言,这一点至关重要。 IronPDF 的 ChromePdfRenderer 不是线程安全的——每个并发任务都必须拥有自己的实例。 使用 Parallel.ForEach,每次迭代使用一个渲染器并设置并发限制,可以避免争用,并且符合异步和多线程操作指南中的指导。 对于批处理任务,每个工作线程配备一个渲染器,其性能会随 CPU 核心数量呈线性扩展。

许可模式对齐

许可结构会影响大规模部署时的总体拥有成本。 按开发者计费的许可证(IronPDF、Syncfusion)根据构建和部署应用程序的开发者数量收取费用。 AGPL 许可证(iText Core)要求分发应用程序源代码,除非购买了商业许可证。 麻省理工学院 许可证(QuestPDF、PDFsharp)不设分发限制,但不提供商业支持。 对于需要长期归档的受监管环境,符合 ISO 19005 PDF/A 标准是与许可模式不同的独立要求——请单独核实。

用例决策指南

如果主要需求是将现有的 HTML 模板或 Razor 视图转换为 PDF,基于 Chromium 的库是正确的选择。为网页完成的布局工作可以直接转换为 PDF,无需额外的设计步骤。

如果需求是无需任何 HTML 模板即可从数据生成结构化文档,那么 QuestPDF(麻省理工学院 许可)对于低频次的内部工具开发而言是一个合理的选择。 它不支持 HTML 输入,也无法读取或编辑现有 PDF 文件,但消除了对 Chromium 运行时的依赖。

如果需求是处理现有 PDF 文件——例如合并、拆分、遮盖或签署由其他系统生成的文档——大多数商用 .NET PDF 库都能胜任。 其差异化优势在于许可费用和 API 易用性,而非渲染能力。

如何在 .NET 项目中安装 IronPDF?

通过 NuGet 包管理器将 IronPDF 添加到项目中,整个过程不到一分钟。 在 Visual Studio 中打开软件包管理器控制台并运行:

PM> Install-Package IronPdf
PM> Install-Package IronPdf
SHELL

或者,通过 NuGet GUI 搜索 IronPdf 来添加该包。 该包支持 .NET Standard 2.0,因此兼容 .NET Framework 4.6.2 及更高版本、.NET Core 2.0 及更高版本,以及所有现代 .NET 版本(包括 .NET 10)。

安装完成后,请在渲染前应用许可证密钥。 如需评估,请在应用程序启动时调用 IronPdf.License.LicenseKey = "IRONPDF-TRIAL-KEY";,或使用 IronPDF 网站提供的免费试用许可证。开发期间在本地运行库无需许可证密钥。

IronPDF 随附了一个预编译的 Chromium 引擎,以原生二进制文件形式提供。 引擎在新的机器上首次初始化时,会将其运行时文件提取到临时文件夹中,此过程需数秒钟。 后续调用速度很快。在 Linux 和 Docker 上,请确保已安装 libgdiplus 和字体包——Linux 部署指南涵盖了特定发行版的要求。

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

HTML 转 PDF 是 .NET PDF SDK 工作流中最常见的起点。 IronPDF 采用基于 Chromium 的渲染引擎,可将 HTML 字符串、本地文件或实时 URL 转换为像素级精确的 PDF 文件,同时保留 CSS3 布局、Google 字体以及 JavaScript 渲染的内容。

using IronPdf;

// Apply license key (omit for trial watermarked output)
// IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

var renderer = new ChromePdfRenderer();

// Configure page layout
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
renderer.RenderingOptions.MarginRight = 15;

// Render an HTML string to PDF
string htmlContent = @"
    <html>
    <head><style>body { font-family: Arial; } h1 { color: #333; }</style></head>
    <body>
        <h1>Customer Registration</h1>
        <p>Form generated on: <span id='date'></span></p>
        <form>
            <label>Full Name: <input type='text' name='name' /></label><br/>
            <label>Email: <input type='email' name='email' /></label>
        </form>
        <script>document.getElementById('date').textContent = new Date().toLocaleDateString();</script>
    </body>
    </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("registration-form.pdf");
using IronPdf;

// Apply license key (omit for trial watermarked output)
// IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

var renderer = new ChromePdfRenderer();

// Configure page layout
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
renderer.RenderingOptions.MarginRight = 15;

// Render an HTML string to PDF
string htmlContent = @"
    <html>
    <head><style>body { font-family: Arial; } h1 { color: #333; }</style></head>
    <body>
        <h1>Customer Registration</h1>
        <p>Form generated on: <span id='date'></span></p>
        <form>
            <label>Full Name: <input type='text' name='name' /></label><br/>
            <label>Email: <input type='email' name='email' /></label>
        </form>
        <script>document.getElementById('date').textContent = new Date().toLocaleDateString();</script>
    </body>
    </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("registration-form.pdf");
Imports IronPdf

' Apply license key (omit for trial watermarked output)
' IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

Dim renderer As New ChromePdfRenderer()

' Configure page layout
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
renderer.RenderingOptions.MarginRight = 15

' Render an HTML string to PDF
Dim htmlContent As String = "
    <html>
    <head><style>body { font-family: Arial; } h1 { color: #333; }</style></head>
    <body>
        <h1>Customer Registration</h1>
        <p>Form generated on: <span id='date'></span></p>
        <form>
            <label>Full Name: <input type='text' name='name' /></label><br/>
            <label>Email: <input type='email' name='email' /></label>
        </form>
        <script>document.getElementById('date').textContent = new Date().toLocaleDateString();</script>
    </body>
    </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("registration-form.pdf")
$vbLabelText   $csharpLabel

渲染选项与页面布局

ChromePdfRenderer 类公开了一个RenderingOptions属性,该属性控制 PDF 布局的各个方面。 将 PaperSize 设置为任何标准 ISO 或 ANSI 尺寸,或使用 CustomPaperWidthCustomPaperHeight 以毫米为单位定义自定义尺寸。 边距值以毫米为单位指定,并且 PrintHtmlBackgrounds 确保背景颜色和图像正确渲染。

对于 URL 到 PDF 的转换,请将目标地址传递给 RenderUrlAsPdf。 该渲染器支持处理 Cookie、HTTP 头部和自定义用户代理,因此适用于需要身份验证的页面和单页应用程序。 《HTML 转 PDF 指南》详细介绍了身份验证、JavaScript 等待条件以及延迟加载内容。

IronPDF 使用 C# 将 HTML 发票渲染成 PDF,并保持 CSS3 布局的完整性 IronPDF ChromePdfRenderer 输出:将 HTML 模板渲染为 A4 尺寸的 PDF,并保留 CSS3 样式

根据文件路径和 URL 进行渲染

using IronPdf;

var renderer = new ChromePdfRenderer();

// Render from a URL (async variant for ASP.NET Core)
PdfDocument fromUrl = await renderer.RenderUrlAsPdfAsync("https://example.com/report");
fromUrl.SaveAs("url-report.pdf");

// Render from a local HTML file
PdfDocument fromFile = renderer.RenderHtmlFileAsPdf("templates/invoice.html");
fromFile.SaveAs("invoice.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Render from a URL (async variant for ASP.NET Core)
PdfDocument fromUrl = await renderer.RenderUrlAsPdfAsync("https://example.com/report");
fromUrl.SaveAs("url-report.pdf");

// Render from a local HTML file
PdfDocument fromFile = renderer.RenderHtmlFileAsPdf("templates/invoice.html");
fromFile.SaveAs("invoice.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Render from a URL (async variant for ASP.NET Core)
Dim fromUrl As PdfDocument = Await renderer.RenderUrlAsPdfAsync("https://example.com/report")
fromUrl.SaveAs("url-report.pdf")

' Render from a local HTML file
Dim fromFile As PdfDocument = renderer.RenderHtmlFileAsPdf("templates/invoice.html")
fromFile.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

RenderUrlAsPdfAsync 方法返回 Task<PdfDocument>,因此它可以直接与 ASP.NET Core 控制器和后台服务中的 async/await 模式集成。 异步渲染指南阐述了高吞吐量场景下的线程安全性和连接池配置。

如何转换图像并提取 PDF 内容?

许多 .NET 应用程序需要将图像文件转换为 PDF,或从现有文档中提取图像和文本。 IronPDF 支持双向转换,无需中间文件格式或外部工具。

using IronPdf;

// Convert a list of image files to a single multi-page PDF
var imageFiles = new System.Collections.Generic.List<string>
{
    "scans/page1.png",
    "scans/page2.jpg",
    "scans/page3.tiff"
};

PdfDocument pdfFromImages = ImageToPdfConverter.ImageToPdf(imageFiles);
pdfFromImages.SaveAs("scanned-document.pdf");

// Extract images from an existing document
PdfDocument existing = PdfDocument.FromFile("annual-report.pdf");
var images = existing.ExtractAllImages();
int index = 0;
foreach (var img in images)
{
    img.SaveAs($"extracted/image_{index++}.png");
}

// Extract all text content for indexing or search
string fullText = existing.ExtractAllText();
System.IO.File.WriteAllText("report-text.txt", fullText);
using IronPdf;

// Convert a list of image files to a single multi-page PDF
var imageFiles = new System.Collections.Generic.List<string>
{
    "scans/page1.png",
    "scans/page2.jpg",
    "scans/page3.tiff"
};

PdfDocument pdfFromImages = ImageToPdfConverter.ImageToPdf(imageFiles);
pdfFromImages.SaveAs("scanned-document.pdf");

// Extract images from an existing document
PdfDocument existing = PdfDocument.FromFile("annual-report.pdf");
var images = existing.ExtractAllImages();
int index = 0;
foreach (var img in images)
{
    img.SaveAs($"extracted/image_{index++}.png");
}

// Extract all text content for indexing or search
string fullText = existing.ExtractAllText();
System.IO.File.WriteAllText("report-text.txt", fullText);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

使用 ImageToPdfConverter 进行文本提取

ImageToPdfConverter类默认保留原始图像尺寸,但您可以通过指定 IronPdf.Imaging.ImageBehavior.CenterImageFitToPage 将图像缩放到目标纸张尺寸。 支持 JPEG、PNG、GIF、TIFF、BMP 和 WebP 格式。

通过 ExtractAllText() 进行文本提取,可以从原生 PDF 和基于图像(扫描)的文档中返回机器可读的文本,前提是 PDF 包含嵌入式文本层。 对于没有文本图层的扫描 PDF,将 IronPDF 与 IronOCR 结合使用,即可通过单次 NuGet 安装实现光学字符识别功能。 ExtractAllImages() 方法返回一个 AnyBitmap 对象集合,这些对象可以保存、调整大小或直接传递给其他图像处理库。

IronPDF ImageToPdfConverter 可将 PNG 和 JPEG 文件转换为多页 PDF 文件ImageToPdfConverter 输出:将三个源图像文件合并为一个多页 PDF 文档

如何使用密码和数字签名保护 PDF 文档?

Enterprise PDF 工作流通常需要对文档进行加密、数字签名,或两者兼具。 IronPDF 通过 SecuritySettings 属性和 PdfSignature 类公开这些功能。

using IronPdf;
using IronPdf.Signing;

// Load an existing contract
PdfDocument contract = PdfDocument.FromFile("contracts/service-agreement.pdf");

// Apply AES-256 encryption with separate owner and user passwords
contract.SecuritySettings.OwnerPassword = "owner-admin-2024";
contract.SecuritySettings.UserPassword = "client-readonly";
contract.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
contract.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.无Edit;
contract.SecuritySettings.AllowUserCopyPasteContent = false;

// Apply a digital signature from a .pfx certificate
var signature = new PdfSignature("certs/company.pfx", "cert-password")
{
    SigningContact = "legal@company.com",
    SigningLocation = "Chicago, IL",
    SigningReason = "Contract Authorization"
};

contract.Sign(signature);
contract.SaveAs("contracts/service-agreement-signed.pdf");
using IronPdf;
using IronPdf.Signing;

// Load an existing contract
PdfDocument contract = PdfDocument.FromFile("contracts/service-agreement.pdf");

// Apply AES-256 encryption with separate owner and user passwords
contract.SecuritySettings.OwnerPassword = "owner-admin-2024";
contract.SecuritySettings.UserPassword = "client-readonly";
contract.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
contract.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.无Edit;
contract.SecuritySettings.AllowUserCopyPasteContent = false;

// Apply a digital signature from a .pfx certificate
var signature = new PdfSignature("certs/company.pfx", "cert-password")
{
    SigningContact = "legal@company.com",
    SigningLocation = "Chicago, IL",
    SigningReason = "Contract Authorization"
};

contract.Sign(signature);
contract.SaveAs("contracts/service-agreement-signed.pdf");
Imports IronPdf
Imports IronPdf.Signing

' Load an existing contract
Dim contract As PdfDocument = PdfDocument.FromFile("contracts/service-agreement.pdf")

' Apply AES-256 encryption with separate owner and user passwords
contract.SecuritySettings.OwnerPassword = "owner-admin-2024"
contract.SecuritySettings.UserPassword = "client-readonly"
contract.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
contract.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.无Edit
contract.SecuritySettings.AllowUserCopyPasteContent = False

' Apply a digital signature from a .pfx certificate
Dim signature As New PdfSignature("certs/company.pfx", "cert-password") With {
    .SigningContact = "legal@company.com",
    .SigningLocation = "Chicago, IL",
    .SigningReason = "Contract Authorization"
}

contract.Sign(signature)
contract.SaveAs("contracts/service-agreement-signed.pdf")
$vbLabelText   $csharpLabel

安全设置与权限控制

SecuritySettings 属性直接映射到PDF 1.7 规范中定义的 PDF 权限。 单独设置 OwnerPassword 会限制 PDF 阅读器级别的编辑和打印; 添加 UserPassword 需要密码才能打开文件。

数字签名使用 X.509 证书,格式为 .pfx,与 Windows 证书存储和大多数证书颁发机构使用的格式相同。 该签名包含 Adobe Acrobat 签名面板中可见的联系人、位置和原因字段,满足许多电子签名合规性要求。 对于可能包含脚本或嵌入式元数据(存在安全风险)的 PDF 文档,sanitize 方法会在分发前移除其中的 JavaScript、嵌入文件和隐藏元数据。

IronPDF 数字签名已应用于 PDF 合同,并在 Adobe Acrobat 中显示已验证的签名IronPDF PdfSignature 结果:X.509 证书已应用于合同,签名面板在 Adobe Acrobat 中可见

如何填写和读取 PDF 表单字段?

在保险、医疗保健和法律文件工作流中,AcroForm 和 XFA 表单处理是常见的需求。 IronPDF 可从现有表单中读取字段名称,并通过编程方式写入值,无需 Acrobat 或任何 PDF 阅读器。

using IronPdf;

// Open a PDF containing AcroForm fields
PdfDocument form = PdfDocument.FromFile("forms/application-form.pdf");

// List all field names for discovery
foreach (var field in form.Form.Fields)
{
    System.Console.WriteLine($"Field: {field.Name}, Type: {field.GetType().Name}");
}

// Set field values by name
form.Form.FindFormField("applicant_name").Value = "Jane Smith";
form.Form.FindFormField("date_of_birth").Value = "1985-04-12";
form.Form.FindFormField("agree_terms").Value = "true"; // checkbox

// Flatten the form to prevent further editing
form.Form.Flatten();
form.SaveAs("forms/completed-application.pdf");
using IronPdf;

// Open a PDF containing AcroForm fields
PdfDocument form = PdfDocument.FromFile("forms/application-form.pdf");

// List all field names for discovery
foreach (var field in form.Form.Fields)
{
    System.Console.WriteLine($"Field: {field.Name}, Type: {field.GetType().Name}");
}

// Set field values by name
form.Form.FindFormField("applicant_name").Value = "Jane Smith";
form.Form.FindFormField("date_of_birth").Value = "1985-04-12";
form.Form.FindFormField("agree_terms").Value = "true"; // checkbox

// Flatten the form to prevent further editing
form.Form.Flatten();
form.SaveAs("forms/completed-application.pdf");
Imports IronPdf

' Open a PDF containing AcroForm fields
Dim form As PdfDocument = PdfDocument.FromFile("forms/application-form.pdf")

' List all field names for discovery
For Each field In form.Form.Fields
    System.Console.WriteLine($"Field: {field.Name}, Type: {field.GetType().Name}")
Next

' Set field values by name
form.Form.FindFormField("applicant_name").Value = "Jane Smith"
form.Form.FindFormField("date_of_birth").Value = "1985-04-12"
form.Form.FindFormField("agree_terms").Value = "true" ' checkbox

' Flatten the form to prevent further editing
form.Form.Flatten()
form.SaveAs("forms/completed-application.pdf")
$vbLabelText   $csharpLabel

使用 AcroForms 进行程序化表单处理

IronPDF 的表单 API 使用字段名称作为标识符,因此代码可直接映射到 Acrobat 中可见的字段结构。 Flatten() 方法将交互式字段转换为静态内容,生成适合存档或传输的只读 PDF。 有关表单类型、单选按钮组和下拉列表的完整详情,请参阅 PDF 表单指南

要从头开始生成新表单,请使用带有 <input><select><textarea> 元素的 HTML。 Chromium 渲染器会自动将标准 HTML 表单元素转换为 AcroForm 字段,这意味着 Web 应用程序中现有的 HTML 表单无需进行任何结构更改,即可生成可填写的 PDF 文件。 "创建 PDF 表单"操作指南详细介绍了完整的工作流程,包括单选按钮、日期选择器和多选字段。

IronPDF 与其他 .NET PDF 库相比如何?

开发人员在评估 .NET 版 PDF SDK 时,通常会考虑渲染质量、API 易用性、部署复杂度以及许可条款。 下表根据这些标准,对比了 IronPDF 与常见的 .NET 替代方案。

基于关键开发标准对 .NET PDF 库的比较
HTML到PDF .NET 10 支持 表单处理 数字签名 许可模式
IronPDF 基于 Chromium(支持完整的 CSS3/JS) AcroForm + XFA 是 (.pfx) 按开发者计费,免版税
QuestPDF 无(代码优先布局引擎) 麻省理工学院(社区版)、商业版
iText Core 仅限通过插件使用 AcroForm AGPL 或商业用途
Syncfusion PDF 部分(CSS2 子集) AcroForm 按开发者数量或按收入计费
PDFsharp 是(v6+) 数量有限 麻省理工学院

IronPDF 的许可页面涵盖了 SaaS 部署、OEM 再分发,以及 Iron Suite 套装——该套装包含 IronPDF、IronOCRIronBarcodeIronXL,其价格比单独购买各产品优惠许多。

IronPDF 的主要优势在于 HTML 渲染质量。 基于低级 PDF 绘图 API 构建的库要求开发者手动复现 CSS 布局逻辑。 当现有的 HTML 模板或 Razor 视图已定义文档结构时,直接将其转换为 PDF 比使用代码优先的绘图 API 重新构建布局更快且更易于维护。

选择 .NET PDF SDK 时应关注哪些关键功能?

为生产环境应用选择 PDF 库,不仅仅只是确认它能否生成 PDF 文件。 文档密集型应用程序需要特定的功能,这些功能只有在最初的概念验证工作开始扩展到实际数据量和部署环境时才会显现出来。

跨平台部署

一款生产级别的 .NET PDF SDK 必须能在 Windows Server、Linux 容器以及 macOS 开发机上运行,且不依赖于特定平台的代码路径。 IronPDF 开箱即用即可支持这三种语言; 同一个 NuGet 包可部署到 Azure App ServiceAWS Lambda 和 Docker,且无需在应用程序代码中进行平台切换。

符合 PDF/A 和 PDF/UA 标准

受监管行业(包括政府、金融和医疗保健)通常要求长期归档必须符合 PDF/A 标准ISO 19005 PDF/A 标准定义了 PDF/A-1b 和 PDF/A-3b 格式,这些格式限制了嵌入式 JavaScript 和非嵌入式字体的使用,从而确保文档在没有原始应用程序的情况下仍可阅读。 IronPDF 可将现有 PDF 文件转换为 PDF/A 格式并验证其合规性,返回一个标志以指示输出是否符合该标准。 对于必须符合 WCAG 或 Section 508 要求的文档,还提供 PDF/UA(无障碍)合规性支持。

批处理与内存管理

在定时任务中生成数千个 PDF 文件或处理上传队列时,需要内存行为具有可预测性。 IronPDF 的混合光栅内容 (MRC) 压缩技术可缩小同时包含文本和高分辨率图像的文档文件大小。 对于大批量作业,多线程指南演示了如何使用 Parallel.ForEachChromePdfRenderer 实例 - 渲染器不是线程安全的,因此每个任务都应该拥有自己的实例。

DOCX 和 Excel 转 PDF

除了 HTML 之外,IronPDF 还可以将 Word 文档 (.docx) 和电子表格直接转换为 PDF,从而消除了对 Microsoft Office 互操作或 COM 自动化文档导出工作流程的依赖。 将 IronPDF 与 IronXL 结合使用,可在服务器上无需安装任何 Office 软件的情况下,构建完整的电子表格转 PDF 处理流程。

下一步计划是什么?

IronPDF 将复杂的 PDF 工作流转换为易于维护的 C# 代码。 从完全保留 CSS3 样式的 HTML 转 PDF,到数字签名、表单处理和 PDF/A 归档,该库通过单个 NuGet 包覆盖了文档的完整生命周期。

请从 IronPDF 文档中心开始,探索教程、操作指南和 API 参考示例库提供了可运行的代码,涵盖最常见的 PDF 操作,包括合并 PDF添加水印添加页眉和页脚,以及遮盖敏感内容

购买许可证以进行生产环境部署,或开始免费试用,无需任何承诺即可评估完整功能集。

立即开始使用 IronPDF。
green arrow pointer

常见问题解答

什么是.NET开发者的最佳PDF SDK?

IronPDF是.NET开发者需要HTML到PDF转换的一个很好的选择,完全支持CSS3和JavaScript。它作为一个单一的NuGet包(IronPDF)安装,支持.NET 10和.NET Framework 4.6.2+,并在Windows、Linux、macOS、Azure、AWS和Docker上运行,无需配置更改。对于没有HTML的代码优先布局生成,QuestPDF是一个免费的MIT许可替代方案,尽管它不支持读取或编辑现有的PDF。

如何在 .NET 项目中安装 IronPDF?

在Visual Studio包管理器控制台中运行'Install-Package IronPdf',或在NuGet GUI中搜索'IronPdf'。该包目标.NET Standard 2.0,因此与.NET Framework 4.6.2+、.NET Core 2.0+、.NET 5至.NET 10兼容。

IronPDF能否与CSS3和JavaScript一起将HTML转换为PDF?

可以。IronPDF使用基于Chromium的引擎渲染HTML,全面支持CSS3布局、Google字体、flexbox、grid和JavaScript。将HTML字符串传递给ChromePdfRenderer.RenderHtmlAsPdf,或将URL传递给RenderUrlAsPdf或RenderUrlAsPdfAsync。

IronPDF支持数字签名吗?

支持。使用带有.pfx证书文件的PdfSignature类。设置SigningContact、SigningLocation和SigningReason,然后调用PdfDocument.Sign(signature)。生成的签名在Adobe Acrobat的签名面板中可见,并满足许多电子签名合规要求。

如何使用C#和IronPDF填写PDF表单字段?

用PdfDocument.FromFile加载PDF,然后使用form.Form.FindFormField("fieldName").Value设置值。在保存之前调用form.Form.Flatten()将交互式字段转换为静态内容。IronPDF支持AcroForm文本字段、复选框、单选按钮和下拉框。

IronPDF提供了哪些PDF安全功能?

IronPDF的SecuritySettings属性支持AES-256加密,设置单独的所有者和用户密码。您可以独立限制打印、编辑和复制粘贴。Sanitize方法在分发之前从文档中移除JavaScript、嵌入文件和元数据。

IronPDF支持PDF/A用于归档合规吗?

支持。IronPDF可以将现有PDF转换为PDF/A-1b或PDF/A-3b格式并验证合规性。使用ironpdf.com/how-to/pdf-a-compliance/上的指南获取转换API和合规标志。

IronPDF与iText在.NET上如何比较?

IronPDF和iText Core都支持AcroForm处理和数字签名。主要区别在于许可和HTML渲染。iText Core采用AGPL许可证(需要商业许可才能用于专有应用)并使用一个附加组件进行HTML转换。IronPDF是商业许可的,按照每开发者定价,并使用内置的Chromium引擎进行HTML到PDF转换,全面支持CSS3。

IronPDF可以在Linux和Docker上运行吗?

可以。相同的NuGet包可在Ubuntu、Debian、CentOS和基于Alpine的Docker镜像上运行。在Linux上,安装libgdiplus和字体包(例如,fontconfig、libfreetype6)。ironpdf.com/get-started/linux/上的Linux部署指南列出了分布特定的软件包要求。

如何使用IronPDF将图像转换为PDF?

使用ImageToPdfConverter.ImageToPdf(imageFileList)将JPEG、PNG、TIFF、BMP、GIF或WebP文件合并为单个多页PDF。指定IronPDF.Imaging.ImageBehavior.FitToPage或CenterImage来控制缩放行为。

Curtis Chau
技术作家

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

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

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我