.NET 비교 결과에서 메타데이터 추출 방법 – 완전 가이드

.NET 애플리케이션에서 문서 비교 작업을 할 때, 비교 결과에서 메타데이터를 추출하는 방법이 궁금할 수 있습니다. 파일 유형, 페이지 수, 문서 크기와 같은 메타데이터는 감사 로그, 성능 튜닝, 혹은 최종 사용자에게 유용한 정보를 표시하는 데 중요할 수 있습니다. 이 튜토리얼에서는 GroupDocs.Comparison for .NET을 사용하여 해당 데이터를 효율적으로 가져오는 방법을 안내합니다.

빠른 답변

  • 비교를 위한 주요 클래스는 무엇인가요? Comparer loads the source document and runs the comparison engine.
  • 메타데이터를 반환하는 메서드는 무엇인가요? GetDocumentInfo() on a target document returns an IDocumentInfo object.
  • .NET에서 문서 크기를 가져올 수 있나요? Yes – the Size property of IDocumentInfo returns the size in bytes.
  • 메타데이터 추출을 위해 라이선스가 필요합니까? A valid GroupDocs.Comparison license is required for production use; the free trial supports all metadata features.
  • API가 .NET 6과 호환되나요? Absolutely – GroupDocs.Comparison supports .NET Framework 4.6.1+, .NET Core 2.0+, and .NET 5/6+.

GetDocumentInfo() 메서드는 문서 메타데이터를 포함하는 IDocumentInfo 객체를 반환합니다.

문서 비교에서 메타데이터 추출이란?

메타데이터 추출은 비교 작업에 포함된 문서들로부터 파일 유형, 페이지 수, 파일 크기와 같은 설명 정보를 검색하는 과정입니다. GroupDocs.Comparison은 이 데이터를 통합 API를 통해 제공하여 로그 기록, 표시 또는 조건부 처리에 쉽게 활용할 수 있도록 합니다.

왜 비교 결과에서 메타데이터를 추출해야 할까요?

메타데이터를 추출하면 상세한 감사 로그를 만들고, 파일 유형에 따라 파일을 라우팅하며, 대용량 문서에 대한 처리 전략을 조정할 수 있습니다. 파일 유형, 페이지 수, 크기를 알면 규정 준수 규칙을 적용하고, 처리 시간을 추정하며, 사용자가 비교를 시작하기 전에 명확한 정보를 제공할 수 있습니다.

전제 조건

  1. GroupDocs.Comparison for .NET – Install the library from the official releases page.
    You can also browse all releases at the GroupDocs releases page.
  2. Development Environment – Visual Studio, VS Code, or any IDE that supports .NET 6+.
  3. Sample Documents – Two files (e.g., SOURCE.docx and TARGET.docx) for testing. The API works with over 50 document formats.

네임스페이스 가져오기

다음 using 지시문은 핵심 비교 엔진, 파일 처리 유틸리티 및 메타데이터 인터페이스에 대한 접근을 제공합니다.

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

이러한 import는 GroupDocs 객체를 인스턴스화하기 전에 필요합니다.

비교 결과에서 메타데이터를 추출하는 방법?

Comparer 클래스는 소스 문서를 로드하고 비교 프로세스를 조정합니다.

메타데이터를 가져오려면 먼저 Comparer 인스턴스로 소스 문서를 로드한 다음 대상 문서를 추가합니다. 비교 엔진이 초기화된 후 각 대상에 대해 GetDocumentInfo()를 호출하여 파일 유형, 페이지 수, 크기와 같은 속성을 포함하는 IDocumentInfo 객체를 얻습니다. 이 접근 방식은 모든 지원 형식에서 일관되게 작동합니다.

단계 1: 소스 문서로 Comparer 초기화

Comparer는 GroupDocs.Comparison의 핵심 클래스이며 소스 문서를 로드하고 비교 작업을 조정합니다. using 블록을 사용하면 모든 관리되지 않는 리소스가 자동으로 해제됩니다.

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

Pro Tip: Comparer 생성자에 파일 경로나 파일뿐만 아니라 모든 Stream(파일, 메모리, 클라우드)을 전달할 수 있습니다.

단계 2: 비교를 위한 대상 문서 추가

Add() 메서드는 추가 스트림이나 파일 경로를 받아들여 일대다 비교를 가능하게 합니다.

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

