使用IRONPDF 如何在C# .NET中合并PDF文件? Curtis Chau 已更新:2026年3月1日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 将多个PDF文件合并为一个文档是业务应用中的常见要求。 无论您是生成合并后的财务报告,将法律合同捆绑存档,还是组装多部分发票,程序化合并PDF都可以节省时间并消除手动步骤。 IronPDF提供了一个简单的API,只需几行C#代码即可处理此问题,无需外部工具或命令行实用程序。 本指南涵盖每一个实际场景:两个文件合并,多文件列表合并,使用MemoryStream进行内存处理,以及合并后操作如密码保护和压缩。 立即开始免费试用,为您的.NET应用程序添加PDF合并功能。 如何开始使用 IronPDF? 在编写任何合并代码之前,请从NuGet安装IronPDF。 该包针对.NET Framework 4.6.2+和.NET 5/6/7/8/9/10,因此在控制台应用、ASP.NET Core服务、Azure Functions和Windows Forms项目中工作,无需额外的运行时依赖。 打开NuGet包管理器控制台并运行: Install-Package IronPdf Install-Package IronPdf SHELL 或使用 .NET CLI: dotnet add package IronPdf dotnet add package IronPdf SHELL 有关逐步设置说明,包括许可证密钥应用,请参阅IronPDF安装概述。 一旦安装了包并应用了许可证密钥,本指南中的每个示例都可以无修改地运行。 如何程序化地合并PDF文档? PdfDocument.Merge方法提供了将两个PDF文件合并为一个PDF的最直接的方法。 使用Merge,然后保存结果。 输入发票一 输入发票二 using IronPdf; // Load two input PDF files from disk PdfDocument pdfA = PdfDocument.FromFile("invoice_one.pdf"); PdfDocument pdfB = PdfDocument.FromFile("invoice_two.pdf"); // Merge PDF documents into a single PDF PdfDocument merged = PdfDocument.Merge(pdfA, pdfB); // Save the merged document merged.SaveAs("combined_invoices.pdf"); using IronPdf; // Load two input PDF files from disk PdfDocument pdfA = PdfDocument.FromFile("invoice_one.pdf"); PdfDocument pdfB = PdfDocument.FromFile("invoice_two.pdf"); // Merge PDF documents into a single PDF PdfDocument merged = PdfDocument.Merge(pdfA, pdfB); // Save the merged document merged.SaveAs("combined_invoices.pdf"); $vbLabelText $csharpLabel 输出 PdfDocument实例,并返回一个新文档,其中包含来自两个源的所有页面,按顺序排列。 结果文件保留每个输入的原始格式、图像、字体和嵌入内容。 生成合并文档后,可以将其保存到磁盘,从网络端点返回,或在交付给用户之前添加页眉和页脚。 请注意,PdfDocument.FromFile同时支持文件路径和URI字符串,因此存储在云BLOB存储中的文档可以直接通过URL加载。 合并操作是无损的:两个源对象在调用后保持不变。 如何一次合并多个PDF文件? 当您需要合并两个以上的文档时,可以传递Merge方法。 这种方法从三个文件扩展到数百个文件,而无需更改代码结构。 using IronPdf; // Build a list of quarterly reports List<PdfDocument> pdfsToMerge = new() { PdfDocument.FromFile("report_q1.pdf"), PdfDocument.FromFile("report_q2.pdf"), PdfDocument.FromFile("report_q3.pdf"), PdfDocument.FromFile("report_q4.pdf") }; // Combine into one annual report PdfDocument merged = PdfDocument.Merge(pdfsToMerge); // Save the final document merged.SaveAs("annual_report.pdf"); using IronPdf; // Build a list of quarterly reports List<PdfDocument> pdfsToMerge = new() { PdfDocument.FromFile("report_q1.pdf"), PdfDocument.FromFile("report_q2.pdf"), PdfDocument.FromFile("report_q3.pdf"), PdfDocument.FromFile("report_q4.pdf") }; // Combine into one annual report PdfDocument merged = PdfDocument.Merge(pdfsToMerge); // Save the final document merged.SaveAs("annual_report.pdf"); $vbLabelText $csharpLabel 合并 PDF 文档 IronPDF按列表顺序处理页面,因此List<PdfDocument>中的文档顺序直接控制输出中的页面顺序。 如果需要在合并后重新排序页面,页面管理API允许您从任何PdfDocument复制、移动或删除单个页面。 这种模式也适用于运行时生成的文档。例如,您可以为报告的每个部分转换HTML为PDF,并合并生成的PdfDocument对象,而无需将中间文件写入磁盘。 同样适用于当您的源内容来源于Word文档时的DOCX到PDF转换。 如何使用MemoryStream合并PDF文件? 在磁盘写入不可能或速度过慢的情况下,内存处理是Web服务和无服务函数所需的。 IronPDF支持从字节数组加载PDF文档,并通过MemoryStream。 using IronPdf; using System.IO; // Load PDF content as byte arrays (e.g., from database or HTTP response) byte[] firstFileBytes = File.ReadAllBytes("contract_part1.pdf"); byte[] secondFileBytes = File.ReadAllBytes("contract_part2.pdf"); // Create PdfDocument objects from byte arrays PdfDocument doc1 = new PdfDocument(firstFileBytes); PdfDocument doc2 = new PdfDocument(secondFileBytes); // Merge and access the result as a stream PdfDocument merged = PdfDocument.Merge(doc1, doc2); MemoryStream outputStream = merged.Stream; // Optionally save to disk as well merged.SaveAs("merged_contract.pdf"); using IronPdf; using System.IO; // Load PDF content as byte arrays (e.g., from database or HTTP response) byte[] firstFileBytes = File.ReadAllBytes("contract_part1.pdf"); byte[] secondFileBytes = File.ReadAllBytes("contract_part2.pdf"); // Create PdfDocument objects from byte arrays PdfDocument doc1 = new PdfDocument(firstFileBytes); PdfDocument doc2 = new PdfDocument(secondFileBytes); // Merge and access the result as a stream PdfDocument merged = PdfDocument.Merge(doc1, doc2); MemoryStream outputStream = merged.Stream; // Optionally save to disk as well merged.SaveAs("merged_contract.pdf"); $vbLabelText $csharpLabel 合并合同文件 MemoryStream,位置位于开头,准备写入HTTP响应或传递到另一个处理步骤。在ASP.NET Core控制器中,您可以直接返回File(outputStream, "application/pdf", "merged.pdf")。 未创建临时文件,这简化了清理并减少了高吞吐量场景中的磁盘开销。 IronPDF接受字符串文件路径、字节数组和流作为输入源,可以在同一次合并调用中混合使用。 从数据库BLOB加载的文档可以与从URL获取的文档合并,而无需中间转换步骤。 在合并文件中如何保留书签和导航? 当您合并PDF文件时,IronPDF会继承每个源文档的书签结构。 读者在合并输出的导航窗格中看到来自所有合并文件的完整目录,使用户可以轻松在不同源文档的章节之间跳转。 PDF规格中的书签存储在文档大纲字典中,IronPDF正确重建了所有合并来源的这种结构。 书签保留是自动完成的,无需额外配置。 如果源文件包含嵌套书签(章节和子章节),合并输出中保留了层次结构。 对于需要统一目录而不是单独的每个文档书签树的合并文档,目录API允许您在合并后构建自定义导航结构。 如果某个源文档创建时没有书签元数据,合并输出中将不会有该部分的目录条目。 在合规或存档上下文中交付合并文件之前,检查生成OutlineManager属性,以验证哪些书签已保留。 您可以程序化地重命名书签标签,重新排序条目,或注入新条目,将来自不同源文档的内容桥接成一个逻辑层次。 对于需要长时间存档的工作流,PDF/A转换可以在合并后应用,而不是针对每个源单独应用。 一次性转换最终合并的文档效率更高,并避免重新转换可能需要进一步编辑的输出。 合并后,您还可以使用页码功能向合并的文档添加页码,这在输出跨越多个源的数十页时非常有用。 如何对合并后的PDF应用密码保护? 合并后,生成的SecuritySettings以应用用户和所有者密码,限制打印、复制和编辑权限。 using IronPdf; PdfDocument pdfA = PdfDocument.FromFile("part1.pdf"); PdfDocument pdfB = PdfDocument.FromFile("part2.pdf"); PdfDocument merged = PdfDocument.Merge(pdfA, pdfB); // Require a password to open the document merged.SecuritySettings.UserPassword = "reader123"; // Owner password controls permissions such as printing and editing merged.SecuritySettings.OwnerPassword = "admin456"; merged.SaveAs("secured_merged.pdf"); using IronPdf; PdfDocument pdfA = PdfDocument.FromFile("part1.pdf"); PdfDocument pdfB = PdfDocument.FromFile("part2.pdf"); PdfDocument merged = PdfDocument.Merge(pdfA, pdfB); // Require a password to open the document merged.SecuritySettings.UserPassword = "reader123"; // Owner password controls permissions such as printing and editing merged.SecuritySettings.OwnerPassword = "admin456"; merged.SaveAs("secured_merged.pdf"); $vbLabelText $csharpLabel OwnerPassword则限制权限更改。 您可以将密码保护与打印限制、复制防护标志和数字签名结合使用。 有关权限选项的完整指南,PDF安全性教程涵盖了所有可用设置。 如果源文件本身已受密码保护,IronPDF可以在合并前解密加密的PDF,前提是您拥有所有者凭据。 这意味着您可以将来自不同供应商或系统的受保护文档合并为一个安全的输出,而无需手动解锁步骤。 如何减少合并后PDF的文件大小? 合并包含许多图像的大型文档生成的输出可能存储或发送较大。 IronPDF的PDF压缩API可以通过以较低质量设置重新压缩嵌入图像来显著减小文件大小,同时保持文本清晰度。 using IronPdf; PdfDocument pdfA = PdfDocument.FromFile("report_section1.pdf"); PdfDocument pdfB = PdfDocument.FromFile("report_section2.pdf"); PdfDocument merged = PdfDocument.Merge(pdfA, pdfB); // Compress embedded images to reduce output file size merged.CompressImages(60); // quality 0–100 merged.SaveAs("compressed_merged.pdf"); using IronPdf; PdfDocument pdfA = PdfDocument.FromFile("report_section1.pdf"); PdfDocument pdfB = PdfDocument.FromFile("report_section2.pdf"); PdfDocument merged = PdfDocument.Merge(pdfA, pdfB); // Compress embedded images to reduce output file size merged.CompressImages(60); // quality 0–100 merged.SaveAs("compressed_merged.pdf"); $vbLabelText $csharpLabel CompressImages的整数参数是质量百分比:50到75之间的值通常可以对图像密集的文档减少40-70%的文件大小,而不会影响文本内容的可见性。 对于包含矢量图形和最少栅格图像的文件,节省较小,但无论如何安全调用。 PDF 合并的常见用例有哪些? PdfDocument.Merge API适应生产.NET应用中的广泛文档工作流: 常见的PDF合并场景及每个的IronPDF方法 用例输入源推荐方法 年度财务报告磁盘上的四个季度PDF文件使用`Merge(List<PdfDocument>)`的列表合并 多部分法律合同基础合同+数据库中的修正案字节数组加载+内存合并 发票合并按行项目生成的HTML发票每个项目的HTML转PDF,然后列表合并 自动化报告交付混合DOCX和PDF源文件DOCX到PDF转换,然后合并 安全文档存档多个部门报告列表合并+`SecuritySettings` 对于需要在合并之前选择性提取文档的工作流,拆分PDF API可以从源文档中提取特定页面范围。 您可以直接在PDF文件之间复制页面,这在只需在合并输出中显示大型文档的某些部分时非常有用。 IronPDF还支持从合并文档中提取文本和图像以进行下游处理,使其适合作为较大数据管道中的中央文档组装步骤。 您的下一步是什么? IronPDF的PdfDocument.Merge方法涵盖了.NET PDF合并场景的全范围,所需代码最少:两文件合并、多文件列表合并、内存处理、密码保护输出和合并后压缩。 每种方法都使用相同的一致API,无论输入源类型如何。 开始免费试用,在您自己的项目中运行这些示例。 对于生产部署,请查看适合您团队规模和使用的许可选项。 添加合并支持后,探索相关的文档操作:拆分PDF为单独的文件,为多页输出添加页码,或为合并文档的所有页面应用水印。 立即开始使用 IronPDF。 免费开始 常见问题解答 如何在C#中合并两个PDF文件? 使用 PdfDocument.FromFile 加载每个文件,然后调用 PdfDocument.Merge(pdfA, pdfB) 并使用 merged.SaveAs 保存结果。 如何在 .NET 中合并超过两个PDF文件? 创建一个包含所有源文档的 List<PdfDocument>,并将其传递给 PdfDocument.Merge(list)。输出会保留列表顺序。 可以在不写入磁盘的情况下在内存中合并PDF吗? 可以。使用 new PdfDocument(bytes) 从字节数组中加载文档,合并并通过 merged.Stream 访问结果以避免任何磁盘写入。 IronPDF 合并PDF时会保留书签吗? 会的。IronPDF 会自动将每个源文档的书签(大纲)结构带入合并输出中,包括嵌套的书签层次结构。 如何在C#中给合并后的PDF设置密码保护? 合并后,设置 merged.SecuritySettings.UserPassword 作为阅读器密码,设置 merged.SecuritySettings.OwnerPassword 作为权限密码,然后调用 SaveAs。 如何减小合并后PDF的文件大小? 在保存之前调用 merged.CompressImages(quality) ,设置质量值在 50 到 75 之间。这会重新压缩嵌入的光栅图像,通常可将图像密集的文档文件大小减少40-70%。 IronPDF 可以合并加密的PDF文件吗? 可以。当您拥有所有者密码时,IronPDF 可以加载并合并加密的PDF。在合并之前使用 PdfDocument.FromFile(path, password) 解锁文件。 IronPDF 的合并API在ASP.NET Core中有效吗? 有效。合并结果可以作为 File(merged.Stream, "application/pdf", "merged.pdf") 从任何 ASP.NET Core 控制器操作返回。 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#中使用IronPDF移动PDF页面PDF API for .NET Core:在C#中生...