如何從 .NET 比較結果中提取元資料 – 完整指南
當你在 .NET 應用程式中處理文件比較時,可能會想知道 如何提取元資料 從比較結果中。像是檔案類型、頁數以及文件大小等元資料對於稽核記錄、效能調校,或僅僅是向最終使用者顯示有用資訊都相當重要。本教學將引導你使用 GroupDocs.Comparison for .NET 高效取得這些資料。
快速答案
- 比較的主要類別是什麼?
Comparer會載入來源文件並執行比較引擎。 - 哪個方法會返回元資料? 目標文件上的
GetDocumentInfo()會返回IDocumentInfo物件。 - 我可以在 .NET 中取得文件大小嗎? 可以 –
IDocumentInfo的Size屬性會返回以位元組為單位的大小。 - 提取元資料需要授權嗎? 生產環境必須擁有有效的 GroupDocs.Comparison 授權;免費試用版支援所有元資料功能。
- API 是否相容於 .NET 6? 完全相容 – GroupDocs.Comparison 支援 .NET Framework 4.6.1+、.NET Core 2.0+ 以及 .NET 5/6+。
GetDocumentInfo() 方法會返回包含文件元資料的 IDocumentInfo 物件。
什麼是文件比較中的元資料提取?
元資料提取是從參與比較操作的文件中取得描述性資訊(例如檔案類型、頁數與檔案大小)的過程。GroupDocs.Comparison 透過統一的 API 釋出這些資料,讓記錄、顯示或條件處理變得簡單。
為何要從比較結果中提取元資料?
提取元資料可讓你建立詳細的稽核日誌、依類型路由檔案,並針對大型文件調整處理策略。了解檔案類型、頁數與大小後,你可以執行合規規則、估算處理時間,並在使用者開始比較前提供清晰資訊。
前置條件
- GroupDocs.Comparison for .NET – 從 官方發佈頁面 安裝此函式庫。
你也可以在 GroupDocs 發佈頁面 瀏覽所有版本。 - 開發環境 – Visual Studio、VS Code,或任何支援 .NET 6+ 的 IDE。
- 範例文件 – 兩個檔案(例如
SOURCE.docx與TARGET.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")))
{
專業提示: 你可以將任何
Stream(檔案、記憶體、雲端)傳入Comparer建構子,而不僅限於檔案路徑。
步驟 2:加入目標文件進行比較
Add() 方法接受額外的串流或檔案路徑,支援一對多的比較。
comparer.Add(File.OpenRead("TARGET.docx"));
重要提示: 新增文件的順序會影響最終報告中變更的標示方式。
步驟 3:從結果文件取得文件資訊
IDocumentInfo 在所有支援的格式中提供統一的文件元資料檢視,如檔案類型、頁數與大小。
IDocumentInfo info = comparer.Targets.FirstOrDefault().GetDocumentInfo();
了解資料: 返回的物件在 DOCX、PDF、XLSX 與 PPTX 上的行為相同,因而可撰寫與格式無關的程式碼。
步驟 4:顯示文件資訊
取得 IDocumentInfo 實例後,你可以記錄、儲存或呈現其屬性。
Console.WriteLine("\nFile type: {0}\nNumber of pages: {1}\nDocument size: {2} bytes", info.FileType, info.PageCount, info.Size);
最常使用的三個屬性為:
- FileType – 例如
DOCX、PDF、XLSX。 - PageCount – 總頁數或投影片數。
- Size – 以位元組為單位的檔案大小(對儲存計算很有用)。
如何在 .NET 中取得文件大小?
Size 屬性會返回檔案的位元組大小。
可直接透過 IDocumentInfo 實例的 Size 屬性取得文件大小。此屬性返回原始檔案的精確位元組數,讓你可轉換為千位元組或兆位元組以供顯示或儲存計算。它反映的是來源檔案大小,而非任何處理後的版本。
long sizeInBytes = documentInfo.Size;
double sizeInMegabytes = sizeInBytes / (1024.0 * 1024.0);
Console.WriteLine($"Document size: {sizeInMegabytes:F2} MB");
注意:
Size值反映的是原始檔案大小,而非任何內部處理或壓縮後的大小。
常見使用情境與實務應用
- 批次處理: 使用檔案類型將 DOCX 檔案導向 Word 專屬工作流程,PDF 檔案導向 PDF 最佳化管線。
- 儲存管理: 自動將大於 10 MB 的文件歸檔至冷儲存桶。
- 使用者回饋: 在比較前顯示頁數與大小,以設定合理的處理時間預期。
- 品質保證: 透過比較預期與實際頁數,驗證上傳檔案是否完整。
疑難排解常見問題
- 檔案存取錯誤: 確認讀取權限,開發時使用絕對路徑。
- 大型檔案記憶體壓力: 優先使用串流 (
File.OpenRead) 而非將整個檔案載入記憶體。 - 空參考例外: 若未加入目標,
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 訊息中暴露完整檔案路徑或內部伺服器資訊。
- 資源釋放: 及時釋放
Comparer實例,特別是在處理大量同時請求的 Web 服務中。
進階情境
多目標文件
若將單一來源與多個目標比較,可遍歷 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
}
將元資料儲存於資料庫
將 FileType、PageCount 與 Size 持久化於關聯式資料表,以支援數千次比較的報表與分析。
常見問與答
Q: GroupDocs.Comparison for .NET 是否相容於各種文件格式?
A: 是的,它支援 50+ 種格式,包括 DOCX、PDF、PPTX、XLSX、TXT 等等,提供一致的元資料提取。
Q: 我可以自訂比較設定而不影響元資料提取嗎?
A: 當然可以。敏感度、變更類型與輸出格式等設定與 GetDocumentInfo() 呼叫互不相干。
Q: 有可供評估的試用版嗎?
A: 有,請從 GroupDocs 發佈頁面 下載免費試用版。試用版包含完整的元資料提取功能。
Q: 我可以在哪裡取得實作問題的支援?
A: 可使用 GroupDocs.Comparison 論壇 獲得社群協助與 GroupDocs 團隊的官方支援。
Q: 生產部署有哪些授權選項?
A: GroupDocs 提供開發者、站點與 OEM 授權。購買選項列於 GroupDocs 購買頁面。
最後更新: 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
}