C#添加、獲取、刪除PDF附件實(shí)例代碼
概述
附件,指隨同文件發(fā)出的有關(guān)文件或物品。在PDF文檔中,我們可以添加同類型的或其他類型的文檔作為附件內(nèi)容,而PDF中附件也可以分為兩種存在形式,一種是附件以普通文件形式存在,另一種是以注釋的形式存在。在下面的示例中介紹了如何分別添加以上兩種形式的PDF附件。此外,根據(jù)PDF附件的不同添加方式,我們?cè)讷@取PDF附件信息或刪除PDF附件時(shí),也可以分情況來執(zhí)行操作。
工具使用
代碼示例(供參考)
1.添加PDF附件
1.1 以普通文檔形式添加附件
using Spire.Pdf;
using Spire.Pdf.Attachments;
namespace AddAttachment_PDF
{
class Program
{
static void Main(string[] args)
{
//創(chuàng)建一個(gè)PdfDocument類對(duì)象,加載測(cè)試文檔
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("sample.pdf");
//初始化PdfAttachment類實(shí)例,加載需要附加的文檔
PdfAttachment attachment = new PdfAttachment("New.pdf");
//將文檔添加到原PDF文檔的附件集合中
pdf.Attachments.Add(attachment);
//保存并打開文檔
pdf.SaveToFile("Attachment1.pdf");
System.Diagnostics.Process.Start("Attachment1.pdf");
}
}
}
測(cè)試結(jié)果:

1.2 以文檔注釋形式添加附件
using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
using System.IO;
namespace AddAttachment2
{
class Program
{
static void Main(string[] args)
{
//創(chuàng)建一個(gè)PdfDocument類對(duì)象,加載測(cè)試文檔
PdfDocument doc = new PdfDocument("sample.pdf");
//給添加一個(gè)新頁面到文檔
PdfPageBase page = doc.Pages.Add();
//添加文本到頁面,并設(shè)置文本格式(字體、題號(hào)、字體粗細(xì)、顏色、文本位置等)
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f, System.Drawing.FontStyle.Bold));
page.Canvas.DrawString("Attachments:", font1, PdfBrushes.CornflowerBlue, new Point(50, 50));
//將文檔作為注釋添加到頁面
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 12f, System.Drawing.FontStyle.Bold));
PointF location = new PointF(52, 80);
//設(shè)置注釋標(biāo)簽,標(biāo)簽內(nèi)容為作為附件的文檔
String label = "sample.docx";
byte[] data = File.ReadAllBytes("sample.docx");
SizeF size = font2.MeasureString(label);
//設(shè)置注釋位置、大小、顏色、標(biāo)簽類型以及顯示文本等
RectangleF bounds = new RectangleF(location, size);
page.Canvas.DrawString(label, font2, PdfBrushes.MediumPurple, bounds);
bounds = new RectangleF(bounds.Right + 3, bounds.Top, font2.Height / 2, font2.Height);
PdfAttachmentAnnotation annotation1 = new PdfAttachmentAnnotation(bounds, "sample.docx", data);
annotation1.Color = Color.Purple;
annotation1.Flags = PdfAnnotationFlags.NoZoom;
annotation1.Icon = PdfAttachmentIcon.Graph;
annotation1.Text = "sample.docx";
(page as PdfNewPage).Annotations.Add(annotation1);
//保存并打開文檔
doc.SaveToFile("Attachment2.pdf");
System.Diagnostics.Process.Start("Attachment2.pdf");
}
}
}

2.獲取PDF附件
2.1 獲取文件附件
using Spire.Pdf;
using Spire.Pdf.Attachments;
using System;
using System.IO;
namespace GetAttachment_PDF
{
class Program
{
static void Main(string[] args)
{
//創(chuàng)建PDF文檔,加載測(cè)試文件
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Attachment1.pdf");
//獲取文檔中的第一個(gè)文件附件
PdfAttachment attachment = pdf.Attachments[0];
//獲取該附件的信息
Console.WriteLine("Name: {0}", attachment.FileName);
Console.WriteLine("MimeType: {0}", attachment.MimeType);
Console.WriteLine("Description: {0}", attachment.Description);
Console.WriteLine("Creation Date: {0}", attachment.CreationDate);
Console.WriteLine("Modification Date: {0}", attachment.ModificationDate);
//將附件的數(shù)據(jù)寫入到新文檔
File.WriteAllBytes(attachment.FileName, attachment.Data);
Console.ReadKey();
}
}
}
測(cè)試結(jié)果:

