목차

개요

다양한 파일 형식에 걸쳐 문서 메타데이터를 관리하는 것은 어려울 수 있습니다. GroupDocs.Metadata for .NET은 태그 시스템을 제공하여 공통 메타데이터 속성(예: 제목, 저자, 생성 날짜)을 태그 아래에 통합함으로써 이를 간소화합니다. 이 방법 가이드에서는 GroupDocs.Metadata for .NET을 사용하여 태그로 메타데이터를 찾고, 추가하고, 복사하고, 업데이트하며, 제거하는 방법을 살펴봅니다.

GroupDocs.Metadata는 파일 형식이나 메타데이터 표준에 관계없이 파일 내 중요한 메타데이터 속성을 라벨링하기 위해 태그를 사용합니다. 각 태그는 관련 태그를 그룹화하여 탐색을 용이하게 하는 카테고리에 속합니다.

예시:

  • Content Tags: 파일의 내용(예: 언어, 장르, 주제, 등급)을 설명합니다.
  • Person Tags: 콘텐츠와 관련된 사람 또는 조직을 식별합니다(예: 문서 작성자, 편집자, 회사).
  • Time Tags: 파일 수명주기에서의 타임스탬프를 나타냅니다(예: 생성 날짜, 최종 수정 시간, 인쇄 날짜).
    (그 외에도 Legal, Origin, Tool 등 다양한 카테고리가 있으며, 각각 관련 태그를 그룹화합니다.)

이러한 태그를 사용하면 Word 문서, PDF, 이미지 등 다양한 형식에 걸쳐 메타데이터를 통합된 방식으로 검색하고 조작할 수 있습니다. 예를 들어 Person 카테고리의 “Author” 또는 “Creator” 태그는 Word 문서나 PDF의 저자 속성과 일치하므로 형식별 메타데이터 필드 이름을 몰라도 됩니다. 이는 파일을 정리하고 메타데이터 관리 작업을 자동화하는 데 매우 유용합니다.

사용 사례

이 섹션에서는 실제 활용 예시를 소개합니다.

태그별 메타데이터 속성 찾기

대표적인 사용 사례는 파일 내 메타데이터 항목을 태그로 찾아내는 것입니다. 이는 검색성을 높이는 데 특히 유용하며, 문서 형식에 관계없이 특정 정보를 가져올 수 있습니다.

단계

  1. 파일을 Metadata 객체에 로드합니다.
  2. FindProperties()와 태그 기반 프레디킷을 사용해 속성을 찾습니다. 특정 태그나 전체 카테고리로 필터링할 수 있습니다.
  3. 결과를 반복하여 메타데이터를 검사하거나 사용합니다.
// Load the source document (e.g., a PowerPoint file)
using (Metadata metadata = new Metadata("source.pptx"))
{
    // Find properties tagged as "last editor" or "last modified time"
    var properties = metadata.FindProperties(p => 
        p.Tags.Contains(Tags.Person.Editor) || 
        p.Tags.Contains(Tags.Time.Modified));

    // List the found properties and their values
    foreach (var property in properties)
    {
        Console.WriteLine($"Property name: {property.Name}, Value: {property.Value}");
    }
}

태그별 메타데이터 속성 추가하기

파일에 특정 메타데이터가 누락된 경우(예: “마지막 인쇄 날짜”가 기록되지 않음) GroupDocs.Metadata를 사용해 태그를 지정하여 메타데이터 속성을 추가할 수 있습니다. API는 형식이 지원하는 경우 적절한 메타데이터 패키지에 자동으로 배치합니다.

단계

  1. 파일을 Metadata 객체에 로드합니다.
  2. 프레디킷을 사용해 추가 위치를 지정하고 AddProperties()를 호출해 새 속성 값을 제공합니다.
  3. 반환값을 확인해 몇 개의 속성이 추가됐는지 확인합니다.
  4. 변경 사항을 지속하려면 문서를 저장합니다.
using (Metadata metadata = new Metadata("source.pdf"))
{
    if (metadata.FileFormat != FileFormat.Unknown && !metadata.GetDocumentInfo().IsEncrypted)
    {
        // Add a "Last Printed" date property if it's missing
        int affected = metadata.AddProperties(
            p => p.Tags.Contains(Tags.Time.Printed),
            new PropertyValue(DateTime.Now));

        Console.WriteLine("Properties added: " + affected);
        metadata.Save("output.pdf");
    }
}

여기서 Tags.Time.Printed는 Time 카테고리의 “Printed” 날짜 태그입니다. 프레디킷 p.Tags.Contains(Tags.Time.Printed)는 알려진 Printed 메타데이터 속성을 목표로 합니다. 해당 속성이 없으면 AddProperties가 제공된 값(DateTime.Now)으로 추가합니다. 메서드는 추가된 속성 수를 반환하며, 마지막에 파일을 저장해 새로운 메타데이터를 영구히 기록합니다.

태그별 메타데이터 속성 복사하기

특정 유형의 메타데이터만 복사하고자 할 때(예: 저자 이름이나 생성 날짜) CopyTo 메서드와 프레디킷을 사용하면 됩니다. 아래 예시는 저자 및 생성 날짜와 관련된 메타데이터만 복사하는 방법을 보여줍니다.

