除了文字和图形外,PDF 文档还允许将完整的文件作为附件添加到文档中。将系列文件作为附件添加到 PDF 文档中能够方便我们对其进行分享、传输,也能保证内容的完整性。Spire.PDF for .NET 允许使用者以以下两种方式添加附件到 PDF 文档中:
- 文档附件:直接添加到文档中的附件,不会在页面上显示,只能在附件面板查看。
- 注释附件:添加到注释中的附件。注释附件可添加到文档任意位置,以图标显示在页面上,双击图标即可打开附件。
本文将介绍如何使用 Spire.PDF for .NET 通过 C# 和 VB.NET 在 PDF 文档中添加或删除这两种类型的附件。
安装 Spire.PDF for .NET
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF
添加文档附件到 PDF 文档
使用 PdfDocument.Attachments.Add() 方法即可轻松将文档附件添加到附件面板。以下是详细操作步骤:
- 创建 PdfDocument 的对象。
- 使用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 基于外部文件创建 PdfAttachment 的对象。
- 使用 PdfDocument.Attachments.Add() 方法添加该附件到 PDF 文档。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Attachments;
namespace AttachFilesToPDF
{
class Program
{
static void Main(string[] args)
{
//创建PdfDocument的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.LoadFromFile("计划书.pdf");
//基于外部文件创建PdfAttachment的对象
PdfAttachment attachment = new PdfAttachment("研究员安排表.xlsx");
//添加该附件到PDF文档
pdf.Attachments.Add(attachment);
//保存文档
pdf.SaveToFile("文档附件.pdf");
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.Attachments
Namespace AttachFilesToPDF
Class Program
Shared Sub Main(ByVal args() As String)
'创建PdfDocument的对象
Dim pdf As PdfDocument = New PdfDocument()
'载入PDF文档
pdf.LoadFromFile("计划书.pdf")
'基于外部文件创建PdfAttachment的对象
Dim attachment As PdfAttachment = New PdfAttachment("研究员安排表.xlsx")
'添加该附件到PDF文档
pdf.Attachments.Add(attachment)
'保存文档
pdf.SaveToFile("文档附件.pdf")
End Sub
End Class
End Namespace
添加注释附件到 PDF 文档
注释附件会同时显示在页面上及附件面板中。以下是添加注释附件到 PDF 文档的详细操作步骤:
- 创建 PdfDocument 的对象。
- 使用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 通过 PdfDocument.Pages[] 属性获取要添加注释的页面。
- 基于外部文件创建 PdfAttachmentAnnotation 的对象。
- 使用 PdfPageBase.AnnotationsWidget.Add() 方法将注释附件添加到该页。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
using System.IO;
namespace AnnotationAttachment
{
class Program
{
static void Main(string[] args)
{
//创建PdfDocument的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文件
pdf.LoadFromFile("计划书.pdf");
//获取指定页面
PdfPageBase page = pdf.Pages[1];
//在页面上绘制标签
String label = "研究员安排表:";
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("黑体", 13f, FontStyle.Bold), true);
float x = page.ActualSize.Width/2 - 50;
float y = page.ActualSize.Height - 150;
page.Canvas.DrawString(label, font, PdfBrushes.Red, x, y);
//基于外部文件创建PdfAttachmentAnnotation的对象
String filePath = "研究员安排表.xlsx";
byte[] data = File.ReadAllBytes(filePath);
SizeF size = font.MeasureString(label);
RectangleF bounds = new RectangleF((float)(x + size.Width + 5), (float)y, 10, 15);
PdfAttachmentAnnotation annotation = new PdfAttachmentAnnotation(bounds, "研究员安排表.xlsx", data);
annotation.Color = Color.Purple;
annotation.Flags = PdfAnnotationFlags.Default;
annotation.Icon = PdfAttachmentIcon.Graph;
annotation.Text = "双击以打开附件。";
//将注释附件添加到该页
page.AnnotationsWidget.Add(annotation);
//保存文档
pdf.SaveToFile("注释附件.pdf");
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.Annotations
Imports Spire.Pdf.Graphics
Imports System
Imports System.Drawing
Imports System.IO
Namespace AnnotationAttachment
Class Program
Shared Sub Main(ByVal args() As String)
'创建PdfDocument的对象
Dim pdf As PdfDocument = New PdfDocument()
'载入PDF文件
pdf.LoadFromFile("计划书.pdf")
'获取指定页面
Dim page As PdfPageBase = pdf.Pages(1)
'在页面上绘制标签
Dim label As String = "研究员安排表:"
Dim font As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("黑体", 13.0F, FontStyle.Bold), True)
Dim x As Single = page.ActualSize.Width / 2 - 50
Dim y As Single = page.ActualSize.Height - 150
page.Canvas.DrawString(label, font, PdfBrushes.Red, x, y)
'基于外部文件创建PdfAttachmentAnnotation的对象
Dim filePath As String = "研究员安排表.xlsx"
Dim data() As Byte = File.ReadAllBytes(filePath)
Dim size As SizeF = font.MeasureString(label)
Dim bounds As RectangleF = New RectangleF(CType((x + size.Width + 5), (Single)y, 10, 15, Single))
Dim annotation As PdfAttachmentAnnotation = New PdfAttachmentAnnotation(bounds, "研究员安排表.xlsx", data)
annotation.Color = Color.Purple
annotation.Flags = PdfAnnotationFlags.Default
annotation.Icon = PdfAttachmentIcon.Graph
annotation.Text = "双击以打开附件。"
'将注释附件添加到该页
page.AnnotationsWidget.Add(annotation)
'保存文档
pdf.SaveToFile("注释附件.pdf")
End Sub
End Class
End Namespace
删除 PDF 文档中的文档附件
PDF 文档中的附件可以通过 PdfDocument.Attachments 获取,然后使用 RemoveAt() 或 Clear() 方法即可删除指定的或所有的附件。详细操作步骤如下:
- 创建 PdfDocument 的对象。
- 使用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 通过 PdfDocument.Attachments 属性从文档获取附件的集。
- 使用 PdfAttachmentCollection.RemoveAt() 方法删除指定附件,或使用 PdfAttachmentCollection.Clear() 方法删除所有附件。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Attachments;
namespace RemoveAttachments
{
class Program
{
static void Main(string[] args)
{
//创建PdfDocument的对象
PdfDocument doc = new PdfDocument();
//载入PDF文件
doc.LoadFromFile("文档附件.pdf");
//获取附件集
PdfAttachmentCollection attachments = doc.Attachments;
//删除指定附件
attachments.RemoveAt(0);
//删除所有附件
//attachments.Clear();
//保存文档
doc.SaveToFile("删除文档附件.pdf");
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.Attachments
Namespace RemoveAttachments
Class Program
Shared Sub Main(ByVal args() As String)
'创建PdfDocument的对象
Dim doc As PdfDocument = New PdfDocument()
'载入PDF文件
doc.LoadFromFile("文档附件.pdf")
'获取附件集
Dim attachments As PdfAttachmentCollection = doc.Attachments
'删除指定附件
attachments.RemoveAt(0)
'删除所有附件
'attachments.Clear();
'保存文档
doc.SaveToFile("删除文档附件.pdf")
End Sub
End Class
End Namespace
删除 PDF 文档中的注释附件
PDF 文档中的注释是基于页面的文档元素。要获取文档中的所有注释,我们需要循环遍历文档页面并获取每一页的注释。获取一页的所有注释后,判断注释是否为附件注释。最后再使用 Remove() 方法从注释集中移除附件注释,就完成了对注释附件的删除。以下是详细操作步骤:
- 创建 PdfDocument 的对象。
- 使用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 循环遍历文档中的页面,并通过 PdfDocument.Pages[].AnnotationsWidget 属性获取页面的注释集。
- 判断注释是否为 PdfAttachmentAnnotationWidget 的对象。如果是,则使用 PdfAnnotationCollection.Remove() 方法删除该注释。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Annotations;
namespace RemoveAnnotationAttachments
{
class Program
{
static void Main(string[] args)
{
//创建PdfDocument的对象
PdfDocument doc = new PdfDocument();
//载入PDF文档
doc.LoadFromFile("注释附件.pdf");
//循环遍历文档中的页面
for (int i = 0; i < doc.Pages.Count; i++)
{
//获取注释集
PdfAnnotationCollection annotationCollection = doc.Pages[i].AnnotationsWidget;
//循环遍历注释
for (int j = 0; j < annotationCollection.Count; j++)
{
//判断注释是否为PdfAttachmentAnnotationWidget的对象
if (annotationCollection[j] is PdfAttachmentAnnotationWidget)
{
//删除注释附件
annotationCollection.Remove((PdfAnnotation)annotationCollection[j]);
}
}
}
//保存文档
doc.SaveToFile("删除注释附件.pdf");
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.Annotations
Namespace RemoveAnnotationAttachments
Class Program
Shared Sub Main(ByVal args() As String)
'创建PdfDocument的对象
Dim doc As PdfDocument = New PdfDocument()
'载入PDF文档
doc.LoadFromFile("注释附件.pdf")
'循环遍历文档中的页面
Dim i As Integer
For i = 0 To doc.Pages.Count - 1 Step i + 1
'获取注释集
Dim annotationCollection As PdfAnnotationCollection = doc.Pages(i).AnnotationsWidget
'循环遍历注释
Dim j As Integer
For j = 0 To annotationCollection.Count - 1 Step j + 1
'判断注释是否为PdfAttachmentAnnotationWidget的对象
If TypeOf annotationCollection(j) Is PdfAttachmentAnnotationWidget Then
'删除注释附件
annotationCollection.Remove(CType(annotationCollection(j), PdfAnnotation))
End If
Next
Next
'保存文档
doc.SaveToFile("删除注释附件.pdf")
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。