2.2 獲取注釋附件
using Spire.Pdf;
using Spire.Pdf.Annotations;
using System.Collections.Generic;
using System.IO;
namespace GetAttachment2
{
class Program
{
static void Main(string[] args)
{
//加載PDF文檔
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Attachment2.pdf");
//實(shí)例化一個(gè)list并將文檔內(nèi)所有頁面的Attachment annotations添加到該list
List<PdfAttachmentAnnotationWidget> attaches = new List<PdfAttachmentAnnotationWidget>();
foreach (PdfPageBase page in pdf.Pages)
{
foreach (PdfAnnotation annotation in page.AnnotationsWidget)
{
attaches.Add(annotation as PdfAttachmentAnnotationWidget);
}
}
//遍歷list,將附件數(shù)據(jù)寫入到新文檔
for (int i = 0; i < attaches.Count; i++)
{
File.WriteAllBytes(attaches[i].FileName, attaches[i].Data);
}
}
}
}
注釋附件讀取結(jié)果:

3.刪除PDF附件
3.1 刪除文件附件
using Spire.Pdf;
namespace DeleteAttachment_PDF
{
class Program
{
static void Main(string[] args)
{
//加載PDF文檔
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Attachment1.pdf");
//刪除文檔的所有文件附件
for (int i = 0; i < pdf.Attachments.Count; i++)
{
pdf.Attachments.RemoveAt(i);
}
//保存并打開文檔
pdf.SaveToFile("Remove.pdf");
System.Diagnostics.Process.Start("Remove.pdf");
}
}
}
3.2 刪除注釋附件
using Spire.Pdf;
namespace DeleteAttachment_PDF
{
class Program
{
static void Main(string[] args)
{
//加載PDF文檔
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Attachment1.pdf");
//刪除文檔的所有文件附件
for (int i = 0; i < pdf.Attachments.Count; i++)
{
pdf.Attachments.RemoveAt(i);
}
//保存并打開文檔
pdf.SaveToFile("Remove.pdf");
System.Diagnostics.Process.Start("Remove.pdf");
}
}
}
3.2 刪除注釋附件
using Spire.Pdf;
using Spire.Pdf.Annotations;
namespace DeleteAttachment2
{
class Program
{
static void Main(string[] args)
{
//加載PDF文檔
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Attachment2.pdf");
//刪除文檔的所有注釋附件
foreach (PdfPageBase page in pdf.Pages)
{
for (int i = 0; i < page.AnnotationsWidget.Count; i++)
{
PdfAnnotation annotation = page.AnnotationsWidget[i] as PdfAttachmentAnnotationWidget;
page.AnnotationsWidget.Remove(annotation);
}
}
//保存并打開文檔
pdf.SaveToFile("Result.pdf");
System.Diagnostics.Process.Start("Result.pdf");
}
}
}
調(diào)試程序后,生成的文檔就沒有附件了。
以上就是C#添加、獲取、刪除PDF附件實(shí)例代碼的詳細(xì)內(nèi)容,更多關(guān)于C#添加、獲取、刪除PDF附件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- C# 如何合并和拆分PDF文件
- c# 給pdf添加數(shù)字簽名的步驟
- C#生成PDF的方法
- C#利用iTextSharp組件給PDF文檔添加圖片/文字水印
- C# 對(duì)PDF文檔加密、解密(基于Spire.Cloud.SDK for .NET)
- C#/VB.NET 在PDF中添加文件包(Portfolio)的方法
- c#添加圖片、文本水印到PDF文件
- C#導(dǎo)出pdf的實(shí)現(xiàn)方法(瀏覽器不預(yù)覽直接下載)
- C#打印PDF文檔的10種方法(小結(jié))
- C#實(shí)現(xiàn)Word轉(zhuǎn)為PDF的方法
- C# 利用PdfSharp生成Pdf文件的示例
相關(guān)文章
c#之滾動(dòng)字幕動(dòng)畫窗體的實(shí)現(xiàn)詳解
本篇文章是對(duì)c#中滾動(dòng)字幕動(dòng)畫窗體的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Unity實(shí)現(xiàn)攻擊范圍檢測(cè)并繪制檢測(cè)區(qū)域
這篇文章主要介紹了Unity實(shí)現(xiàn)攻擊范圍檢測(cè)并繪制檢測(cè)區(qū)域,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
實(shí)例詳解C#實(shí)現(xiàn)http不同方法的請(qǐng)求
本篇文章給大家分享了C#實(shí)現(xiàn)http不同方法的請(qǐng)求的相關(guān)知識(shí)點(diǎn)以及實(shí)例代碼,有需要的朋友參考下。2018-07-07
C#操作LINQ to SQL組件進(jìn)行數(shù)據(jù)庫建模的基本教程
這篇文章主要介紹了C#操作LINQ to SQL組件進(jìn)行數(shù)據(jù)庫建模的基本教程,LINQ to SQL被集成在.NET框架之中,需要的朋友可以參考下2016-03-03

