0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C# で PDF のメタデータを読み取る:実践ガイド

Posted at

日常的な開発やドキュメント管理の現場において、PDF は単なる「内容の入れ物」ではありません。タイトル、作成者、作成日時、キーワード、さらには社内業務で使用される独自フィールドなど、さまざまな記述情報が含まれています。これらは総称して PDF メタデータ(Metadata) と呼ばれます。
コンテンツ管理システム(CMS)、文書アーカイブ、検索エンジンのインデックス作成、コンプライアンス監査、そして自動化された文書処理フローにおいて、PDF メタデータを正確に取得・分析することは非常に重要な要素となります。

本記事では、Free Spire.PDF for .NET を使用し、実際の C# サンプルコードを交えながら、.NET 環境で PDF の標準ドキュメントプロパティカスタムドキュメントプロパティ を読み取る方法を体系的に解説します。あわせて、主要クラスや実装ロジックについても詳しく説明し、実務でそのまま活用できる知識を提供します。


一、PDF メタデータの概要

PDF のメタデータは、大きく分けて次の 2 種類に分類されます。

1 つ目は 標準ドキュメントプロパティ です。これは PDF 仕様で定義されている共通フィールドで、Adobe Acrobat などの多くの PDF リーダーで直接確認できます。代表的な項目として、タイトル、作成者、件名、キーワード、作成日時、更新日時、生成ツールなどがあります。

2 つ目は カスタムドキュメントプロパティ です。PDF を生成するアプリケーションや業務システムによって書き込まれるもので、プロジェクト番号、契約番号、部署名、バージョン情報など、特定の業務目的に応じた情報を保持します。UI 上では表示されない場合もありますが、プログラムからは非常に有用なデータです。

これらの情報をプログラムで取得することで、PDF の本文を解析することなく、分類、検索、検証、分析といった処理を効率的に行うことができます。


二、準備:Free Spire.PDF for .NET の導入

Free Spire.PDF for .NET は、PDF の作成・読み取り・解析といった基本操作をサポートする軽量な PDF ライブラリです。ドキュメント自動化やユーティリティ系のプロジェクトに非常に適しています。

プロジェクトへの導入方法としては、NuGet(FreeSpire.PDF で検索)を利用するか、公式サイトから DLL をダウンロードして手動で参照設定を行います。参照が完了したら、以下の名前空間を追加するだけで使用を開始できます。

using Spire.Pdf;

三、PDF の標準ドキュメントプロパティを読み取る

ここでは、C# で PDF ファイルを読み込み、標準メタデータを取得する基本的な例を紹介します。

サンプルコード

using System;
using Spire.Pdf;

