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ể gặp nhiều khó khăn. GroupDocs.Metadata cho .NET đơn giản hoá quy trình này bằng cách cung cấp một hệ thống đánh thẻ để hợp nhất các thuộc tính siêu dữ liệu phổ biến (ví dụ: Title, Author, Created Date) dưới dạng 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 cách sử dụng thẻ với GroupDocs.Metadata cho .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, giúp nhóm các thẻ liên quan lại với nhau để dễ khám phá hơn. Ví dụ:
- Content Tags: Mô tả nội dung của tệp (ví dụ: language, genre, subject, rating)
- Person Tags: Xác định người hoặc tổ chức liên quan đến nội dung (ví dụ: document creator, editor, company)
- Time Tags: Đại diện cho các thời điểm trong vòng đời của tệp (ví dụ: creation date, last modified time, print date)
(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.)
Nhờ 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 biết tên trường siêu dữ liệu riêng của định dạng. Điều này khiến các thẻ trở nên cực kỳ hữu ích để tổ chức tệp và tự động hoá các nhiệm vụ quản lý siêu dữ liệu.
Use Cases
Trong phần này, chúng tôi 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 bằng 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 tới định dạng.
Steps
- Tải tệp vào một đối tượng
Metadata. - Tìm các thuộc tính bằng cách gọi
FindProperties()với một predicate dựa trên thẻ. Bạn có thể lọc bằng một thẻ cụ thể hoặc toàn bộ danh mục. - 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
- Tải tệp vào một đối tượng
Metadata. - Gọi
AddProperties()với một predicate để xác định nơi cần thêm, đồng thời cung cấp giá trị thuộc tính mới. - Kiểm tra giá trị trả về để biết bao nhiêu thuộc tính đã được thêm.
- 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 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. Predicate p.Tags.Contains(Tags.Time.Printed) nhắm tới thuộc tính siêu dữ liệu đã biết là Printed. 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 trong trường hợp này). Phương thức trả về số lượng thuộc tính đã được thêm (affected), sau đó chúng ta lưu tệp để giữ lại siêu dữ liệu mới.
Copy Metadata Properties by Tag
Đôi khi bạn muốn sao chép chỉ những loại siêu dữ liệu nhất định, chẳng hạn 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 predicate để 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
- Tải cả tệp nguồn và tệp đích bằng lớp
Metadata. - Sử dụng phương thức
CopyTođể chuyển siêu dữ liệu từ nguồn sang đích. - 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 Date 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 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. Nó 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 có thể tự động thêm vào – vì vậy nó kết hợp cả cập nhật và thêm mới trong một bước.
Steps
- Tải tệp vào một đối tượng
Metadata. - Gọi
SetProperties()với một bộ lọc dựa trên thẻ và mộtPropertyValuemới. - Kiểm tra số lượng thuộc tính bị ảnh hưởng (được cập nhật hoặc được thêm).
- Lưu 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 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 predicate, Tags.Time.Created và Tags.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ó một trong hai thẻ này và đặt giá trị thành DateTime.Now. Nếu, chẳng hạn, tài liệu không có thuộc tính Created, 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 việc nhắm mục tiêu và xóa các siêu dữ liệu này trở nên dễ dàng trên nhiều định dạng khác nhau. Phương thức RemoveProperties() nhận một predicate tương tự như các phương thức trên và sẽ loại bỏ bất kỳ mục siêu dữ liệu nào khớp.
Steps
- Tải tệp vào một đối tượng
Metadata. - Gọi
RemoveProperties()với một predicate dựa trên thẻ để xác định các thuộc tính cần xóa. - Xem lại số lượng thuộc tính đã bị xóa mà phương thức trả về.
- 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");
}
Predicate này kết hợp nhiều tiêu chí: bất kỳ thuộc tính nào có 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 dạng 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 tôi đã trình bày cách tính năng đánh thẻ của GroupDocs.Metadata cho .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 các 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ả hay ngày tháng), và tự động hoá việc phân loại hoặc dọn dẹp tài liệu.
See Also
- GroupDocs.Metadata for .NET Documentation
- GroupDocs.Metadata for .NET Product Overview
- GroupDocs.Metadata for .NET GitHub Examples
- GroupDocs.Metadata for .NET Release Notes
Get a free trial
Bạn có thể tải phiên bản dùng thử miễn phí của GroupDocs.Metadata cho .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 có bất kỳ hạn chế nào từ here.