如何使用 GroupDocs.Merger for .NET 将文件附加到 PDF

在当今的数字时代,高效管理文档对于生产力和协作至关重要。最常见的任务之一是 将文件附加到 PDF,以便支持材料与主文档一起传递。使用 GroupDocs.Merger for .NET,您可以在几行代码内将演示文稿、电子表格或图像等附加文件直接嵌入 PDF。本教程将带您完成整个过程,从环境准备到完整的生产就绪实现。

快速答案

  • 主要好处是什么? 您可以将相关文件打包到单个 PDF 中,消除对单独附件的需求。
  • 我可以添加多少个附件? GroupDocs.Merger 支持每个 PDF 最多 100 个附件,且不会出现性能下降。
  • 我需要许可证吗? 免费试用可用于开发;生产环境需要付费许可证。
  • 支持哪些 .NET 版本? .NET Framework 4.5+、.NET Core 3.1+、.NET 5+ 和 .NET 6+。
  • 过程是否快速? 将附件添加到 200 页的 PDF 通常在标准服务器上耗时不到 2 秒。

什么是将文件附加到 PDF?

将文件附加到 PDF 会将外部文档嵌入为内部附件,用户可以直接从 PDF 查看器打开。此技术将所有相关资产集中在一起,简化分发和版本控制。当用户点击附件图标时,嵌入的文件会被提取并由查看器显示,确保支持材料随主文档一起传递,无需单独的电子邮件或压缩文件。

为什么使用 GroupDocs.Merger for .NET?

GroupDocs.Merger 能够 每个 PDF 最多处理 100 个附件,并且在典型的云 VM 上 200 页文档在 2 秒内完成处理,这归功于其内存高效的流式架构。它还支持超过 50 种输入和输出格式,确保您几乎可以附加任何文件类型,而无需转换麻烦。

前提条件

  • GroupDocs.Merger for .NET – 通过 NuGet 安装的最新版本。
  • .NET Framework 4.5+ .NET Core 3.1+(任何近期的 .NET 运行时)。
  • Visual Studio(Community 或更高版本)或任何支持 .NET 开发的 IDE。
  • 对 C# 和文件系统路径有基本了解。

如何使用 GroupDocs.Merger for .NET 将文件附加到 PDF?

加载源 PDF,指定要嵌入的文件,然后使用 Import 方法并传入 PdfAttachmentOptions。整个操作在内存中完成,原始 PDF 结构保持不变,附件安全地存储在文档内部。

实施指南

下面是核心工作流的逐步演练。每一步后都有一个占位符,标记原始代码片段所在位置。

步骤 1:定义文件路径

设置要修改的 PDF 和要嵌入的文件的绝对或相对路径。

dotnet add package GroupDocs.Merger

为什么? 明确定义文件路径可确保运行时能够毫不歧义地定位源文件和附件文件。

步骤 2:配置输出设置

选择将包含新附件的生成 PDF 的文件夹和名称。

Install-Package GroupDocs.Merger

为什么? 将输入和输出位置分离可防止意外覆盖,并便于验证结果。

步骤 3:初始化 PdfAttachmentOptions

PdfAttachmentOptions 配置附件添加到 PDF 的方式,包括描述和 MIME 类型。

定义锚点: PdfAttachmentOptions 是一个配置对象,告诉 GroupDocs.Merger 如何将文件作为附件嵌入 PDF。

string filePath = Path.Combine("YOUR_DOCUMENT_DIRECTORY", "SAMPLE_PDF_2.pdf");
string embeddedFilePath = Path.Combine("YOUR_DOCUMENT_DIRECTORY", "SAMPLE_PPTX.pptx");

为什么? 该对象允许您控制附件的元数据,如显示名称和文件类型,从而提升用户打开 PDF 时的体验。

Merger 是 GroupDocs.Merger 中的主要类,提供加载、修改和保存 PDF 文件的方法。

步骤 4:加载并导入文档

创建 Merger 实例,加载源 PDF,并使用上述选项导入附件。

string filePathOut = Path.Combine("YOUR_OUTPUT_DIRECTORY", "SamplePdfWithAttachment.pdf");

为什么? 通过 Merger API 加载 PDF 可确保附件插入时不会破坏现有页面或批注。

步骤 5:保存更新后的 PDF

将修改后的 PDF 持久化到之前配置的输出位置。

PdfAttachmentOptions olePdfOptions = new PdfAttachmentOptions(embeddedFilePath);

为什么? 保存操作完成更改并将新的附件流写入 PDF 文件。

常见问题及解决方案

  • FileNotFoundException: 验证步骤 1 中提供的路径在文件系统中实际存在。
  • 权限错误: 确保应用程序进程对源文件夹和目标文件夹都有读/写权限。
  • 不支持的附件类型: GroupDocs.Merger 支持文档中列出的任何格式;对于不常见的类型,考虑先将其打包为 ZIP 再附加。
  • 大文件: 当附件大于 100 MB 时,增加进程的内存限制或分块流式传输附件,以避免 OutOfMemoryException

实际应用

嵌入附件在许多真实场景中都非常有用:

  1. 法律合同 – 将支持性附件、签名或附件直接附加到合同 PDF 中。
  2. 财务报告 – 将原始数据电子表格或审计日志作为隐藏附件提供给审计员。
  3. 教育讲义 – 将练习册、答案键或多媒体资源打包在单个 PDF 教学大纲中。
  4. 项目交付物 – 将设计模型、源代码压缩包和规范文档合并为一个可移植的包。

通过使用 GroupDocs.Merger 自动化此过程,您可以消除手动压缩的步骤,确保每位利益相关者收到完整的自包含文件集。

性能考虑

  • 内存管理:Merger 实例放在 using 块中,以便及时释放非托管资源。
  • 批量处理: 如果需要向多个 PDF 附加文件,请并行批处理以利用多核 CPU。
  • 流式 I/O: 对于大附件,建议使用带异步读写的 FileStream,保持 UI 响应。

遵循这些最佳实践,即使处理数十个数百页的 PDF,也能保持应用程序的响应性。

常见问答

Q: 我可以向单个 PDF 添加多个附件吗?
A: 可以。对每个要嵌入的文件重复调用 Import 方法,并使用新的 PdfAttachmentOptions 实例。

Q: 是否可以删除已有的附件?
A: GroupDocs.Merger 提供 DeleteAttachment 方法,可按索引或名称删除指定的附件。

Q: GroupDocs.Merger 如何处理大文件?
A: 该库采用流式处理而非一次性加载整个文档到内存,使您能够在普通硬件上处理超过 500 MB 的 PDF。

Q: 可以附加哪些文件格式?
A: 任何 GroupDocs 支持的格式——包括 DOCX、XLSX、PPTX、ZIP、PNG,甚至可执行文件——都可以作为附件嵌入。

Q: 我能在更大的工作流中自动化此操作吗?
A: 完全可以。该 API 与后台服务、Azure Functions 和 CI/CD 流水线完全兼容,实现端到端的文档自动化。

资源

准备好尝试将文件附加到 PDF 吗?按照上述步骤,在 IDE 中运行示例占位符,观察您的 PDF 获得嵌入资源的强大功能。


Last Updated: 2026-09-11
Tested With: GroupDocs.Merger 23.12 for .NET
Author: GroupDocs

using (Merger merger = new Merger(filePath))
{
    // Import the specified document as an attachment
    merger.ImportDocument(olePdfOptions);

    // Save the resultant PDF with the added attachment
    merger.Save(filePathOut);
}

相关教程