目次
概要
さまざまなファイル形式にわたってドキュメントメタデータを管理することは難しいことがあります。GroupDocs.Metadata for .NET は、共通のメタデータプロパティ(例: タイトル、作成者、作成日)をタグとして統一するタグ付けシステムを提供し、これを簡素化します。本ハウツーガイドでは、GroupDocs.Metadata for .NET を使用して、タグを使ったメタデータの検索、追加、コピー、更新、削除方法を解説します。
GroupDocs.Metadata は、ファイル形式やメタデータ標準に関係なく、重要なメタデータプロパティにタグを付与します。各タグは、関連するタグをまとめたカテゴリに属し、検索しやすくなります。例えば:
- Content Tags: ファイルの内容を記述します (例: 言語、ジャンル、テーマ、評価)
- Person Tags: コンテンツに関連する人物や組織を特定します (例: ドキュメント作成者、編集者、会社)
- Time Tags: ファイルのライフサイクルにおけるタイムスタンプを表します (例: 作成日、最終更新日時、印刷日)
(その他のカテゴリには Legal、Origin、Tool などがあり、各カテゴリが関連タグをまとめています)
これらのタグを使用すると、Word 文書、PDF、画像など、さまざまな形式のメタデータを統一された方法で検索・操作できます。たとえば、Person カテゴリの「Author」や「Creator」タグは、Word 文書や PDF の author プロパティに対応し、形式固有のメタデータフィールド名を知らなくても一致させることができます。このため、タグはファイルの整理やメタデータ管理タスクの自動化に非常に有用です。
使用例
このセクションでは、実際の活用シナリオを紹介します。
タグでメタデータ プロパティを検索
最も一般的な使用例のひとつは、タグによってファイル内のメタデータエントリを検索することです。これにより検索性が向上し、形式を意識せずに任意のドキュメントから特定情報を取得できます。
手順
- ファイルを
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(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();
}
この例では、Creator(作成者)と Created(作成日)タグが付いたメタデータのみが Excel ファイル(source.xlsx)から PowerPoint プレゼンテーション(target.pptx)へコピーされます。選択的なコピーにより、必要なメタデータだけを正確に移行できます。
タグでメタデータ プロパティを更新
新しいメタデータを追加するだけでなく、既存のメタデータ値を更新する必要も頻繁にあります(例: 作成者名の訂正や日付形式の統一)。GroupDocs.Metadata の SetProperties() メソッドはタグを使って対象プロパティを検索し、値を更新します。対象プロパティが存在しない場合は追加も行われ、更新と追加が一括で処理されます。
手順
- ファイルを
Metadataオブジェクトにロードします。 - タグベースのフィルタと新しい
PropertyValueを渡してSetProperties()を呼び出します。 - 変更(更新または追加)されたプロパティ数を確認します。
- 必要に応じてファイルを保存します。
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 製品概要
- GroupDocs.Metadata for .NET GitHub サンプル
- GroupDocs.Metadata for .NET リリースノート
無料トライアルを取得
releases.groupdocs.com から GroupDocs.Metadata for .NET の無料トライアル版をダウンロードできます。また、こちら から一時ライセンスを取得すれば、機能制限なくすべての機能をお試しいただけます。