.NET에서 문서 속성 작업하기

.NET에서 문서 속성 작업하기

.NET에서 문서 속성을 다루는 방법

모든 Word 문서에는 두 가지 범주의 메타데이터가 포함됩니다 — Word가 모든 파일에 대해 추적하는 표준 필드와 프로그램이 추가한 애플리케이션 정의 값입니다. 이 가이드는 Aspose.Words FOSS for .NET를 사용하여 Document.BuiltInDocumentProperties와 Document.CustomDocumentProperties을 이용해 두 가지 모두를 읽고 설정하는 방법을 보여줍니다. 두 도구는 궁극적으로 동일한 DocumentProperty 표현을 기반으로 합니다.


단계별 가이드

1단계: 기본 문서 속성 읽기 및 설정

Document.BuiltInDocumentProperties는 BuiltInDocumentProperties 컬렉션을 반환합니다. 이는 고정되고 알려진 속성 집합이므로 값은 이름으로 조회하는 대신 일반 멤버로 읽고 쓸 수 있습니다 — 예를 들어 서술 필드에는 BuiltInDocumentProperties.Author, .Title, .Subject, .Manager, .Company, .Category, .Keywords, .Comments가 있으며, 타임스탬프에는 .CreatedTime, .LastSavedTime, .LastPrinted, .LastSavedBy이 있습니다. .Characters, .CharactersWithSpaces, .Lines, .Bytes와 같은 통계도 이와 같이 노출되며, .Template 및 .HyperlinkBase도 포함됩니다.


2단계: 사용자 정의 문서 속성 추가

Document.CustomDocumentProperties은(는) Word에 기본 제공되는 세트에 포함되지 않은 애플리케이션 정의 메타데이터를 위한 CustomDocumentProperties 컬렉션을 반환합니다. 이름과 형식이 지정된 값(문자열, 숫자, 부울 또는 날짜 중 값 유형에 맞는 오버로드에 따라)을 사용하여 Add(name, value) 오버로드 중 하나를 호출하면 새 속성을 만들 수 있습니다.


3단계: 사용자 지정 속성을 문서 내용에 연결

정적 값 대신, 사용자 지정 속성은 책갈피가 지정된 콘텐츠 범위를 추적하여 해당 값이 콘텐츠와 동기화된 상태를 유지할 수 있습니다. 연결된 콘텐츠가 변경될 때마다 정적 속성을 수동으로 다시 동기화하는 대신, CustomDocumentProperties.AddLinkToContent(name, linkSource)을(를) 호출하고 책갈피 이름을 linkSource으로 전달하십시오.


4단계: 속성 조회, 확인 및 제거

BuiltInDocumentProperties와 CustomDocumentProperties은 모두 추상 DocumentPropertyCollection에서 파생되므로 동일한 방식으로 검사됩니다: 이름으로 인덱싱(예: properties[name])하면 속성을 가져오고, Contains(name)는 존재 여부를 확인하며, IndexOf(name)는 해당 위치를 반환하고, Count은 컬렉션에 포함된 속성 수를 보고합니다. 사용자 지정 속성이 존재하지 않을 수 있는 경우 이름으로 인덱싱하기 전에 Contains(name)을(를) 호출하여 누락된 속성을 예외 경로로 처리하는 것을 방지하십시오. Remove(name) 또는 RemoveAt(index)를 사용하여 속성을 제거하거나, Clear()으로 컬렉션의 모든 속성을 지울 수 있습니다.


5단계: 사전에 유형을 알지 못한 상태에서 사용자 지정 속성 값을 읽기

DocumentProperty은(는) Name과, 형식이 지정되지 않은 Value, 그리고 Type을(를) 가지고 있습니다 — 이는 PropertyType 열거형 값이며, Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray, 또는 Other 중 하나입니다. Value는 형식이 지정되지 않았으므로 직접 캐스팅하는 대신 해당 형식에 맞는 접근자를 사용하십시오: ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray(), 또는 ToString(). IsLinkToContent 및 LinkSource를 확인하여 속성이 정적 값을 보유하고 있는 것이 아니라 문서 내용에 연결되어 있는지(3단계 참조) 확인하십시오.


