Table of contents

Overview

Quản lý siêu dữ liệu tài liệu trên nhiều định dạng tệp khác nhau có thể là một thách thức. GroupDocs.Metadata for .NET đơn giản hoá việc này bằng cách cung cấp một hệ thống gắn thẻ để hợp nhất các thuộc tính siêu dữ liệu chung (ví dụ: Title, Author, Created Date) dưới các thẻ. Trong hướng dẫn này, chúng ta sẽ khám phá cách tìm, thêm, sao chép, cập nhật và xóa siêu dữ liệu bằng thẻ với GroupDocs.Metadata for .NET.

GroupDocs.Metadata sử dụng các thẻ để gắn nhãn cho các thuộc tính siêu dữ liệu quan trọng trong một tệp, bất kể định dạng tài liệu hay tiêu chuẩn siêu dữ liệu. Mỗi thẻ thuộc một danh mục, nhóm các thẻ liên quan lại với nhau để dễ dàng khám phá.

Ví dụ:

  • Content Tags: Mô tả nội dung của tệp (ví dụ: ngôn ngữ, thể loại, chủ đề, xếp hạng)
  • Person Tags: Xác định người hoặc tổ chức liên quan tới nội dung (ví dụ: người tạo tài liệu, người biên tập, công ty)
  • Time Tags: Đại diện cho các thời gian trong vòng đời của tệp (ví dụ: ngày tạo, thời gian sửa đổi lần cuối, ngày in)
  • (Các danh mục khác bao gồm Legal, Origin, Tool, v.v., mỗi danh mục nhóm các thẻ liên quan.)

Sử dụng các thẻ này, bạn có thể tìm kiếm và thao tác siêu dữ liệu một cách thống nhất trên các tài liệu Word, PDF, hình ảnh và nhiều định dạng khác. Ví dụ, một thẻ “Author” hoặc “Creator” trong danh mục Person sẽ khớp với thuộc tính tác giả trong tài liệu Word hoặc PDF mà không cần bạn phải biết tên trường siêu dữ liệu riêng của từng định dạng. Điều này làm cho các thẻ trở nên cực kỳ hữu ích trong việc tổ chức tệp và tự động hoá các tác vụ quản lý siêu dữ liệu.

Use Cases

Trong phần này, chúng ta sẽ giới thiệu các trường hợp sử dụng khác nhau để minh họa các ứng dụng thực tiễn.

Find Metadata Properties by Tag

Một trường hợp sử dụng phổ biến là tìm các mục siêu dữ liệu trong tệp dựa trên thẻ của chúng. Điều này đặc biệt hữu ích để cải thiện khả năng tìm kiếm – bạn có thể lấy thông tin cụ thể từ bất kỳ tài liệu nào mà không cần quan tâm đến định dạng của nó.

Steps

  1. Tải tệp vào một đối tượng Metadata.
  2. Tìm các thuộc tính bằng cách gọi FindProperties() với một biểu thức lambda dựa trên thẻ. Bạn có thể lọc theo một thẻ cụ thể hoặc toàn bộ danh mục.
  3. Duyệt qua kết quả để kiểm tra hoặc sử dụng siêu dữ liệu.
// 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}");
    }
}

Adding Metadata Properties by Tag

Đôi khi một tệp có thể thiếu một số siêu dữ liệu (ví dụ: không có “Last Printed Date”). Sử dụng GroupDocs.Metadata, bạn có thể thêm một thuộc tính siêu dữ liệu bằng cách chỉ định thẻ, và API sẽ đặt nó vào gói siêu dữ liệu thích hợp nếu định dạng hỗ trợ.

Steps

  1. Tải tệp vào một đối tượng Metadata.
  2. Gọi AddProperties() với một biểu thức lambda để xác định nơi cần thêm, và cung cấp giá trị thuộc tính mới.
  3. Kiểm tra giá trị trả về để biết bao nhiêu thuộc tính đã được thêm.
  4. Lưu tài liệu (nếu muốn lưu các thay đổi).

Ví dụ, đoạn mã dưới đây thêm ngày/giờ “Last Printed” vào tài liệu nếu nó chưa có:

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");
    }
}

Ở đây chúng ta sử dụng Tags.Time.Printed – thẻ cho ngày “Printed” trong danh mục Time. Biểu thức p.Tags.Contains(Tags.Time.Printed) nhắm tới thuộc tính siêu dữ liệu đã biết. Nếu thuộc tính này chưa tồn tại, AddProperties sẽ thêm nó với giá trị chúng ta cung cấp (DateTime.Now). Phương thức trả về số lượng thuộc tính đã được thêm (affected), và cuối cùng chúng ta lưu tệp để lưu lại siêu dữ liệu mới.

Copy Metadata Properties by Tag

Đôi khi bạn muốn sao chép chỉ một số loại siêu dữ liệu nhất định, chẳng hạn như tên tác giả hoặc ngày tạo. Phương thức CopyTo cho phép bạn sử dụng một biểu thức lambda để lọc các thuộc tính cần sao chép. Dưới đây là cách sao chép chỉ các siêu dữ liệu liên quan tới tác giả hoặc ngày tạo:

