跳至页脚内容
使用IRONPDF

PDF API for .NET Core:在C#中生成和编辑PDF

IronPDF .NET Core PDF API 概述显示代码编辑器与 HTML 到 PDF 转换和输出文档并排

IronPDF 是一个用于 .NET Core 和 .NET 10 的 PDF API,可以通过 C# 代码生成、转换和编辑 PDF 文档。 安装 NuGet 包,创建一个 ChromePdfRenderer 实例,然后通过几行代码从 HTML 字符串、实时 URL 或现有文件中生成 PDF。

.NET Core 应用程序中,PDF 生成是发票、报告、合同和合规文档的标准要求。 挑战在于寻找一个能够准确渲染 HTML、与 ASP.NET Core 和 Blazor 无缝集成、在 Windows、Linux 和 macOS 上生成一致输出,并支持如数字签名和密码保护等高级操作的库,而无需单独的工具。 本指南介绍了 IronPDF 的 .NET Core PDF API,从安装到最常见的文档操作,并附有可用的 C# 代码示例。

如何开始在 .NET Core 中使用 IronPDF?

使用包管理控制台或 .NET CLI 从 NuGet 安装 IronPDF:

# Package Manager Console
Install-Package IronPdf

# .NET CLI
dotnet add package IronPdf
# Package Manager Console
Install-Package IronPdf

# .NET CLI
dotnet add package IronPdf
SHELL

安装后,在应用程序启动时在 Program.cs 中添加您的许可证密钥:

using IronPdf;

// Configure your license key before any IronPDF operations
License.LicenseKey = "YOUR-LICENSE-KEY";
using IronPdf;

// Configure your license key before any IronPDF operations
License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

免费试用 可供评估,无需信用卡。 IronPDF 支持 .NET 10、.NET 9、.NET 8、.NET Framework 4.6.2+,以及所有主要版本的 .NET Core。 该库在 Windows、macOS 和 Linux 上运行,无需额外的运行时依赖,适合容器化部署和云环境,包括 Azure、Docker 和 AWS。

对于 ASP.NET Core 项目,在构建应用程序前在 Program.cs 中注册 IronPDF 服务,然后通过标准依赖注入容器注入 ChromePdfRenderer。 IronPDF 集成了 ASP.NET Core 项目类型,包括 Web API、MVC、Razor Pages 和 Blazor Server。 NuGet 包作为单一依赖项安装,无需本机运行库或外部可执行文件,这使得您的 CI 管道和容器镜像保持简单。 除了标准的 .NET SDK 外,Linux 或 macOS 部署不需要额外配置。

由于 ChromePdfRenderer 是线程安全的,您可以将其注册为单例并跨请求处理器共享。 在高吞吐量场景中,创建渲染器实例池或使用异步渲染方法 (RenderHtmlAsPdfAsync, RenderUrlAsPdfAsync) 以避免在 PDF 生成运行时阻塞请求线程。 IronPDF 的 许可页涵盖了生产环境的部署座席和并发线程限制。

如何在 C# 中从 HTML 生成 PDF?

HTML 到 PDF 的转换是 .NET PDF API 最常用的功能。 IronPDF 的 ChromePdfRenderer 将 HTML 字符串、本地文件或实时 URL 转换为 PDF,同时保持 CSS 样式、字体、JavaScript 输出及图像,如在 Chrome 中渲染。

using IronPdf;

