如何在PDF C#中添加和删除附件

如何使用 IronPDF 在 C# 中添加和删除 PDF 附件

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF使您能够使用简单的 C# 方法(如 AddAttachment()RemoveAttachment())以编程方式在 PDF 文档中添加、检索和删除文件附件,从而允许您将补充文件直接嵌入到 PDF 中。

PDF 文档中的附件是指嵌入在 PDF 文件本身内的文件或附加数据。 这不同于 PDF 的常规内容,包括可见的文本、图像和格式,当您查看 PDF 时可以看到。 这些附件可以是各种文件类型,包括图像、文件、电子表格或其他格式。 通常,附件用于提供用户在打开 PDF 时可以访问的附加参考资料或补充数据。 在创建综合 PDF 报告或需要将多个 PDF 文件与支持文档合并时,这种能力尤其有用。

快速入门:向 PDF 添加附件

使用 IronPDF 为您的 PDF 文档添加附件。 该快速示例演示了如何将文件嵌入为 PDF 中的附件。 加载您现有的 PDF 文件,使用 AddAttachment 方法,然后保存更新后的文档。 此过程可确保您的补充材料与 PDF 一起包含,使其可从任何 PDF 浏览器直接访问。

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 复制并运行这段代码。

    var pdf = IronPdf.PdfDocument.FromFile("example.pdf");
    pdf.Attachments.AddAttachment("file.txt", System.IO.File.ReadAllBytes("file.txt"));
    pdf.SaveAs("updated.pdf");
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronPDF

    arrow pointer


如何将文件添加为 PDF 的附件?

要添加文件作为附件,首先将其作为 byte[] 加载。 最简单的方法是使用 File.ReadAllBytes 方法。 将文件加载为byte[]后,使用 AddAttachment 方法将该对象作为附件添加到 PDF 中:

:path=/static-assets/pdf/content-code-examples/how-to/add-remove-attachments-add-attachment.cs
using IronPdf;
using System.IO;

// Import attachment file
byte[] fileData = File.ReadAllBytes(@"path/to/file");

// Open existing PDF
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Add attachment to the PDF
pdf.Attachments.AddAttachment("Example", fileData);

pdf.SaveAs("addAttachment.pdf");
$vbLabelText   $csharpLabel

AddAttachment 函数输出一个PdfAttachment对象,您可以保留该对象以供将来参考,也可以在需要时将其删除。 这种方法类似于在 PDF 中添加图片管理其他 PDF 资产

保存 PDF 后,您可以从 PDF 查看器的工具栏中打开附件。 下图演示了在 Google Chrome 浏览器的 PDF 查看器中找到此功能的位置:

PDF 查看器显示带有导航控件和侧边栏面板的 Hello World 文档

在这里,您可以点击它并将附件保存到您的存储器中。

我可以为 PDF 附加哪些文件类型?

IronPDF 支持将几乎任何文件类型附加到 PDF 文档。 常见的附件类型包括

  • 办公文档(DOCX、XLSX、PPTX)
  • 图片(JPG、PNG、GIF、SVG)
  • 文本文件(TXT、CSV、XML)
  • 存档(ZIP、RAR)
  • 其他 PDF 文件

附件系统使用二进制数据,因此任何可以读取字节的文件都可以作为附件。 在处理特定文档类型时,您还可以考虑 IronPDF 的内置转换功能,例如 将 DOCX 转换为 PDF 将图像转换为 PDF

附件在 PDF 浏览器中的哪些位置出现?

不同的 PDF 阅读器会在不同的位置显示附件:

  • Adobe Acrobat:在导航窗格中显示回形针图标
  • Chrome PDF 查看器:点击时在左侧边栏显示附件
  • Firefox PDF 查看器:在专用面板中显示附件
  • Microsoft Edge:与 Chrome 浏览器类似,具有侧边栏附件视图

大多数现代 PDF 阅读器都支持附件,但不同应用程序的界面可能略有不同。

添加后 PdfAttachment 对象会发生什么变化?

当您调用 AddAttachment() 时, IronPDF会创建一个包含以下内容的PdfAttachment对象:

  • 名称:附件的显示名称
  • 数据:所附文件的二进制内容
  • 描述:附件的可选元数据

该对象被添加到 PDF 的内部附件集合中,并且一直可以通过 Attachments 属性访问,直到显式删除为止。

如何从现有 PDF 中检索附件?

通过访问 PdfDocument 对象的 Attachments 属性,可以二进制数据的形式检索 PDF 中的附件。 通过二进制数据,您可以将附件导出为其各自的文件格式。

