문서 속성 작업

문서 속성 작업

이 가이드는 Word 문서의 메타데이터를 읽고 관리하는 방법을 보여줍니다 — Word의 정보/속성 패널에 표시되는 속성과 애플리케이션에서 정의한 사용자 지정 값 모두를 포함합니다. Document.BuiltInDocumentProperties와 Document.CustomDocumentProperties은 이 두 범주를 노출하며, 둘 다 궁극적으로 동일한 기본 DocumentProperty 표현을 기반으로 합니다.


내장 문서 속성

Document.BuiltInDocumentProperties은(는) 모든 문서에 대해 Word가 추적하는 표준 메타데이터를 포함하는 BuiltInDocumentProperties 컬렉션을 반환합니다: Title, Subject, Author, Manager, Company, Category, Keywords, Comments와 같은 설명 필드; CreatedTime, LastSavedTime, LastPrinted와 같은 타임스탬프와 LastSavedBy, RevisionNumber; 그리고 Words, Characters, CharactersWithSpaces, Lines, Paragraphs, Pages과 같은 통계 정보. Security은(는) 문서의 보호 상태를 DocumentSecurity 값으로 보고하고, Template, NameOfApplication, TotalEditingTime는 저작 환경을 설명합니다. BuiltInDocumentProperties은(는) 고정된 알려진 속성 집합이므로 개별 값은 이름으로 조회하는 대신 일반 속성(BuiltInDocumentProperties.Author = "...")으로 읽고 쓸 수 있습니다.

사용자 지정 문서 속성

Document.CustomDocumentProperties은(는) Word의 기본 제공 집합에 포함되지 않은 애플리케이션 정의 메타데이터를 위한 CustomDocumentProperties 컬렉션을 반환합니다. 여러 Add(name, value) 오버로드는 이름과 타입이 지정된 값(문자열, 숫자, 불리언 또는 날짜, 오버로드에 따라)을 사용해 새 속성을 생성하고, AddLinkToContent(name, linkSource)은 값이 정적이 아니라 문서 내에 북마크된 내용 범위에 연결되고 추적되는 속성을 생성합니다. 이름으로 인덱싱(예: properties[name]) 및 Contains(name)는 속성을 조회하고, IndexOf(name)은 해당 위치를 반환하며, Remove(name)/RemoveAt(index)은 속성을 삭제합니다.

DocumentProperty 객체와 공유 컬렉션 기반

BuiltInDocumentProperties와 CustomDocumentProperties은 추상 DocumentPropertyCollection에서 파생되며, 이 추상은 이름, GetEnumerator(), Contains(name), IndexOf(name), Count으로 인덱서를 정의합니다 — 따라서 기본 속성은 고정되고 사용자 정의 속성은 개방형이지만 두 컬렉션은 동일한 방식으로 검사됩니다. 각각의 DocumentProperty은 Name, 타입이 지정되지 않은 Value, 그리고 Type을 가지고 있습니다 (PropertyType 열거형 값: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray, 또는 Other). IsLinkToContent와 LinkSource는 해당 속성이 정적 값을 보유하는 것이 아니라 문서 내용에 연결되어 있는지를 보고합니다 (AddLinkToContent을(를) 위를 참고). Value가 타입이 지정되지 않았기 때문에, DocumentProperty는 명시적 캐스팅 없이 특정 타입으로 읽을 수 있도록 typed accessor인 ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray(), ToString()를 제공합니다.

문서 보안

BuiltInDocumentProperties.Security는 문서의 보호 상태를 설명하는 DocumentSecurity 값을 보고합니다: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced, 또는 ReadOnlyExceptAnnotations. 이는 파일 속성에서 읽은 문서에 저장된 보호 메타데이터를 반영합니다.