Steps

  1. Tải cả tệp nguồn và tệp đích bằng lớp Metadata.
  2. Sử dụng phương thức CopyTo để chuyển siêu dữ liệu từ nguồn sang đích.
  3. Lưu tệp đích để áp dụng các siêu dữ liệu đã sao chép.
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();
}

Trong ví dụ này, chỉ những siêu dữ liệu có thẻ Creator (tên tác giả) và Created sẽ được sao chép từ tệp Excel (source.xlsx) sang bản trình chiếu PowerPoint (target.pptx). Việc sao chép có chọn lọc này cho phép bạn kiểm soát chính xác các siêu dữ liệu, giúp đảm bảo tài liệu chỉ chứa những thông tin bạn muốn.

Updating Metadata Properties by Tag

Ngoài việc thêm siêu dữ liệu mới, bạn thường cần cập nhật các giá trị siêu dữ liệu hiện có (ví dụ: sửa tên tác giả hoặc chuẩn hoá ngày tháng). GroupDocs.Metadata cung cấp phương thức SetProperties() cho mục đích này. Phương thức này sử dụng thẻ để tìm các thuộc tính mục tiêu và cập nhật giá trị của chúng. Nếu thuộc tính mục tiêu không tồn tại, SetProperties sẽ tự động thêm nó – do đó kết hợp cả cập nhật và thêm trong một bước.

Steps

  1. Tải tệp vào một đối tượng Metadata.
  2. Gọi SetProperties() với bộ lọc dựa trên thẻ và giá trị PropertyValue mới.
  3. Kiểm tra số lượng thuộc tính bị ảnh hưởng (được cập nhật hoặc thêm).
  4. Lưu các thay đổi vào tệp nếu cần.

Ví dụ, giả sử chúng ta muốn cập nhật ngày tạo và ngày sửa đổi của một tài liệu thành thời gian hiện tại:

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");
}

Trong biểu thức lambda, Tags.Time.CreatedTags.Time.Modified là các thẻ cho ngày tạo và ngày sửa đổi lần cuối. Đoạn mã sẽ tìm mọi thuộc tính siêu dữ liệu được gắn thẻ này và đặt giá trị mới là DateTime.Now. Nếu, chẳng hạn, tài liệu không có thuộc tính ngày tạo, thư viện sẽ tự động thêm nó (vì đây là một thuộc tính chuẩn cho định dạng đó).

Removing Metadata by Tag

Đối với mục đích bảo mật hoặc tuân thủ quy định, bạn có thể cần xóa một số siêu dữ liệu (ví dụ: tên tác giả hoặc thông tin cá nhân) khỏi tài liệu. Các thẻ giúp bạn dễ dàng xác định và loại bỏ những siêu dữ liệu này trên các định dạng khác nhau. Phương thức RemoveProperties() chấp nhận một biểu thức lambda giống các phương thức trên và sẽ xóa mọi mục siêu dữ liệu khớp.

Steps

  1. Tải tệp vào một đối tượng Metadata.
  2. Gọi RemoveProperties() với một biểu thức lambda dựa trên thẻ để xác định các thuộc tính cần xóa.
  3. Xem số lượng thuộc tính đã bị xóa được trả về bởi phương thức.
  4. Lưu tệp để áp dụng các thay đổi.
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");
}

Biểu thức này kết hợp nhiều tiêu chí: bất kỳ thuộc tính nào được gắn thẻ Creator hoặc Editor (cả hai thuộc danh mục Person) sẽ bị xóa, và thêm vào đó bất kỳ siêu dữ liệu kiểu chuỗi nào chứa “John” trong giá trị cũng sẽ bị loại bỏ. Trong thực tế, bạn có thể dùng logic này để làm sạch tài liệu khỏi dữ liệu cá nhân (như tên tác giả hoặc tên khách hàng).

Conclusion

Trong bài viết này, chúng ta đã chứng minh cách tính năng gắn thẻ của GroupDocs.Metadata for .NET cho phép bạn thêm, sao chép, tìm, cập nhật và xóa siêu dữ liệu một cách thống nhất trên nhiều loại tài liệu. Bằng cách tận dụng các thẻ như Content, Person, Time, v.v., bạn có thể xây dựng quy trình làm việc để tổ chức tệp bằng siêu dữ liệu nhất quán, cải thiện khả năng tìm kiếm (ví dụ: tìm tất cả các tệp theo tác giả hoặc ngày), và tự động hoá việc phân loại hoặc làm sạch tài liệu.

See Also

Get a free trial

Bạn có thể tải phiên bản dùng thử miễn phí của GroupDocs.Metadata for .NET từ releases.groupdocs.com. Bạn cũng có thể nhận giấy phép tạm thời để thử tất cả các tính năng và chức năng mà không bị giới hạn từ here.