6단계: 문서 보호 상태 확인

BuiltInDocumentProperties.Security은(는) 문서에 저장된 보호 메타데이터를 설명하는 DocumentSecurity 값을 보고합니다: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced, 또는 ReadOnlyExceptAnnotations. 로드된 문서에서 추가 보호 관련 처리가 필요한지 결정하기 전에 이 속성을 읽으세요.


일반적인 문제 및 해결책

a를 인덱싱 CustomDocumentProperties 이름으로 컬렉션을 조회하면 사용할 수 있는 것이 반환되지 않습니다. 이 문서에 해당 속성이 존재하지 않습니다. 호출하세요 Contains(name) 먼저, 또는 적절한 Add(name, value) 오버로드.

사용자 정의 속성 값을 읽으면 잘못된 유형이 반환됩니다. DocumentProperty.Value 은(는) 타입이 지정되지 않았습니다 object; 호출자는 일치하지 않는 유형을 가정했습니다 Type. 해당 타입 접근자를 사용하십시오 (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) 기반으로 DocumentProperty.Type.

연결된 사용자 정의 속성의 값이 오래된 것처럼 보입니다. 속성은 다음을 통해 연결됩니다 AddLinkToContent, 그리고 북마크된 콘텐츠가 변경되었습니다. 다음을 확인하십시오: linkSource 북마크가 여전히 속성 값에 공급되어야 하는 범위를 표시하는지 확인하십시오.

예를 들어 단어 통계는 Characters or Lines 문서의 실제 현재 내용과 일치하지 않습니다. 내장 통계는 저장된 메타데이터를 반영하며, 실시간 재계산이 아닙니다. 관련 값을 다시 계산하고 업데이트하십시오. BuiltInDocumentProperties 값은 최신 카운트가 필요할 경우.


자주 묻는 질문

문서의 저자와 제목을 읽거나 설정하려면 어떻게 해야 하나요?

Document.BuiltInDocumentProperties.Author와 .Title를 직접 사용하세요 — 이들은 Document.BuiltInDocumentProperties에서 도달할 수 있는 BuiltInDocumentProperties 컬렉션의 일반 문자열 속성입니다.

표준 Word 속성이 아닌 애플리케이션 고유 메타데이터를 추가하려면 어떻게 해야 하나요?

Document.CustomDocumentProperties.Add(name, value)를 속성 이름과 값과 함께 사용하세요; 값의 유형에 따라 일치하는 Add 오버로드가 선택됩니다.

BuiltInDocumentProperties와 CustomDocumentProperties의 차이점은 무엇인가요?

BuiltInDocumentProperties는 Word의 고정된 표준 메타데이터 필드 집합이며, 명명된 멤버로 접근합니다. CustomDocumentProperties는 애플리케이션 정의 메타데이터를 위한 DocumentProperty 값들의 개방형 명명된 컬렉션으로, 인덱서(예: properties[name])와 Contains를 통해 이름으로 접근합니다.

사용자 정의 속성이 정적 값이 아니라 문서 내용의 일부분을 추적하도록 하려면 어떻게 해야 하나요?

CustomDocumentProperties.AddLinkToContent(name, linkSource)를 사용하고, 북마크 이름을 linkSource으로 전달하세요; 그러면 속성 값이 해당 북마크된 콘텐츠를 반영합니다.

문서가 암호로 보호되어 있는지 어떻게 확인하나요?

읽기 Document.BuiltInDocumentProperties.Security, DocumentSecurity 값; PasswordProtected는 문서에 저장된 메타데이터가 암호 보호를 선언함을 나타냅니다.


참조

 한국어