目录
概览
在各种文件格式中管理文档元数据可能具有挑战性。GroupDocs.Metadata for .NET 通过提供标签系统,将常见元数据属性(例如标题、作者、创建日期)统一到标签下,从而简化了这一过程。在本教程中,我们将探讨如何使用 GroupDocs.Metadata for .NET 的标签来查找、添加、复制、更新和删除元数据。
GroupDocs.Metadata 使用标签为文件中的重要元数据属性打标,无论文档的格式或元数据标准如何。每个标签隶属于一个类别,用于将相关标签分组,以便更容易发现。
例如:
Content Tags: 描述文件的内容(例如语言、体裁、主题、评级)
Person Tags: 识别与内容相关的人员或组织(例如文档创建者、编辑者、公司)
Time Tags: 表示文件生命周期中的时间戳(例如创建日期、最近修改时间、打印日期)
(其他类别包括法律、来源、工具等,每个类别都对相关标签进行分组。)
使用这些标签,您可以跨 Word 文档、PDF、图像等,以统一的方式搜索和操作元数据。
例如,人物类别中的“作者”或创建者标签会匹配 Word 文档或 PDF 中的作者属性,无需了解特定格式的元数据字段名称。这使得标签在组织文件和自动化元数据管理任务方面极为有用。
使用案例
在本节中,我们将介绍几种突出实际应用的使用案例。
根据标签查找元数据属性
一种常见的使用场景是通过标签在文件中查找元数据条目。这对于提升可搜索性特别有帮助——您可以从任何文档中获取特定信息,而无需关注其格式。
步骤
- 将文件加载到
Metadata对象中。 - 使用基于标签的谓词调用
FindProperties()来查找属性。您可以按特定标签或整个类别进行过滤。 - 遍历结果以检查或使用元数据。
// Load the source document (e.g., a PowerPoint file)
using (Metadata metadata = new Metadata("source.pptx"))
{
// Find properties tagged as "last editor" or "last modified time"
var properties = metadata.FindProperties(p =>
p.Tags.Contains(Tags.Person.Editor) ||
p.Tags.Contains(Tags.Time.Modified));
// List the found properties and their values
foreach (var property in properties)
{
Console.WriteLine($"Property name: {property.Name}, Value: {property.Value}");
}
}
通过标签添加元数据属性
有时文件可能缺少某些元数据(例如未记录“最后打印日期”)。使用 GroupDocs.Metadata,您可以通过指定标签来添加元数据属性,如果格式支持,API 将把它放入相应的元数据包中。
步骤
- 将文件加载到
Metadata对象中。 - 调用
AddProperties(),使用谓词确定添加位置,并提供新属性值。 - 检查返回值,了解添加了多少属性。
- 保存文档(如果希望持久化更改)。
例如,下面的代码将在文档中未已有“最后打印”日期/时间时添加该属性:
using (Metadata metadata = new Metadata("source.pdf"))
{
if (metadata.FileFormat != FileFormat.Unknown && !metadata.GetDocumentInfo().IsEncrypted)
{
// Add a "Last Printed" date property if it's missing
int affected = metadata.AddProperties(
p => p.Tags.Contains(Tags.Time.Printed),
new PropertyValue(DateTime.Now));
Console.WriteLine("Properties added: " + affected);
metadata.Save("output.pdf");
}
}
这里我们使用 Tags.Time.Printed ——时间类别下表示“打印”日期的标签。谓词 p.Tags.Contains(Tags.Time.Printed) 目标是已知的打印元数据属性。如果属性缺失,AddProperties 将使用我们提供的值(此例中的 DateTime.Now)添加它。该方法返回添加的属性数量(affected),我们将其输出。最后,保存文件以持久化新元数据。
通过标签复制元数据属性
有时,您可能只想复制特定类型的元数据,例如作者姓名或创建日期。CopyTo 方法允许使用谓词过滤要复制的属性。以下示例展示了仅复制与作者或创建日期相关的元数据:
步骤
- 使用
Metadata类加载源文件和目标文件。 - 使用
CopyTo方法将元数据从源文件传输到目标文件。 - 保存目标文件以应用复制的元数据。
using (Metadata sourceMetadata = new Metadata("source.xlsx"))
using (Metadata targetMetadata = new Metadata("target.pptx"))
{
// Copy only Author (Creator) and Creation Date metadata properties
sourceMetadata.CopyTo(targetMetadata, p =>
p.Tags.Contains(Tags.Person.Creator) ||
p.Tags.Contains(Tags.Time.Created));
// Save the changes
targetMetadata.Save();
}
在此示例中,仅会将具有创建者(作者姓名)和创建日期标签的元数据从 Excel 文件(source.xlsx)复制到 PowerPoint 演示文稿(target.pptx)。这种选择性复制让您能够精确控制元数据,轻松确保文档仅包含您想要的元数据。
通过标签更新元数据属性
除了添加新元数据外,您通常还需要更新已有的元数据值(例如纠正作者姓名或统一日期格式)。GroupDocs.Metadata 提供了 SetProperties() 方法。它使用标签定位目标属性并更新其值。如果目标属性不存在,SetProperties 还能添加它——实现更新和添加一步完成。
步骤
- 将文件加载到
Metadata对象中。 - 调用
SetProperties(),使用基于标签的过滤器和新的PropertyValue。 - 检查返回的受影响属性计数(已更新或已添加)。
- 如有需要,保存对文件的更改。
例如,假设我们想将文档的创建日期和修改日期更新为当前日期/时间(可用于重置或统一时间戳):
using (Metadata metadata = new Metadata("source.pdf"))
{
// Update all "Created" or "Modified" date properties to now
int affected = metadata.SetProperties(
p => p.Tags.Contains(Tags.Time.Created) || p.Tags.Contains(Tags.Time.Modified),
new PropertyValue(DateTime.Now));
Console.WriteLine("Properties updated or added: " + affected);
metadata.Save("updated.pdf");
}
在谓词中,Tags.Time.Created 和 Tags.Time.Modified 分别是创建日期和最近修改日期的标签。代码会查找标记了任一标签的元数据属性并将其设置为 DateTime.Now。如果文件的元数据中不存在创建日期属性,库也会添加它(因为这是该格式已知的标准属性)。
通过标签删除元数据
出于隐私或合规需求,您可能需要从文档中删除某些元数据(例如作者姓名或个人信息)。标签使得在不同格式之间定位并删除此类元数据变得简单。RemoveProperties() 方法接受类似的谓词,并会剥离所有匹配的元数据条目。
步骤
- 将文件加载到
Metadata对象中。 - 调用
RemoveProperties(),使用基于标签的谓词识别要删除的属性。 - 查看该方法返回的已删除属性计数。
- 保存文件以应用更改。
using (Metadata metadata = new Metadata("source.docx"))
{
// Remove properties that are tagged as Creator or Editor, or any string containing "John"
int removedCount = metadata.RemoveProperties(p =>
p.Tags.Contains(Tags.Person.Creator) ||
p.Tags.Contains(Tags.Person.Editor) ||
(p.Value.Type == MetadataPropertyType.String && p.Value.ToString().Contains("John"))
);
Console.WriteLine("Properties removed: " + removedCount);
metadata.Save("cleaned.docx");
}
此谓词结合了多个条件:任何标记为 Creator 或 Editor 的属性(均属于人物类别)将被删除,此外,值中包含 “John” 的字符串元数据也会被删除。在实际场景中,您可以使用此类逻辑清除文档中的个人数据(如作者姓名或客户名称)。
结论
在本文中,我们演示了 GroupDocs.Metadata for .NET 的标签功能如何在多种文档类型之间以统一的方式添加、复制、查找、更新和删除元数据。通过利用 Content、Person、Time 等标签,您可以构建基于一致元数据的工作流,对文件进行组织、提升可搜索性(例如按作者或日期查找所有文件),并实现文档分类或清理的自动化。
另见
- GroupDocs.Metadata for .NET 文档
- GroupDocs.Metadata for .NET 产品概览
- GroupDocs.Metadata for .NET GitHub 示例
- GroupDocs.Metadata for .NET 发布说明
获取免费试用
您可以从 releases.groupdocs.com 下载 GroupDocs.Metadata for .NET 的免费试用版。您也可以从此处获取临时授权,在不受限制的情况下试用所有功能和特性。