.NET比較結果からメタデータを抽出する方法 – 完全ガイド

.NETアプリケーションで文書比較を行う際、比較結果からメタデータを抽出する方法が気になることがあります。ファイルタイプ、ページ数、文書サイズなどのメタデータは、監査ログ、パフォーマンスチューニング、またはエンドユーザーへの有用な情報表示に重要です。本チュートリアルでは、GroupDocs.Comparison for .NET を使用してこれらのデータを効率的に取得する方法を解説します。

クイック回答

  • 比較のメインクラスは何ですか? Comparer がソース文書を読み込み、比較エンジンを実行します。
  • メタデータを返すメソッドはどれですか? ターゲット文書に対して GetDocumentInfo() を呼び出すと IDocumentInfo オブジェクトが返ります。
  • .NETで文書サイズを取得できますか? はい – IDocumentInfoSize プロパティがバイト単位のサイズを返します。
  • メタデータ抽出にライセンスは必要ですか? 本番環境で使用するには有効な GroupDocs.Comparison ライセンスが必要です。無料トライアルでもすべてのメタデータ機能が利用可能です。
  • APIは.NET 6と互換性がありますか? 完全に対応しています – GroupDocs.Comparison は .NET Framework 4.6.1+、.NET Core 2.0+、および .NET 5/6+ をサポートします。

GetDocumentInfo() メソッドは、文書メタデータを含む IDocumentInfo オブジェクトを返します。

文書比較におけるメタデータ抽出とは?

メタデータ抽出は、比較操作に関与する文書からファイルタイプ、ページ数、ファイルサイズなどの記述情報を取得するプロセスです。GroupDocs.Comparison は統一された API を通じてこのデータを公開しており、ログ記録、表示、条件付き処理に簡単に利用できます。

なぜ比較結果からメタデータを抽出するのか?

メタデータを抽出することで、詳細な監査ログを作成したり、ファイルタイプに基づいてルーティングしたり、大容量文書の処理戦略を調整したりできます。ファイルタイプ、ページ数、サイズが分かれば、コンプライアンス規則の適用、処理時間の見積もり、比較開始前のユーザーへの明確な情報提示が可能になります。

前提条件

  1. GroupDocs.Comparison for .NET – ライブラリは official releases page からインストールしてください。
    すべてのリリースは GroupDocs releases page でも確認できます。
  2. 開発環境 – Visual Studio、VS Code、または .NET 6+ をサポートする任意の IDE。
  3. サンプル文書 – テスト用に 2 つのファイル(例: SOURCE.docxTARGET.docx)を用意します。API は 50 以上の文書形式 に対応しています。

名前空間のインポート

以下の using ディレクティブで、コア比較エンジン、ファイル操作ユーティリティ、メタデータインターフェイスにアクセスできます。

using System;
using System.IO;
using System.Linq;
using GroupDocs.Comparison;
using GroupDocs.Comparison.Interfaces;

これらのインポートは、GroupDocs オブジェクトをインスタンス化する前に必須です。

比較結果からメタデータを抽出する方法

Comparer クラスはソース文書を読み込み、比較プロセスを統括します。

メタデータを取得するには、まず Comparer インスタンスでソース文書をロードし、次にターゲット文書を追加します。比較エンジンが初期化されたら、各ターゲットに対して GetDocumentInfo() を呼び出し、IDocumentInfo オブジェクト(ファイルタイプ、ページ数、サイズなどのプロパティを保持)を取得します。このアプローチはすべてのサポート形式で同様に機能します。

手順 1: ソース文書で Comparer を初期化

Comparer は GroupDocs.Comparison のコアクラスで、ソース文書を読み込み比較操作を統括します。using ブロックを使用すると、すべてのアンマネージドリソースが自動的に解放されます。