Important: 추가된 문서의 순서는 최종 보고서에서 변경 사항이 강조되는 방식에 영향을 줍니다.

단계 3: 결과 문서에서 문서 정보 가져오기

IDocumentInfo는 모든 지원 형식에 걸쳐 파일 유형, 페이지 수, 크기와 같은 문서 메타데이터를 통합된 뷰로 제공합니다.

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

Understanding the Data: 반환된 객체는 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");

Note: Size 값은 내부 처리나 압축 후의 크기가 아니라 원본 파일 크기를 반영합니다.

일반적인 사용 사례 및 실용적인 적용

  • Batch Processing: 파일 유형을 사용하여 DOCX 파일을 Word 전용 워크플로우로, PDF를 PDF 최적화 파이프라인으로 라우팅합니다.
  • Storage Management: 10 MB보다 큰 문서를 자동으로 콜드 스토리지 버킷에 보관합니다.
  • User Feedback: 비교 전에 페이지 수와 크기를 표시하여 처리 시간에 대한 현실적인 기대치를 설정합니다.
  • Quality Assurance: 예상 페이지 수와 실제 페이지 수를 비교하여 업로드된 파일이 완전한지 확인합니다.

일반적인 문제 해결

  • File Access Errors: 읽기 권한을 확인하고 개발 중에 절대 경로를 사용합니다.
  • Memory Pressure with Large Files: 전체 파일을 메모리에 로드하는 대신 스트리밍(File.OpenRead)을 선호합니다.
  • Null Reference Exceptions: 대상이 추가되지 않은 경우 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.");
}
  • Limited Metadata for Plain Text: .txt와 같은 형식은 의미 있는 PageCount를 제공하지 않을 수 있습니다. 누락된 값을 대비하세요.

성능 고려 사항

  • Stream Management: 스트림을 항상 using 문으로 감싸 파일 핸들을 즉시 해제합니다.
  • Caching: 자주 접근하는 메타데이터를 캐시에 저장하여 반복 추출을 방지합니다.
  • Batch Operations: 문서를 그룹으로 처리하여 오버헤드를 줄이고 처리량을 향상시킵니다.

프로덕션 사용을 위한 모범 사례

  • Robust Error Handling: 메타데이터 추출을 try‑catch 블록으로 감싸 손상되거나 지원되지 않는 파일을 정상적으로 처리합니다.
  • Comprehensive Logging: 각 비교에 대해 문서 유형, 크기, 페이지 수를 로그에 기록하여 문제 해결 및 감사 준수를 돕습니다.
  • Security Hygiene: UI 메시지에 전체 파일 경로나 내부 서버 세부 정보를 노출하지 않도록 합니다.
  • Resource Disposal: 특히 다수의 동시 요청을 처리하는 웹 서비스에서는 Comparer 인스턴스를 즉시 해제합니다.

고급 시나리오

다중 대상 문서

하나의 소스를 여러 대상과 비교하는 경우 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: 예, DOCX, PDF, PPTX, XLSX, TXT 등 50개 이상의 형식을 지원하며 일관된 메타데이터 추출을 제공합니다.

Q: 메타데이터 추출에 영향을 주지 않고 비교 설정을 사용자 정의할 수 있나요?
A: 물론입니다. 민감도, 변경 유형, 출력 형식 등의 설정은 GetDocumentInfo() 호출과 독립적입니다.

Q: 평가를 위해 사용할 수 있는 체험 버전이 있나요?
A: 예, GroupDocs releases page에서 무료 체험판을 다운로드하세요. 체험판에는 전체 메타데이터 추출 기능이 포함됩니다.

Q: 구현 관련 질문에 대한 지원은 어디서 받을 수 있나요?
A: GroupDocs.Comparison 포럼을 이용하면 커뮤니티 도움과 GroupDocs 팀의 공식 지원을 받을 수 있습니다.

Q: 프로덕션 배포를 위한 라이선스 옵션은 무엇이 있나요?
A: GroupDocs는 개발자, 사이트, OEM 라이선스를 제공합니다. 구매 옵션은 GroupDocs purchase page에서 확인할 수 있습니다.


Last Updated: 2026-06-15
Tested With: GroupDocs.Comparison 6.0 for .NET
Author: GroupDocs

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

관련 튜토리얼