Зміст

Огляд

Управління метаданими документів у різних форматах може бути складним. GroupDocs.Metadata для .NET спрощує це, пропонуючи систему тегів для об’єднання загальних властивостей метаданих (наприклад, назва, автор, дата створення) під тегами. У цьому посібнику ми розглянемо, як знаходити, додавати, копіювати, оновлювати та видаляти метадані за допомогою тегів у GroupDocs.Metadata для .NET.

GroupDocs.Metadata використовує теги для позначення важливих властивостей метаданих у файлі, незалежно від формату документа чи стандарту метаданих. Кожен тег належить до категорії, яка групує пов’язані теги для полегшення їх виявлення. Для прикладу: Content Tags: Описують вміст файлу (наприклад, мова, жанр, тема, рейтинг)
Person Tags: Ідентифікують людей або організації, пов’язані з вмістом (наприклад, створювач документа, редактор, компанія)
Time Tags: Представляють часові мітки в життєвому циклі файлу (наприклад, дата створення, час останньої зміни, дата друку)
(Інші категорії включають Legal, Origin, Tool тощо, кожна групує відповідні теги.)

Використовуючи ці теги, ви можете шукати та маніпулювати метаданими єдиним способом у Word‑документах, PDF, зображеннях тощо. Наприклад, тег «Автор» або «Створювач» у категорії Person відповідатиме властивості автора у Word‑документі або PDF, без необхідності знати специфічну назву поля метаданих для конкретного формату. Це робить теги надзвичайно корисними для організації файлів та автоматизації завдань управління метаданими.

Випадки використання

У цьому розділі ми представимо різні випадки використання, які підкреслюють практичні застосування.

Пошук властивостей метаданих за тегом

Одним із поширених випадків є пошук записів метаданих у файлі за їхнім тегом. Це особливо корисно для підвищення можливості пошуку — ви можете отримати конкретну інформацію з будь‑якого документа, не турбуючись про його формат.

Кроки

  1. Завантажте файл у об’єкт Metadata.
  2. Знайдіть властивості за допомогою FindProperties() з предикатом, заснованим на тегах. Ви можете фільтрувати за конкретним тегом або цілою категорією.
  3. Пройдіться по результатах, щоб проаналізувати або використати метадані.
// 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 розмістить її у відповідному пакеті метаданих, якщо формат це підтримує.

Кроки

  1. Завантажте файл у об’єкт Metadata.
  2. Викличте AddProperties() з предикатом, що визначає, куди додавати, і вкажіть нове значення властивості.
  3. Перевірте повернене значення, щоб дізнатись, скільки властивостей було додано.
  4. Збережіть документ (якщо ви хочете зберегти зміни).
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 — тег для дати «Друковано» у категорії Time. Предикат p.Tags.Contains(Tags.Time.Printed) цілиться у відому властивість метаданих «Друковано». Якщо властивість відсутня, AddProperties додасть її зі значенням, яке ми вказали (DateTime.Now у цьому випадку). Метод повертає кількість доданих властивостей (affected), яку ми виводимо. Нарешті, зберігаємо файл, щоб зафіксувати нові метадані.

Копіювання властивостей метаданих за тегом

Іноді ви можете захотіти скопіювати лише певні типи метаданих, наприклад імена авторів або дати створення. Метод CopyTo дозволяє використовувати предикат для фільтрації властивостей, які потрібно копіювати. Ось як скопіювати лише метадані, пов’язані з авторами чи датами створення:

Кроки

  1. Завантажте як вихідний, так і цільовий файли за допомогою класу Metadata.
  2. Використайте метод CopyTo для перенесення метаданих з вихідного файлу до цільового.
  3. Збережіть цільовий файл, щоб застосувати скопійовані метадані.
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 Date будуть скопійовані з файлу Excel (source.xlsx) у презентацію PowerPoint (target.pptx). Такий вибірковий копіювання дає вам точний контроль над метаданими, полегшуючи забезпечення того, що ваші документи містять лише потрібні метадані.

Оновлення властивостей метаданих за тегом

Окрім додавання нових метаданих, часто потрібно оновлювати існуючі значення (наприклад, виправляти ім’я автора або уніфікувати дати). GroupDocs.Metadata пропонує метод SetProperties() для цього. Він використовує теги для пошуку цільових властивостей та оновлює їхні значення. Якщо цільова властивість відсутня, SetProperties може її додати — ефективно поєднуючи оновлення та додавання в один крок.

Кроки

  1. Завантажте файл у об’єкт Metadata.
  2. Викличте SetProperties() з фільтром на основі тегів та новим PropertyValue.
  3. Перевірте повернену кількість змінених властивостей (оновлених або доданих).
  4. За потреби збережіть зміни у файл.
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() приймає предикат, подібний до інших, та видалить усі відповідні записи метаданих.

Кроки

  1. Завантажте файл у об’єкт Metadata.
  2. Викличте RemoveProperties() з предикатом, заснованим на тегах, що ідентифікує властивості для видалення.
  3. Перегляньте кількість видалених властивостей, яку повертає метод.
  4. Збережіть файл, щоб застосувати зміни.
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 для .NET дозволяє додавати, копіювати, знаходити, оновлювати та видаляти метадані єдиним способом у багатьох типах документів. Використовуючи теги, такі як Content, Person, Time тощо, ви можете створювати робочі процеси, які організують файли за послідовними метаданими, підвищують можливість пошуку (наприклад, знайти всі файли за автором чи датою) та автоматизують категоризацію чи очищення документів.

Дивіться також

Отримати безкоштовну пробну версію

Ви можете завантажити безкоштовну пробну версію GroupDocs.Metadata для .NET з releases.groupdocs.com. Ви також можете отримати тимчасову ліцензію для повного тестування всіх функцій без обмежень за посиланням тут.