博客 / 詳情

返回

使用 C# 讀取 PDF 元數據實踐指南

在日常開發和文檔管理場景中,PDF 往往不僅僅是“內容載體”,它還包含了大量描述性信息,例如標題、作者、創建時間、關鍵詞,甚至是企業內部自定義的業務字段。這些信息統稱為 PDF 元數據(Metadata)
在內容管理系統(CMS)、文檔歸檔系統、搜索引擎索引、合規審計以及自動化文檔處理流程中,準確讀取和分析 PDF 元數據,往往是一個不可忽視的環節。

本文將以 Free Spire.PDF for .NET 為基礎,結合實際 C# 示例代碼,系統講解如何在 .NET 環境中讀取 PDF 標準文檔屬性自定義文檔屬性,並對關鍵類和實現邏輯進行深入解析,幫助你在真實項目中靈活應用。


一、PDF 元數據簡介

PDF 元數據主要分為兩類:

第一類是 標準文檔屬性,這是 PDF 規範中定義的通用字段,大多數 PDF 閲讀器(如 Adobe Acrobat)都能直接顯示,包括標題、作者、主題、關鍵詞、創建時間、修改時間、生成器等。

第二類是 自定義文檔屬性,通常由生成 PDF 的程序或業務系統寫入,用於保存特定業務信息,例如項目編號、合同編號、部門名稱、版本號等。這類屬性在界面中未必可見,但對程序來説非常有價值。

通過程序讀取這些信息,可以實現自動分類、檢索、校驗和分析,而無需解析 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 方法加載指定路徑的文件後,即可通過 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("讀取 PDF 自定義元數據失敗:" + ex.Message);
            }

            Console.ReadKey();
        }
    }
}

讀取結果

C#讀取PDF自定義文檔屬性

關鍵點説明

GetAllCustomProperties() 方法會返回一個鍵值對集合,鍵為屬性名稱,值為屬性內容。這種結構非常適合動態字段的讀取和處理,不需要提前知道具體屬性名。

在企業系統中,這類自定義字段往往承載着重要業務含義,例如合同編號、審批人、系統版本等。通過程序自動提取,可以顯著減少人工核對和錄入成本。


五、常見應用場景分析

在實際項目中,讀取 PDF 元數據通常與以下需求緊密相關:

在文檔管理系統中,根據作者、創建時間或自定義字段對 PDF 自動分類和歸檔。
在搜索系統中,將 PDF 元數據作為索引字段,提高搜索效率和準確性。
在合規與審計場景中,批量檢查 PDF 的生成工具、修改時間或來源信息。
在自動化流程中,根據 PDF 內嵌的業務字段觸發不同的處理邏輯。

相比解析 PDF 正文內容,讀取元數據性能更高、實現更簡單,是很多系統的首選方案。


六、總結

本文圍繞“讀取 PDF 元數據”這一主題,詳細介紹瞭如何使用 Free Spire.PDF for .NET 在 C# 中獲取 PDF 的標準文檔屬性和自定義文檔屬性,並結合代碼對實現思路進行了深入解析。

通過 PdfDocumentDocumentInformation 提供的 API,你可以在不解析頁面內容的前提下,高效獲取 PDF 的關鍵信息。這種方式不僅代碼簡潔,而且非常穩定,適合在批量處理、後台服務和企業級應用中使用。

掌握 PDF 元數據的讀取方法,將有助於你構建更智能、更自動化的文檔處理系統,也為後續的 PDF 分析和管理打下堅實基礎。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.