使用IRONPDF PDF API for .NET Core:在C#中生成和编辑PDF Curtis Chau 已更新:2026年3月1日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 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文档 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 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 示例验证签名 数字签名使用 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 示例输出 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 机器人,将他对技术的热爱与创造力相结合。 相关文章 已更新2026年3月1日 如何在.NET中使用IronPDF创建PDF文件(C#教程) 发现为开发人员创建PDF文件的有效方法。提升您的编码技能并简化您的项目。立即阅读文章! 阅读更多 已更新2026年2月27日 如何在C#中合并PDF文件 使用IronPDF合并PDF VB NET。学习使用简单的VB.NET代码将多个PDF文件合并为一个文档。包括逐步示例。 阅读更多 已更新2026年3月1日 面向 .NET 10 开发人员的 C# PDFWriter 教程 使用这份逐步指南了解如何高效地使用C# PDFWriter创建PDF。阅读文章提升您的技能! 阅读更多 如何在C# .NET中合并PDF文件?如何在C#中使用.NET SDK创建...