팁 및 모범 사례

  • 기본 저장 유형이 PropertyType에 따라 달라질 수 있으므로, DocumentProperty.Value에서 타입이 지정되지 않은 object 값을 직접 캐스팅하는 대신 typed accessor (ToInt(), ToDouble(), ToDateTime(), ToBool())를 사용하십시오.
  • 속성이 존재하지 않을 수 있는 경우, 이름으로(예: properties[name]) 속성 컬렉션 중 하나에 인덱싱하기 전에 Contains(name)를 확인하여 누락된 속성 상황을 예외 경로로 처리하는 것을 방지하십시오.
  • 맞춤 속성 값이 문서의 북마크된 부분을 항상 반영해야 할 때는, 내용이 변경될 때마다 정적 맞춤 속성을 수동으로 재동기화하는 대신 CustomDocumentProperties.AddLinkToContent(name, linkSource)를 사용하십시오.
  • BuiltInDocumentProperties 통계(Words, Characters, Pages 등)를 항상 실시간으로 계산된 카운트가 아니라 파일 메타데이터에 저장된 값으로 간주하십시오 — 마지막으로 기록된 이후 문서가 변경된 경우 명시적으로 새로 고치세요.
  • BuiltInDocumentProperties.Security을(를) 읽어 문서에 선언된 보호 상태를 확인한 후 추가 보호 관련 처리가 필요한지 결정합니다.

일반적인 문제

문제원인수정
이름으로 CustomDocumentProperties 컬렉션을 인덱싱하면 사용 가능한 것이 반환되지 않습니다.이 문서에 해당 속성이 존재하지 않습니다.Contains(name)을(를) 먼저 호출하거나, 적절한 Add(name, value) 오버로드로 속성을 추가하십시오.
맞춤 속성 값을 읽으면 잘못된 유형이 반환됩니다.DocumentProperty.Value은(는) 타입이 지정되지 않은 object이며, 호출자는 Type와 일치하지 않는 유형을 가정했습니다.해당 DocumentProperty.Type에 따라 해당 타입 접근자(ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray())를 사용하십시오.
연결된 사용자 정의 속성 값이 오래된 것으로 보입니다.속성은 AddLinkToContent를 통해 연결되어 있으며, 연결된 콘텐츠가 문서가 적절히 업데이트되지 않은 상태에서 변경되었습니다.북마크된 linkSource 범위가 여전히 원하는 콘텐츠를 반영하는지 확인하십시오.
단어 통계(Words, Pages 등)가 문서의 실제 현재 내용과 일치하지 않습니다.내장 통계는 실시간 재계산이 아닌 저장된 메타데이터를 반영합니다.최신 카운트가 필요하면 관련 BuiltInDocumentProperties 값을 다시 계산하고 업데이트하십시오.

FAQ

문서의 저자와 제목을 어떻게 읽고 설정하나요?

Document.BuiltInDocumentProperties.Author와 .Title을 직접 사용하세요 — Document.BuiltInDocumentProperties에서 접근하는 BuiltInDocumentProperties 컬렉션의 일반 문자열 속성입니다.

표준 Word 속성이 아닌 애플리케이션 전용 메타데이터는 어떻게 추가합니까?

Document.CustomDocumentProperties.Add(name, value)에 속성 이름과 값을 전달해서 사용하세요; 값의 유형에 따라 적절한 Add 오버로드가 선택됩니다.

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

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

정확한 저장 유형을 미리 알지 못한 상태에서 사용자 정의 속성을 어떻게 읽을 수 있나요?

컬렉션을 인덱싱하여 DocumentProperty을(를) 가져오고(예: properties[name]), 해당 Type(은/는 PropertyType 값)인지 확인한 뒤, 그 Value에 대해 ToInt(), ToDouble(), ToDateTime(), 또는 ToBool()와 같은 일치하는 형식 접근자를 사용합니다.

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

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


API Reference 요약

클래스/메서드설명
Document.BuiltInDocumentPropertiesWord의 표준 메타데이터 필드(작성자, 제목, 통계, 보안 등)
Document.CustomDocumentProperties응용 프로그램 정의 명명된 메타데이터 속성
CustomDocumentProperties.Add(name, value)이름과 타입된 값을 사용하여 사용자 정의 속성을 추가합니다
CustomDocumentProperties.AddLinkToContent(name, linkSource)북마크된 문서 내용에 연결된 사용자 정의 속성을 추가합니다
DocumentPropertyCollection두 속성 컬렉션에 대한 공유 추상 기반
DocumentProperty단일 속성의 이름, 타입이 지정되지 않은 값, 및 PropertyType
DocumentProperty.ToInt() / ToDouble() / ToDateTime() / ToBool()속성 값에 대한 타입이 지정된 접근자
PropertyTypeDocumentProperty의 값 유형을 설명하는 열거형
DocumentSecurity문서 보호 상태를 나타내는 열거형, BuiltInDocumentProperties.Security을 통해

참조

 한국어