using (Comparer comparer = new Comparer(File.OpenRead("SOURCE.docx")))
{

Pro Tip: 任意の Stream(ファイル、メモリ、クラウド)を Comparer コンストラクタに渡すことができ、ファイルパスに限定する必要はありません。

手順 2: 比較対象の文書を追加

Add() メソッドは追加のストリームまたはファイルパスを受け取り、1 対多の比較を可能にします。

comparer.Add(File.OpenRead("TARGET.docx"));

Important: 追加した文書の順序は、最終レポートで変更がハイライトされる方式に影響します。

手順 3: 結果文書から DocumentInfo を取得

IDocumentInfo は、すべてのサポート形式に共通するファイルタイプ、ページ数、サイズなどのメタデータを統一的に提供します。

IDocumentInfo info = comparer.Targets.FirstOrDefault().GetDocumentInfo();

Understanding the Data: 返されるオブジェクトは DOCX、PDF、XLSX、PPTX で同様に動作するため、フォーマットに依存しないコードを書けます。

手順 4: DocumentInfo を表示

IDocumentInfo インスタンスを取得したら、そのプロパティをログに記録したり、保存したり、画面に表示したりできます。

Console.WriteLine("\nFile type: {0}\nNumber of pages: {1}\nDocument size: {2} bytes", info.FileType, info.PageCount, info.Size);

最も一般的に使用されるプロパティは次の 3 つです。

  • FileType – 例: DOCXPDFXLSX
  • PageCount – 総ページ数またはスライド数。
  • Size – バイト単位のファイルサイズ(ストレージ計算に便利)。

.NETで文書サイズを取得する方法

Size プロパティはバイト単位のファイルサイズを返します。

文書サイズは IDocumentInfo インスタンスの Size プロパティから直接取得できます。このプロパティは元のファイルの正確なバイト数を返すため、キロバイトやメガバイトに換算して表示やストレージ計算に利用できます。これは処理後のサイズではなく、元ファイルのサイズを示します。

long sizeInBytes = documentInfo.Size;
double sizeInMegabytes = sizeInBytes / (1024.0 * 1024.0);
Console.WriteLine($"Document size: {sizeInMegabytes:F2} MB");

Note: Size の値は内部処理や圧縮後のサイズではなく、元のファイルサイズを反映します。

主なユースケースと実践的な活用例

  • バッチ処理: ファイルタイプに基づき、DOCX は Word 専用ワークフローへ、PDF は PDF 最適化パイプラインへ自動振り分け。
  • ストレージ管理: 10 MB を超える文書は自動的にコールドストレージバケットへアーカイブ。
  • ユーザーへのフィードバック: 比較前にページ数とサイズを表示し、処理時間の期待値を設定。
  • 品質保証: アップロードされたファイルが完全かどうかを、期待ページ数と実際のページ数で比較して検証。

よくある問題のトラブルシューティング

  • ファイルアクセスエラー: 読み取り権限を確認し、開発時は絶対パスを使用してください。
  • 大容量ファイルでのメモリ圧迫: File.OpenRead などのストリーミングを使用し、ファイル全体をメモリに読み込むのは避けましょう。
  • NullReferenceException: FirstOrDefault() はターゲットが追加されていない場合 null を返す可能性があります。GetDocumentInfo() を呼び出す前に必ずチェックしてください。
var target = comparer.Targets.FirstOrDefault();
if (target != null)
{
    var info = target.GetDocumentInfo();
    // Use info safely
}
else
{
    Console.WriteLine("No target document was added.");
}
  • プレーンテキストのメタデータが限定的: .txt などの形式は有意義な PageCount を提供しないことがあります。欠損値に備えてガード処理を入れましょう。

パフォーマンス上の考慮点

  • ストリーム管理: ストリームは必ず using 文でラップし、ファイルハンドルを速やかに解放。
  • キャッシュ: 頻繁に参照するメタデータはキャッシュに保存し、再抽出のオーバーヘッドを削減。
  • バッチ操作: 文書をグループで処理し、オーバーヘッドを減らしてスループットを向上。

本番環境でのベストプラクティス

  • 堅牢なエラーハンドリング: メタデータ抽出を try‑catch ブロックで囲み、破損ファイルや非対応ファイルを優雅に処理。
  • 包括的なロギング: 各比較で文書タイプ、サイズ、ページ数をログに記録し、トラブルシューティングと監査コンプライアンスを支援。
  • セキュリティ配慮: UI メッセージにフルパスや内部サーバー情報を露出しない。
  • リソースの破棄: 特に多数の同時リクエストを処理する Web サービスでは、Comparer インスタンスを速やかに破棄。

高度なシナリオ

複数のターゲット文書

1 つのソースに対して複数のターゲットを比較する場合、Targets コレクションを列挙し、各ターゲットからメタデータを抽出します。

foreach (var target in comparer.Targets)
{
    IDocumentInfo info = target.GetDocumentInfo();
    // Process each target's information
}

メタデータに基づく条件処理

if (info.Size > 5 * 1024 * 1024) // larger than 5 MB
{
    // Apply a different comparison setting or queue for background processing
}

メタデータをデータベースに保存

FileTypePageCountSize をリレーショナルテーブルに永続化すれば、数千件の比較にわたるレポートや分析が可能になります。

よくある質問

Q: GroupDocs.Comparison for .NET はさまざまな文書形式に対応していますか?
A: はい、DOCX、PDF、PPTX、XLSX、TXT など 50 以上の形式 をサポートし、メタデータ抽出も一貫しています。

Q: メタデータ抽出に影響を与えずに比較設定をカスタマイズできますか?
A: 可能です。感度、変更種別、出力形式などの設定は GetDocumentInfo() 呼び出しとは独立しています。

Q: 評価用のトライアル版はありますか?
A: はい、GroupDocs releases page から無料トライアルをダウンロードできます。トライアル版でもメタデータ抽出機能はフルに利用可能です。

Q: 実装に関するサポートはどこで受けられますか?
A: コミュニティ支援と公式サポートは GroupDocs.Comparison forum で提供されています。

Q: 本番導入向けのライセンスオプションは?
A: 開発者、サイト、OEM ライセンスが用意されています。購入オプションは GroupDocs purchase page に掲載されています。


最終更新日: 2026-06-15
テスト環境: GroupDocs.Comparison 6.0 for .NET
作者: GroupDocs

var targetDoc = comparer.Targets.FirstOrDefault();
if (targetDoc != null)
{
    IDocumentInfo info = targetDoc.GetDocumentInfo();
    // Process document info
}

関連チュートリアル