如何使用IronPDF在 C# 中進行 PDF編輯:新增和刪除 PDF 附件
IronPDF可讓您使用簡單的 C# 方法(如 AddAttachment() 和 RemoveAttachment())以編程方式在 PDF 文件中新增、檢索和刪除文件附件,從而允許您將補充文件直接嵌入到 PDF 中。
PDF 文件中的附件是指嵌入在 PDF 文件本身中的文件或附加資料。 這與 PDF 的常規內容不同,常規內容包括查看 PDF 時可見的文字、圖像和格式。 這些附件可以採用各種文件類型,包括圖像、文件、電子表格或其他格式。 通常,附件用於提供用戶開啟 PDF 時可以存取的其他參考資料或補充資料。 在建立綜合性 PDF 報告或需要將多個 PDF 文件與支援文件合併時,此功能尤其有用。
快速入門:將附件新增至 PDF
使用IronPDF為 PDF 文件新增附件。 這個簡單的範例示範如何將文件作為附件嵌入到 PDF 中。 載入您現有的 PDF 文件,使用 AddAttachment 方法,然後儲存更新後的文件。 此流程可確保您的補充資料包含在您的 PDF 檔案中,使其可直接透過任何 PDF 檢視器存取。
最簡工作流程(5個步驟)
- 從NuGet下載IronPDF C# 庫
- 載入現有 PDF 或渲染新 PDF
- 使用 File.ReadAllBytes 將檔案以**byte[]**格式匯入。
- 使用`AddAttachment`將其附加到 PDF 文件中。
- 使用`RemoveAttachment`移除附件
如何將文件作為附件新增至 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");
Imports IronPdf
Imports System.IO
' Import attachment file
Private fileData() As Byte = File.ReadAllBytes("path/to/file")
' Open existing PDF
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Add attachment to the PDF
pdf.Attachments.AddAttachment("Example", fileData)
pdf.SaveAs("addAttachment.pdf")
AddAttachment 函數輸出一個PdfAttachment對象,您可以保留該物件以供將來參考,也可以在需要時將其刪除。 這種方法類似於向 PDF 添加圖像或管理其他 PDF 資源的方式。
儲存 PDF 檔案後,您可以從 PDF 檢視器的工具列開啟附件。 下圖展示如何在GoogleChrome瀏覽器的PDF檢視器中找到此功能:

然後,您可以點擊它並將附件儲存到您的儲存空間。
我可以將哪些文件類型附加到 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 中的附件。 利用二進位數據,您可以將 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);
}
}
Imports IronPdf
Imports System.IO
' Open existing PDF
Private pdf As PdfDocument = PdfDocument.FromFile("addAttachment.pdf")
' Iterate through all attachments
For Each attachment In pdf.Attachments
If attachment.Name.Contains("Example") Then
' Save byte to file
File.WriteAllBytes($"{attachment.Name}.doc", attachment.Data)
End If
Next attachment
當您需要從 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");
' Get all attachments as a list
Dim allAttachments = pdf.Attachments.ToList()
' Filter attachments by size (e.g., files larger than 1MB)
Dim largeAttachments = pdf.Attachments _
.Where(Function(a) a.Data.Length > 1024 * 1024) _
.ToList()
' Find specific attachment by exact name
Dim specificAttachment = pdf.Attachments _
.FirstOrDefault(Function(a) a.Name = "report.xlsx")
已檢索附件有哪些屬性?
每個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();
' Filter by file extension (assuming names include extensions)
Dim imageAttachments = pdf.Attachments _
.Where(Function(a) a.Name.EndsWith(".jpg") OrElse _
a.Name.EndsWith(".png") OrElse _
a.Name.EndsWith(".gif")) _
.ToList()
' Filter by name pattern
Dim reportsOnly = pdf.Attachments _
.Where(Function(a) a.Name.StartsWith("Report_")) _
.ToList()
如何從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");
Imports IronPdf
Imports System.Linq
' Open existing PDF
Private pdf As PdfDocument = PdfDocument.FromFile("addAttachment.pdf")
' Add attachment to the PDF
Private retrieveAttachments As PdfAttachmentCollection = pdf.Attachments
' Remove attachment from PDF
pdf.Attachments.RemoveAttachment(retrieveAttachments.First())
pdf.SaveAs("removeAttachment.pdf")
刪除附件後,用 PDF 檢視器開啟產生的文件,你會發現附件不再顯示:

移除附件會發生什麼事?
移除附件時:
- PDF 檔案中的附件資料已完全刪除
- 檔案大小減少的量大約等於移除的附件的大小。
- 清除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());
}
Imports System.Linq
' Remove all attachments that match a pattern
Dim attachmentsToRemove = pdf.Attachments _
.Where(Function(a) a.Name.StartsWith("temp_")) _
.ToList()
For Each attachment In attachmentsToRemove
pdf.Attachments.RemoveAttachment(attachment)
Next
' Or remove all attachments at once
While pdf.Attachments.Count > 0
pdf.Attachments.RemoveAttachment(pdf.Attachments.First())
End While
如何確認附件已成功刪除?
您可以透過以下幾種方式驗證附件是否已刪除:
// 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");
' Check the attachment count
Dim attachmentCountBefore As Integer = pdf.Attachments.Count
pdf.Attachments.RemoveAttachment(targetAttachment)
Dim attachmentCountAfter As Integer = pdf.Attachments.Count
' Verify the count decreased
If attachmentCountAfter < attachmentCountBefore Then
Console.WriteLine("Attachment successfully removed")
End If
' Check if specific attachment exists
Dim attachmentExists As Boolean = pdf.Attachments _
.Any(Function(a) a.Name = "specificFile.txt")
PDF附件最佳實踐
在IronPDF中處理 PDF 附件時,請遵循以下最佳實務:
1.檔案大小管理:請注意附件大小,因為它們會直接增加 PDF 檔案的大小。
2.命名規則:附件名稱應清晰、描述性強,以便使用者識別。
3.安全注意事項:處理敏感附件時,請考慮對PDF 文件設定密碼和權限。
4.效能:對於大型附件或大量文件,請考慮使用非同步操作以保持應用程式的回應速度。
準備好要看看你還能做什麼了嗎? 請查看我們的教學頁面:整理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 內建的檢視器)都會顯示一個附件圖示或面板,可在此開啟或儲存內嵌的檔案。