단계

  1. Metadata 클래스를 사용해 원본 파일과 대상 파일을 모두 로드합니다.
  2. CopyTo 메서드에 프레디킷을 전달해 복사할 속성을 필터링합니다.
  3. 대상 파일을 저장해 복사된 메타데이터를 적용합니다.
using (Metadata sourceMetadata = new Metadata("source.xlsx"))
using (Metadata targetMetadata = new Metadata("target.pptx"))
{
    // Copy only Author (Creator) and Creation Date metadata properties
    sourceMetadata.CopyTo(targetMetadata, p =>
        p.Tags.Contains(Tags.Person.Creator) ||
        p.Tags.Contains(Tags.Time.Created));

    // Save the changes
    targetMetadata.Save();
}

이 예시에서는 Creator(저자)와 Created(생성 날짜) 태그가 달린 메타데이터만 Excel 파일(source.xlsx)에서 PowerPoint 프레젠테이션(target.pptx)으로 복사됩니다. 선택적 복사는 메타데이터를 정확히 제어할 수 있게 해 주어, 문서에 원하는 메타데이터만 포함되도록 할 수 있습니다.

태그별 메타데이터 속성 업데이트하기

새 메타데이터를 추가하는 것 외에도 기존 메타데이터 값을 업데이트해야 할 때가 많습니다(예: 저자 이름 수정, 날짜 표준화). GroupDocs.Metadata는 SetProperties() 메서드를 제공하며, 태그를 사용해 대상 속성을 찾아 값을 업데이트합니다. 대상 속성이 없으면 SetProperties가 자동으로 추가해 줍니다.

단계

  1. 파일을 Metadata 객체에 로드합니다.
  2. 태그 기반 필터와 새로운 PropertyValue를 전달해 SetProperties()를 호출합니다.
  3. 영향을 받은(업데이트 또는 추가된) 속성 수를 검사합니다.
  4. 필요 시 파일을 저장해 변경 사항을 적용합니다.
using (Metadata metadata = new Metadata("source.pdf"))
{
    // Update all "Created" or "Modified" date properties to now
    int affected = metadata.SetProperties(
        p => p.Tags.Contains(Tags.Time.Created) || p.Tags.Contains(Tags.Time.Modified),
        new PropertyValue(DateTime.Now));

    Console.WriteLine("Properties updated or added: " + affected);
    metadata.Save("updated.pdf");
}

프레디킷에서 Tags.Time.CreatedTags.Time.Modified는 각각 생성 날짜와 최종 수정 날짜 태그입니다. 코드가 실행되면 해당 태그가 달린 모든 메타데이터 속성을 현재 시각(DateTime.Now)으로 설정합니다. 만약 파일에 Created 날짜 속성이 없었다면, 라이브러리는 이를 표준 속성으로 인식해 자동으로 추가합니다.

태그별 메타데이터 제거하기

개인정보 보호나 규정 준수를 위해 특정 메타데이터(예: 저자 이름, 개인 정보)를 문서에서 제거해야 할 때가 있습니다. 태그를 활용하면 형식에 관계없이 해당 메타데이터를 쉽게 타겟팅하고 삭제할 수 있습니다. RemoveProperties() 메서드는 다른 메서드와 마찬가지로 프레디킷을 받아 일치하는 모든 메타데이터 항목을 삭제합니다.

단계

  1. 파일을 Metadata 객체에 로드합니다.
  2. 제거할 속성을 정의하는 태그 기반 프레디킷을 전달해 RemoveProperties()를 호출합니다.
  3. 메서드가 반환하는 제거된 속성 개수를 검토합니다.
  4. 파일을 저장해 변경 사항을 적용합니다.
using (Metadata metadata = new Metadata("source.docx"))
{
    // Remove properties that are tagged as Creator or Editor, or any string containing "John"
    int removedCount = metadata.RemoveProperties(p =>
        p.Tags.Contains(Tags.Person.Creator) ||
        p.Tags.Contains(Tags.Person.Editor) ||
        (p.Value.Type == MetadataPropertyType.String && p.Value.ToString().Contains("John"))
    );

    Console.WriteLine("Properties removed: " + removedCount);
    metadata.Save("cleaned.docx");
}

이 프레디킷은 두 가지 기준을 결합합니다. Person 카테고리에서 Creator 또는 Editor 태그가 달린 모든 속성은 제거하고, 값에 문자열 “John”이 포함된 모든 문자열 메타데이터도 삭제합니다. 실제 시나리오에서는 이러한 로직을 활용해 저자명이나 고객명 등 개인 데이터를 문서에서 정리할 수 있습니다.

결론

이 글에서는 GroupDocs.Metadata for .NET의 태그 기능을 이용해 다양한 문서 형식에서 메타데이터를 추가, 복사, 찾기, 업데이트 및 제거하는 방법을 시연했습니다. Content, Person, Time 등과 같은 태그를 활용하면 일관된 메타데이터 기반 워크플로를 구축하고, 파일을 체계적으로 조직하며, 검색성을 개선하고(예: 저자별 또는 날짜별 파일 찾기), 문서 분류 및 정리 작업을 자동화할 수 있습니다.

관련 항목

무료 체험 받기

GroupDocs.Metadata for .NET의 무료 체험 버전을 releases.groupdocs.com에서 다운로드할 수 있습니다. 또한 여기에서 임시 라이선스를 받아 제한 없이 모든 기능을 체험해 보세요.