PDF 附件可以帮助用户查看与文档中特定内容相关的更多信息。PDF 中的附件主要分为两种:文档级附件和注释附件,二者的区别如下。
本文将介绍如何使用 C# 和 VB.NET 从 PDF 文档中提取这两种类型的附件。
首先,需要将相关库文件添加为 .NET 项目的引用。你可以下载对应的安装包,并将其中的 DLL 文件添加到项目中;也可以通过 NuGet 包管理器安装所需的库。
PM> Install-Package Spire.PDF可以通过 PdfDocument.Attachments 属性获取 PDF 文档中的文档级附件。以下步骤演示如何提取 PDF 中的所有文档级附件,并将其保存到本地文件夹。
完整示例代码如下:
using Spire.Pdf;
using Spire.Pdf.Attachments;
using System.Net.Mail;
namespace ExtractAttachments
{
class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载包含附件的 PDF 文件
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Attachments.pdf");
// 获取 PDF 文档的附件集合
PdfAttachmentCollection attachments = doc.Attachments;
// 指定输出文件夹路径
string outputFolder = "C:\\Users\\Administrator\\Desktop\\output\\";
// 遍历附件集合
for (int i = 0; i < attachments.Count; i++)
{
// 将附件写入文件
File.WriteAllBytes(outputFolder + attachments[i].FileName, attachments[i].Data);
}
}
}
}注释附件是与 PDF 页面相关联的元素。若要获取指定页面中的注释,可以使用 PdfPageBase.AnnotationsV2 属性。随后,需要判断某个注释是否为文件附件注释。
以下步骤介绍如何从 PDF 文档中提取注释附件,并将其保存到本地文件夹。
完整示例代码如下:
using Spire.Pdf;
using Spire.Pdf.Interactive.Annotations;
namespace ExtractAnnotationAttachments
{
class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载包含附件的 PDF 文件
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\AnnotationAttachments.pdf");
// 指定输出文件夹路径
string outputFolder = "C:\\Users\\Administrator\\Desktop\\Output\\";
// 遍历所有页面
for (int i = 0; i < doc.Pages.Count; i++)
{
// 获取页面的注释集合
PdfAnnotationCollection collection = doc.Pages[i].AnnotationsV2;
// 遍历所有注释
for (int j = 0; j < collection.Count; j++)
{
// 判断注释是否为 PdfFileAttachmentAnnotation 类型
if (collection[j] is PdfFileAttachmentAnnotation)
{
// 将注释附件写入文件
PdfFileAttachmentAnnotation attachmentAnnotation =
(PdfFileAttachmentAnnotation)collection[j];
PdfFileSpecification fileSpecification = attachmentAnnotation.FileSpecification;
// 获取附件文件名
String fileName = Path.GetFileName(fileSpecification.FileName);
// 获取附件数据
byte[] data = fileSpecification.EmbeddedFile.Data;
// 将附件保存到指定文件夹
File.WriteAllBytes(outputFolder + fileName, data);
}
}
}
}
}
}本文介绍了如何使用 C# 从 PDF 文档中提取附件,主要包括文档级附件和注释附件两种类型。
对于文档级附件,可以通过 PdfDocument.Attachments 属性获取附件集合,并遍历集合,将附件数据保存到本地文件夹。对于注释附件,则需要遍历 PDF 文档的各个页面,获取页面中的注释集合,并判断注释是否属于 PdfFileAttachmentAnnotation 类型。确认后,即可提取附件的文件名和数据,并将其保存为本地文件。
通过以上方法,可以根据附件在 PDF 文档中的存储方式,选择合适的提取方法,便于后续查看、管理和处理 PDF 中的嵌入文件。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。