:path=/static-assets/pdf/content-code-examples/how-to/add-remove-attachments-retrieve-attachment.cs
using IronPdf;
using System.IO;

// Open existing PDF
PdfDocument pdf = PdfDocument.FromFile("addAttachment.pdf");

// Iterate through all attachments
foreach (var attachment in pdf.Attachments)
{
    if (attachment.Name.Contains("Example"))
    {
        // Save byte to file
        File.WriteAllBytes($"{attachment.Name}.doc", attachment.Data);
    }
}
$vbLabelText   $csharpLabel

当您需要从 PDF 中提取内容或以编程方式处理附件文档时,这一过程尤其有用。

如何访问 PDF 中的多个附件?

Attachments 属性返回一个集合,您可以遍历该集合或使用 LINQ 进行查询:

// Get all attachments as a list
var allAttachments = pdf.Attachments.ToList();

// Filter attachments by size (e.g., files larger than 1MB)
var largeAttachments = pdf.Attachments
    .Where(a => a.Data.Length > 1024 * 1024)
    .ToList();

// Find specific attachment by exact name
var specificAttachment = pdf.Attachments
    .FirstOrDefault(a => a.Name == "report.xlsx");
// Get all attachments as a list
var allAttachments = pdf.Attachments.ToList();

// Filter attachments by size (e.g., files larger than 1MB)
var largeAttachments = pdf.Attachments
    .Where(a => a.Data.Length > 1024 * 1024)
    .ToList();

// Find specific attachment by exact name
var specificAttachment = pdf.Attachments
    .FirstOrDefault(a => a.Name == "report.xlsx");
$vbLabelText   $csharpLabel

检索到的附件具有哪些属性?

每个 PdfAttachment 对象提供:

  • 名称:附件的显示名称
  • 数据:作为字节数组的二进制内容
  • 描述:可选的描述元数据(如果已设置)

您可以根据自己的要求使用这些属性来识别、过滤和处理附件。

如何按名称或类型筛选附件?

由于附件是以其显示名称存储的,因此您可以使用字符串操作对其进行过滤:

// Filter by file extension (assuming names include extensions)
var imageAttachments = pdf.Attachments
    .Where(a => a.Name.EndsWith(".jpg") || 
                a.Name.EndsWith(".png") || 
                a.Name.EndsWith(".gif"))
    .ToList();

// Filter by name pattern
var reportsOnly = pdf.Attachments
    .Where(a => a.Name.StartsWith("Report_"))
    .ToList();
// Filter by file extension (assuming names include extensions)
var imageAttachments = pdf.Attachments
    .Where(a => a.Name.EndsWith(".jpg") || 
                a.Name.EndsWith(".png") || 
                a.Name.EndsWith(".gif"))
    .ToList();

// Filter by name pattern
var reportsOnly = pdf.Attachments
    .Where(a => a.Name.StartsWith("Report_"))
    .ToList();
$vbLabelText   $csharpLabel

如何删除 PDF 中的附件?

要删除附件,请使用 RemoveAttachment 功能。 此方法需要附件的引用,可以从 Attachments 属性中检索。 下面是如何使用上面保存的文件进行翻译的方法:

:path=/static-assets/pdf/content-code-examples/how-to/add-remove-attachments-remove-attachment.cs
using IronPdf;
using System.Linq;

// Open existing PDF
PdfDocument pdf = PdfDocument.FromFile("addAttachment.pdf");

// Add attachment to the PDF
PdfAttachmentCollection retrieveAttachments = pdf.Attachments;

// Remove attachment from PDF
pdf.Attachments.RemoveAttachment(retrieveAttachments.First());

pdf.SaveAs("removeAttachment.pdf");
$vbLabelText   $csharpLabel

删除附件并在 PDF 查看器中打开生成的文件后,您会看到附件不再出现:

PDF 查看器已打开附件面板,显示

当我删除附件时会发生什么?

当您删除附件时: 1.从 PDF 文件中完全删除附件数据 2.文件大小约减去所删除附件的大小 3.清理 PDF 结构中对该附件的任何引用 4.保存 PDF 后,更改将永久有效

这与其他 PDF 修改操作类似,如 删除页面 编辑内容

我能否一次删除多个附件?

是的,您可以在一次操作中删除多个附件。 下面是一个例子:

// Remove all attachments that match a pattern
var attachmentsToRemove = pdf.Attachments
    .Where(a => a.Name.StartsWith("temp_"))
    .ToList();

