Содержание
Обзор
Управление метаданными документов в разных файловых форматах может быть сложным. GroupDocs.Metadata for .NET упрощает эту задачу, предоставляя систему тегов, которая объединяет общие свойства метаданных (например, Title, Author, Created Date) под едиными тегами. В этом руководстве мы рассмотрим, как находить, добавлять, копировать, обновлять и удалять метаданные с помощью тегов в GroupDocs.Metadata for .NET.
GroupDocs.Metadata использует теги для маркировки важных свойств метаданных в файле, независимо от формата документа или стандарта метаданных. Каждый тег относится к категории, группирующей связанные теги для более простого поиска.
Например:
Теги содержания: Описывают содержимое файла (например, язык, жанр, тема, рейтинг)
Теги людей: Идентифицируют людей или организации, связанные с содержимым (например, создатель документа, редактор, компания)
Теги времени: Представляют временные метки в жизненном цикле файла (например, дата создания, время последнего изменения, дата печати)
(Другие категории включают Legal, Origin, Tool и т.д., каждая группирует соответствующие теги.)
Используя эти теги, вы можете искать и манипулировать метаданными единым способом в Word‑документах, PDF, изображениях и других типах файлов.
Например, тег «Author» или «Creator» в категории Person будет соответствовать свойству автора в 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}");
}
}
Добавление свойств метаданных по тегу
Иногда в файле отсутствуют определённые метаданные (например, нет записи «Last Printed Date»). С помощью 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 — тег для даты «Printed» в категории Time. Предикат 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();
}
В этом примере копируются только свойства с тегами Creator (имя автора) и Created (дата создания) из 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 (оба относятся к категории Person), будут удалены, а также любые строковые метаданные, значения которых содержат «John». В реальных сценариях такой логикой можно очищать документы от персональных данных (имена авторов, названия клиентов и т.п.).
Заключение
В этой статье мы продемонстрировали, как функция тегов в GroupDocs.Metadata for .NET позволяет добавлять, копировать, находить, обновлять и удалять метаданные единым способом для множества типов документов. Используя теги, такие как Content, Person, Time и др., можно создавать рабочие процессы, которые упорядочивают файлы по согласованным метаданным, повышают их поисковую доступность (например, найти все файлы по автору или дате) и автоматизируют категоризацию или очистку документов.
См. также
- Документация GroupDocs.Metadata for .NET
- Обзор продукта GroupDocs.Metadata for .NET
- Примеры на GitHub для GroupDocs.Metadata for .NET
- Примечания к выпускам GroupDocs.Metadata for .NET
Получить бесплатный пробный период
Вы можете скачать бесплатную пробную версию GroupDocs.Metadata for .NET с сайта releases.groupdocs.com. Также можно получить временную лицензию, чтобы опробовать все функции без ограничений, перейдя по ссылке.