// Create the renderer and define HTML content with full CSS support
var renderer = new ChromePdfRenderer();
var html = @"<html>
<head>
    <style>
        body { font-family: Arial; font-size: 14px; margin: 40px; }
        h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
        table { border-collapse: collapse; width: 100%; margin-top: 16px; }
        td, th { border: 1px solid #ddd; padding: 10px; text-align: left; }
        th { background: #3498db; color: white; }
    </style>
</head>
<body>
    <h1>Sales Report - Q4 2025</h1>
    <p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
    <table>
        <tr><th>Product</th><th>Units Sold</th><th>Revenue</th></tr>
        <tr><td>Widget A</td><td>1,200</td><td>$24,000</td></tr>
        <tr><td>Widget B</td><td>850</td><td>$17,000</td></tr>
    </table>
</body>
</html>";

var document = renderer.RenderHtmlAsPdf(html);
document.SaveAs("sales-report.pdf");
using IronPdf;

// Create the renderer and define HTML content with full CSS support
var renderer = new ChromePdfRenderer();
var html = @"<html>
<head>
    <style>
        body { font-family: Arial; font-size: 14px; margin: 40px; }
        h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
        table { border-collapse: collapse; width: 100%; margin-top: 16px; }
        td, th { border: 1px solid #ddd; padding: 10px; text-align: left; }
        th { background: #3498db; color: white; }
    </style>
</head>
<body>
    <h1>Sales Report - Q4 2025</h1>
    <p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
    <table>
        <tr><th>Product</th><th>Units Sold</th><th>Revenue</th></tr>
        <tr><td>Widget A</td><td>1,200</td><td>$24,000</td></tr>
        <tr><td>Widget B</td><td>850</td><td>$17,000</td></tr>
    </table>
</body>
</html>";

var document = renderer.RenderHtmlAsPdf(html);
document.SaveAs("sales-report.pdf");
$vbLabelText   $csharpLabel

输出PDF文档

在 Visual Studio 项目中运行 IronPDF HTML 到 PDF 转换,生成一个格式化的销售报告,包含样式化的数据表

ChromePdfRenderer 返回一个 PdfDocument 对象,您可以将其保存到文件路径中,导出到 byte[] 用于 HTTP 响应,或写入 MemoryStream 以供内存处理。 渲染器尊重所有 CSS 属性,包括自定义字体、flexbox、网格布局、媒体查询和 @page 规则以进行边距和页面大小控制。 对于与 CSS 和图像资产一起存储在磁盘上的 HTML 模板,请调用 RenderHtmlFileAsPdf 并使用文件路径,而不是传递内联字符串。 IronPDF 解析相对路径的资产根据文件目录,因此链接的样式表和本地图像在输出中都会准确呈现,而无需额外配置。

对于需要捕获实时网页的应用程序,请使用 RenderUrlAsPdfAsync 截图任何 URL,同时执行 JavaScript:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Render a live URL including all JavaScript-rendered content
var document = await renderer.RenderUrlAsPdfAsync("https://example.com/monthly-report");
document.SaveAs("monthly-report.pdf");

// Return PDF bytes in an ASP.NET Core controller
byte[] pdfBytes = document.BinaryData;
return File(pdfBytes, "application/pdf", "report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Render a live URL including all JavaScript-rendered content
var document = await renderer.RenderUrlAsPdfAsync("https://example.com/monthly-report");
document.SaveAs("monthly-report.pdf");

// Return PDF bytes in an ASP.NET Core controller
byte[] pdfBytes = document.BinaryData;
return File(pdfBytes, "application/pdf", "report.pdf");
$vbLabelText   $csharpLabel

URL 渲染会等待 JavaScript 完成后再捕获,这确保动态加载的图表、表格和数据可视化在输出 PDF 中正确呈现。 您可以配置 渲染选项 以设定页面边距、纸张大小、方向和 JavaScript 执行超时。 渲染前请还可以将认证 cookie 和自定义 HTTP 标头注入请求中,以支持捕获需要登录会话的页面。

如何配置 PDF 页面布局和渲染选项?

RenderingOptions 属性在 ChromePdfRenderer 中控制页面维度、边距、方向和 JavaScript 等待行为,然后所有渲染调用会在执行前被设置。 在渲染器实例上一次性设置这些属性,它们将应用于它生成的每个文档。

using IronPdf;

var renderer = new ChromePdfRenderer();

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

// Wait for dynamic JavaScript content before capturing
renderer.RenderingOptions.WaitFor.RenderDelay(500);

var document = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Body content here.</p>");
document.SaveAs("landscape-report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

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

// Wait for dynamic JavaScript content before capturing
renderer.RenderingOptions.WaitFor.RenderDelay(500);

var document = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Body content here.</p>");
document.SaveAs("landscape-report.pdf");
$vbLabelText   $csharpLabel

纸张大小值涵盖标准格式,包括 A4、A3、Letter、Legal 和以毫米为单位的自定义尺寸。 边距属性接受毫米单位的值,并独立应用于每个边缘。 WaitFor API 控制 JavaScript 的执行时间,这在您的 HTML 异步加载数据以渲染图表或计算表值之前特别有用。 对于使用 CSS @page 规则的页面,IronPDF 会尊重这些声明并直接应用。 请参阅完整的 渲染选项参考 获取完整属性列表,包括缩放因子、背景颜色和 PDF 版本选择。

如何将 DOCX 文件和图像转换为 PDF?

除了 HTML,IronPDF 还可以将 DOCX 文档、常见图像格式和 Markdown 文件转换为 PDF。 这支持接受多种输入类型的处理管道。

using IronPdf;

// Convert a Word document to PDF while preserving its formatting
var docxPdf = new DocxToPdfRenderer().RenderDocxAsPdf("contract.docx");
docxPdf.SaveAs("contract.pdf");

// Combine multiple images into a single multi-page PDF
var images = new[] { "page1.png", "page2.png", "page3.png" };
var imagePdf = ImageToPdfConverter.ImageToPdf(images);
imagePdf.SaveAs("scanned-document.pdf");
using IronPdf;

// Convert a Word document to PDF while preserving its formatting
var docxPdf = new DocxToPdfRenderer().RenderDocxAsPdf("contract.docx");
docxPdf.SaveAs("contract.pdf");

// Combine multiple images into a single multi-page PDF
var images = new[] { "page1.png", "page2.png", "page3.png" };
var imagePdf = ImageToPdfConverter.ImageToPdf(images);
imagePdf.SaveAs("scanned-document.pdf");
$vbLabelText   $csharpLabel

示例输入 DOCX 与输出 PDF

原始 Word 文档与 IronPDF 转换的 PDF 输出的并排比较,显示保留的表格格式和样式

DOCX 到 PDF 转换功能保留了源 Word 文档中的段落样式、表格、页眉、页脚、嵌入图像和列表。 图像到 PDF 转换器接受 JPEG、PNG、TIFF、BMP 和 GIF,自动优化输出文件大小,并支持将多个图像合并到单个分页文档中。 这两个转换器都返回标准 PdfDocument 实例,因此您可以将它们与合并、签名或水印等编辑操作串联使用。 对于由 Microsoft Word 生成的 DOCX 文件,转换器处理复杂表结构和嵌入图像,同时保持原始段落和标题层次结构。

如何添加数字签名和表单字段?

生产文档工作流程通常需要加密签名以确认真实性,并需要交互式表单字段以收集数据。 IronPDF 提供数字签名PDF 表单支持,通过相同的 API。

using IronPdf;
using IronPdf.Signing;

// Load an existing PDF and apply a digital signature using an X.509 certificate
var pdf = PdfDocument.FromFile("agreement.pdf");
var signature = new PdfSignature("certificate.pfx", "pfx-password");
pdf.Sign(signature);

// Populate named form fields with dynamic application data
pdf.Form.FindFormField("CustomerName").Value = "Acme Corporation";
pdf.Form.FindFormField("ContractDate").Value = DateTime.Now.ToString("yyyy-MM-dd");
pdf.Form.FindFormField("Amount").Value = "$12,500.00";

pdf.SaveAs("signed-agreement.pdf");
using IronPdf;
using IronPdf.Signing;

// Load an existing PDF and apply a digital signature using an X.509 certificate
var pdf = PdfDocument.FromFile("agreement.pdf");
var signature = new PdfSignature("certificate.pfx", "pfx-password");
pdf.Sign(signature);

// Populate named form fields with dynamic application data
pdf.Form.FindFormField("CustomerName").Value = "Acme Corporation";
pdf.Form.FindFormField("ContractDate").Value = DateTime.Now.ToString("yyyy-MM-dd");
pdf.Form.FindFormField("Amount").Value = "$12,500.00";

pdf.SaveAs("signed-agreement.pdf");
$vbLabelText   $csharpLabel

示例验证签名

Adobe Acrobat 显示使用 IronPDF 的 PdfSignature API 签名的 PDF 上的验证数字签名面板

数字签名使用 PFX 格式的 X.509 证书,并遵循 PDF 签名标准,被 Adobe Acrobat 和其他 PDF 阅读器认可。 Acrobat 中的签名面板确认证书发行者、签名时间和完整性状态。 PDF 表单 API 支持文本字段、复选框、单选按钮和下拉菜单。 您可以以编程方式创建表单模板,在运行时用数据填充它们,并从填充的文档中读取提交的字段值。 此模式对于合同管理、HR 入职和自动化数据收集管道非常有用,其中相同的 PDF 模板跨多个事务重复使用,不同字段值。

在基于时间戳的签名中,传递一个配置有时间戳服务器 URI 的 PdfSignature 实例,这样签名时间由可信第三方而不是本地系统时钟认证。 签名指南涵盖可见签名图像、多个连续签名者和证书验证选项。

如何编辑和操作现有的 PDF 文档?

IronPDF 允许您修改 PDF 文件而不用从 HTML 重建它们。 以编程方式添加页眉、页脚、水印、注释或合并和拆分页面。

using IronPdf;

var document = PdfDocument.FromFile("report.pdf");

// Add a semi-transparent watermark using HTML
document.ApplyWatermark("<h2 style='color:red; opacity:0.4; transform:rotate(-30deg)'>CONFIDENTIAL</h2>",
    rotation: 30, opacity: 50);

// Add a branded header to every page
document.AddHtmlHeaders(new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right; font-size:10px; color:#666'>Internal Use Only - Page {page} of {total-pages}</div>"
});

// Append supplementary pages from a second document
var appendix = PdfDocument.FromFile("appendix.pdf");
document.AppendPdf(appendix);

document.SaveAs("final-report.pdf");

// Export to bytes for HTTP streaming
byte[] pdfBytes = document.BinaryData;
using IronPdf;

var document = PdfDocument.FromFile("report.pdf");

// Add a semi-transparent watermark using HTML
document.ApplyWatermark("<h2 style='color:red; opacity:0.4; transform:rotate(-30deg)'>CONFIDENTIAL</h2>",
    rotation: 30, opacity: 50);

// Add a branded header to every page
document.AddHtmlHeaders(new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right; font-size:10px; color:#666'>Internal Use Only - Page {page} of {total-pages}</div>"
});

// Append supplementary pages from a second document
var appendix = PdfDocument.FromFile("appendix.pdf");
document.AppendPdf(appendix);

document.SaveAs("final-report.pdf");

// Export to bytes for HTTP streaming
byte[] pdfBytes = document.BinaryData;
$vbLabelText   $csharpLabel

示例输出

PDF 文档,IronPDF 添加机密水印和品牌页眉,显示页码和附加附录页

HTML 页眉和页脚 API支持模板变量,包括 {total-pages}{date} 用于动态内容。 自定义水印方法接受 HTML 片段,使您可以将样式化、旋转的半透明覆盖应用于所有页面,一次调用即可完成。 您还可以按页面范围拆分 PDF合并多个文档,并从任何 PDF 中提取嵌入的图像和文本内容。 文本提取保持列和表的阅读顺序,这简化了下游处理,用于搜索索引、内容迁移或数据验证工作流。

如何应用密码保护和安全设置?

用密码和权限标志保护 PDF 文档是财务报告、法律文档和人力资源记录的标准要求。

using IronPdf;
using IronPdf.Security;

var pdf = PdfDocument.FromFile("financial-report.pdf");

// Set passwords: UserPassword controls opening, OwnerPassword controls editing
pdf.SecuritySettings.UserPassword = "viewer-password";
pdf.SecuritySettings.OwnerPassword = "admin-password";

// Configure fine-grained permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowResolution;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = false;

pdf.SaveAs("protected-report.pdf");
using IronPdf;
using IronPdf.Security;

var pdf = PdfDocument.FromFile("financial-report.pdf");

// Set passwords: UserPassword controls opening, OwnerPassword controls editing
pdf.SecuritySettings.UserPassword = "viewer-password";
pdf.SecuritySettings.OwnerPassword = "admin-password";

// Configure fine-grained permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowResolution;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = false;

pdf.SaveAs("protected-report.pdf");
$vbLabelText   $csharpLabel

PDF 安全设置 API应用 128 位或 256 位 AES 加密。 设置 UserPassword 需要阅读者在任何 PDF 阅读器中打开文件时输入密码。 设置 OwnerPassword 限制程序修改和拥有者级别的操作。 权限标志独立地控制打印质量、文本选择、注释和表单字段访问。 应用安全设置后,BinaryData 属性返回加密的 PDF 字节,用于存储或 HTTP 传输。 这些设置符合 PDF 规范的访问控制模型,因此受保护的文档能在 Adobe Acrobat、基于浏览器的 PDF 阅读器和移动阅读应用中正确打开。

要从您拥有的文档中移除保护,请使用所有者密码作为参数传递给 PdfDocument.FromFile 加载文件,然后保存时不应用安全设置。 这允许在服务器端工作流中进行程序化的文档处理,其中密码保护的文件作为输入到达,并且必须在重新分发之前转换。

您的下一步是什么?

IronPDF 的 PDF API for .NET Core 负责在 C# 中的完整文档生命周期:从 HTML 字符串和 URL 生成,转换 DOCX 和图像文件,配置页面布局和渲染选项,编辑水印、页眉和页脚,应用数字签名,并使用加密保护文档。 所有操作在 .NET 8、.NET 9 和 .NET 10 上使用一致的 API 在 Windows、macOS 和 Linux 进行。

开始免费试用以评估 IronPDF,使用您自己的文档。 对于其他场景,探索 HTML 到 PDF 渲染选项指南PDF 压缩和优化,以及完整的 IronPDF 功能概述。 查看 许可选项 以进行生产部署。

常见问题解答

什么是IronPDF的PDF API for .NET Core?

IronPDF是一个.NET库,可以在C#应用程序中生成、转换和编辑PDF文档。它作为一个单独的NuGet包安装,支持.NET 10,.NET 9,.NET 8,以及.NET Framework 4.6.2或更高版本。

如何在.NET Core中从HTML生成PDF?

创建一个ChromePdfRenderer实例,并使用HTML字符串调用RenderHtmlAsPdf,或者使用URL调用RenderUrlAsPdfAsync。渲染器将HTML、CSS和JavaScript输出转换为可以保存或流式传输的PdfDocument对象。

如何在IronPDF中配置页面大小和边距?

在调用渲染方法之前,在renderer.RenderingOptions上设置属性。使用PaperSize来选择标准格式,PaperOrientation来选择纵向或横向,以及MarginTop、MarginBottom、MarginLeft、MarginRight来设置以毫米为单位的边距。

IronPDF可以在.NET Core中将DOCX文件转换为PDF吗?

可以。使用DocxToPdfRenderer.RenderDocxAsPdf与文件路径。转换器保留源Word文档的段落样式、表格、页眉、页脚和嵌入的图像。

如何在C#中为PDF添加数字签名?

使用PdfDocument.FromFile加载PDF,创建一个带有PFX证书路径和密码的PdfSignature,然后调用pdf.Sign(signature)。生成的文档在Adobe Acrobat中和合规的PDF查看器中显示为已验证。

如何使用IronPDF对PDF进行密码保护?

设置pdf.SecuritySettings.UserPassword作为打开密码,并设置pdf.SecuritySettings.OwnerPassword作为所有者密码。使用AllowUserPrinting、AllowUserCopyPasteContent和相关标志来控制个人权限。

如何在ASP.NET Core中将生成的PDF作为HTTP响应返回?

访问PdfDocument实例上的BinaryData属性以检索PDF作为字节数组,然后在ASP.NET Core控制器操作中使用File(pdfBytes, 'application/pdf', 'filename.pdf')返回。

IronPDF在.NET Core应用程序中能在Linux和macOS上运行吗?

可以。IronPDF在Windows、macOS和Linux上运行,无需额外的本地运行时依赖。它支持Docker、Azure和AWS的容器化部署,无需平台特定的配置。

如何使用IronPDF为PDF添加页眉和页脚?

使用包含HtmlFragment的HtmlHeaderFooter对象调用document.AddHtmlHeaders,页眉标记写在其中。使用模板变量{page}、{total-pages}和{date}来表示动态值。同样的API适用于页脚。

IronPDF在ASP.NET Core中是线程安全的吗?

ChromePdfRenderer是线程安全的,可以在依赖注入容器中注册为单例。对于高吞吐量的工作负载,请使用异步渲染方法(RenderHtmlAsPdfAsync, RenderUrlAsPdfAsync)避免阻塞请求线程。

Curtis Chau
技术作家

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

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me