namespace PdfMetadataReader
{
    class Program
    {
        static void Main(string[] args)
        {
            string pdfFilePath = "Sample.pdf";

            try
            {
                using (PdfDocument doc = new PdfDocument())
                {
                    // PDF ファイルを読み込む
                    doc.LoadFromFile(pdfFilePath);

                    Console.WriteLine("=== PDF 標準ドキュメントプロパティ ===");
                    Console.WriteLine($"タイトル (Title): {doc.DocumentInformation.Title}");
                    Console.WriteLine($"作成者 (Author): {doc.DocumentInformation.Author}");
                    Console.WriteLine($"件名 (Subject): {doc.DocumentInformation.Subject}");
                    Console.WriteLine($"キーワード (Keywords): {doc.DocumentInformation.Keywords}");
                    Console.WriteLine($"作成日時 (CreationDate): {doc.DocumentInformation.CreationDate}");
                    Console.WriteLine($"更新日時 (ModificationDate): {doc.DocumentInformation.ModificationDate}");
                    Console.WriteLine($"作成アプリ (Creator): {doc.DocumentInformation.Creator}");
                    Console.WriteLine($"生成ツール (Producer): {doc.DocumentInformation.Producer}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("PDF メタデータの読み取りに失敗しました:" + ex.Message);
            }

            Console.ReadKey();
        }
    }
}

取得結果

C#でPDFの標準ドキュメントプロパティを読み取る

実装ロジックの解説

まず PdfDocument オブジェクトを生成します。これは Free Spire.PDF において、PDF ドキュメント全体を表す中核クラスです。LoadFromFile メソッドで指定した PDF を読み込むと、DocumentInformation プロパティを通じて各種メタデータにアクセスできるようになります。

DocumentInformation には、PDF の標準フィールドに対応した強く型付けされたプロパティが用意されています。内部構造を直接解析する必要がないため、コードは非常にシンプルで可読性も高く、ツール系アプリケーションやバックエンドサービスに適しています。

実務では、取得した情報をデータベースに保存したり、ログとして記録したり、全文検索用のインデックス項目として利用することも可能です。


四、PDF のカスタムドキュメントプロパティを読み取る

標準プロパティに加えて、多くの PDF にはカスタムメタデータが含まれています。Free Spire.PDF では、これらの情報もまとめて取得できます。

サンプルコード

using System;
using System.Collections.Generic;
using Spire.Pdf;

namespace PdfMetadataReader
{
    class Program
    {
        static void Main(string[] args)
        {
            string pdfFilePath = "SampleWithCustomMetadata.pdf";

            try
            {
                using (PdfDocument doc = new PdfDocument())
                {
                    doc.LoadFromFile(pdfFilePath);

                    Console.WriteLine("=== PDF カスタムドキュメントプロパティ ===");

                    var customProperties = doc.DocumentInformation.GetAllCustomProperties();

                    if (customProperties != null && customProperties.Count > 0)
                    {
                        foreach (KeyValuePair<string, string> item in customProperties)
                        {
                            Console.WriteLine($"{item.Key} : {item.Value}");
                        }
                    }
                    else
                    {
                        Console.WriteLine("この PDF にはカスタムメタデータが含まれていません。");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("カスタムメタデータの読み取りに失敗しました:" + ex.Message);
            }

            Console.ReadKey();
        }
    }
}

取得結果

C#でPDFのカスタムドキュメントプロパティを読み取る

ポイント解説

GetAllCustomProperties() メソッドは、キーと値のペアで構成されたコレクションを返します。プロパティ名を事前に把握していなくても動的に取得できるため、柔軟な処理が可能です。

企業システムでは、こうしたカスタムフィールドに契約番号、承認者、システムバージョンなどの重要な業務情報が格納されていることが多く、プログラムによる自動抽出は、手作業での確認や入力を大幅に削減する効果があります。


五、代表的な活用シーン

実際のプロジェクトにおいて、PDF メタデータの読み取りは次のような場面でよく利用されます。

ドキュメント管理システムで、作成者や作成日時、カスタム属性に基づいて PDF を自動分類・アーカイブする場合。
検索システムで、PDF メタデータをインデックス項目として利用し、検索精度とパフォーマンスを向上させる場合。
コンプライアンスや監査の用途で、生成ツールや更新日時、出所情報を一括チェックする場合。
自動化された業務フローにおいて、PDF に埋め込まれた業務用フィールドを条件分岐のトリガーとして利用する場合。

PDF 本文を解析する方法と比べて、メタデータの取得は高速かつ実装も容易なため、多くのシステムで優先的に採用されています。


六、まとめ

本記事では、「PDF メタデータの読み取り」をテーマに、Free Spire.PDF for .NET を用いて C# から PDF の標準ドキュメントプロパティおよびカスタムドキュメントプロパティを取得する方法を詳しく解説しました。

PdfDocumentDocumentInformation が提供する API を活用すれば、ページ内容を解析することなく、PDF に含まれる重要な情報を効率的に取得できます。コードは簡潔で安定性も高く、バッチ処理、バックエンドサービス、企業向けアプリケーションなど幅広い用途に適しています。

PDF メタデータの扱いを理解することで、より高度で自動化されたドキュメント処理システムを構築でき、今後の PDF 分析や管理業務の基盤として大いに役立つでしょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?