foreach (var attachment in attachmentsToRemove)
{
    pdf.Attachments.RemoveAttachment(attachment);
}

// Or remove all attachments at once
while (pdf.Attachments.Count > 0)
{
    pdf.Attachments.RemoveAttachment(pdf.Attachments.First());
}
// Remove all attachments that match a pattern
var attachmentsToRemove = pdf.Attachments
    .Where(a => a.Name.StartsWith("temp_"))
    .ToList();

foreach (var attachment in attachmentsToRemove)
{
    pdf.Attachments.RemoveAttachment(attachment);
}

// Or remove all attachments at once
while (pdf.Attachments.Count > 0)
{
    pdf.Attachments.RemoveAttachment(pdf.Attachments.First());
}
$vbLabelText   $csharpLabel

如何验证附件已成功删除?

您可以通过以下几种方式验证附件的删除:

// Check the attachment count
int attachmentCountBefore = pdf.Attachments.Count;
pdf.Attachments.RemoveAttachment(targetAttachment);
int attachmentCountAfter = pdf.Attachments.Count;

// Verify the count decreased
if (attachmentCountAfter < attachmentCountBefore)
{
    Console.WriteLine("Attachment successfully removed");
}

// Check if specific attachment exists
bool attachmentExists = pdf.Attachments
    .Any(a => a.Name == "specificFile.txt");
// Check the attachment count
int attachmentCountBefore = pdf.Attachments.Count;
pdf.Attachments.RemoveAttachment(targetAttachment);
int attachmentCountAfter = pdf.Attachments.Count;

// Verify the count decreased
if (attachmentCountAfter < attachmentCountBefore)
{
    Console.WriteLine("Attachment successfully removed");
}

// Check if specific attachment exists
bool attachmentExists = pdf.Attachments
    .Any(a => a.Name == "specificFile.txt");
$vbLabelText   $csharpLabel

PDF 附件的最佳实践

在 IronPDF 中处理 PDF 附件时,请考虑以下最佳实践:

1.文件大小管理:注意附件大小,因为附件会直接增加 PDF 文件的大小。 2.命名约定:为附件使用清晰、描述性的名称,以帮助用户识别它们 3.安全考虑因素:处理敏感附件时,请考虑应用IronPDF密码和权限。 4.性能:对于大型附件或许多文件,请考虑使用 async 操作来保持应用程序的响应速度

准备好看看您还能做些什么吗? 在这里查看我们的教程页面:组织PDF

常见问题解答

如何用 C# 编程向 PDF 添加文件附件?

IronPDF 提供了一个简单的 AddAttachment() 方法,用于将文件嵌入到 PDF 中。首先,使用 File.ReadAllBytes() 将文件加载为字节数组,然后在 PdfDocument 对象上使用 AddAttachment 方法。该方法将文件名和字节数组作为参数。

PDF 文件可以附加哪些类型的文件?

IronPDF 允许您为 PDF 附加各种类型的文件,包括图片、文档、电子表格和其他格式。这些附件直接嵌入到 PDF 文件中,并可通过任何标准 PDF 浏览器的附件面板进行访问。

如何加载现有 PDF 文件以添加附件?

您可以使用 IronPDF 的 PdfDocument.FromFile() 方法加载现有 PDF。加载完成后,您可以使用 Attachments 属性管理附件,包括使用 AddAttachment() 添加新附件或删除现有附件。

PDF 内容和 PDF 附件有什么区别?

PDF 内容包括您在查看 PDF 时看到的可见文本、图像和格式。附件是嵌入在 PDF 中的独立文件,不会出现在主文档视图中。使用 IronPDF,可以通过 PDF 查看器的附件面板访问附件,并将其作为补充材料。

如何删除 PDF 中的附件?

IronPDF 提供了一个 RemoveAttachment() 方法,用于以编程方式删除 PDF 中的嵌入文件。AddAttachment 函数返回一个 PdfAttachment 对象,您可以在以后的移除操作中引用该对象。

用户在哪里可以找到 PDF 浏览器中的附件?

使用 IronPDF 添加附件后,用户可以通过 PDF 查看器的工具栏访问这些附件。大多数 PDF 查看器(包括 Google Chrome 浏览器的内置查看器)都会显示一个附件图标或面板,可在其中打开或保存嵌入的文件。

Jordi Bardia
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。
准备开始了吗?
Nuget 下载 17,803,474 | 版本: 2026.3 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。