문서 정보
문서 정보
이 가이드는 Aspose.Words FOSS for .NET를 사용하여 문서 메타데이터를 읽고 쓰는 방법을 보여줍니다. 로드된 또는 새로 만든 모든 Document에는 내용과 함께 두 종류의 메타데이터가 포함됩니다: 고정된 내장 속성 집합(작성자, 제목, 단어 수 등)과 사용자가 직접 정의하는 개방형 사용자 지정 속성 집합입니다. Aspose.Words FOSS for .NET는 또한 문서 본문에 이 메타데이터를 표시하는 Word 필드—AUTHOR, COMMENTS, DOCPROPERTY—를 구현하므로 속성 값이 실시간으로 업데이트 가능한 텍스트로 나타날 수 있습니다.
내장 문서 속성
Document.BuiltInDocumentProperties은(는) 각 표준 Word 메타데이터 필드에 대해 하나의 속성을 가진 BuiltInDocumentProperties 컬렉션을 반환합니다: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime, 그리고 Pages, Words, Characters, CharactersWithSpaces, Paragraphs, Lines와 같은 통계 항목입니다. BuiltInDocumentProperties는 DocumentPropertyCollection에서 파생되었기 때문에 이름으로 조회할 수 있는 인덱서 Contains(), IndexOf()와 GetEnumerator()를 통한 열거를 지원합니다. 동일한 컬렉션이 순수 텍스트 입력을 처리할 때 PlainTextDocument.BuiltInDocumentProperties에서도 노출됩니다.
사용자 지정 문서 속성
Document.CustomDocumentProperties은(는) 애플리케이션이 자체적으로 정의하는 속성을 위한 CustomDocumentProperties 컬렉션을 반환합니다 — Word가 내장 세트와 함께 저장하는 임의의 이름/값 쌍입니다. Add(name, value)를 사용하여 속성을 추가할 수 있으며, 이는 속성이 가질 수 있는 값 유형에 대해 CustomDocumentProperties에 걸쳐 오버로드됩니다; 인덱서(예: properties[name])로 이름으로 속성을 가져오고, Remove(name), RemoveAt(index) 또는 Clear()로 항목을 제거합니다. AddLinkToContent(name, linkSource)은 값이 고정된 값으로 저장되는 대신 문서 내 책갈피나 범위에 연결된 속성을 생성합니다.
내장 또는 사용자 지정 컬렉션의 모든 항목은 DocumentProperty이며, Name, Value, Type을 노출합니다( PropertyType 값: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray, 또는 Other ). 또한 연결된 속성을 위한 IsLinkToContent와 LinkSource가 있습니다. DocumentProperty은 원하는 .NET 유형으로 기본 값을 가져오기 위한 ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()와 같은 변환 도우미를 제공합니다.
문서-정보 필드
세 Field 하위 클래스는 문서 본문 자체에 필드로 문서 메타데이터를 노출합니다: FieldAuthor (AUTHOR 필드이며, AuthorName 속성을 가짐), FieldComments (COMMENTS 필드이며, Text 속성을 가짐), 그리고 FieldDocProperty (DOCPROPERTY 필드로, 이름이 지정된 문서 속성(내장 또는 사용자 정의)을 문서에 읽어들입니다). 모든 Field와 마찬가지로, 이 세 개는 기본 Field 수명 주기를 공유합니다: GetFieldCode()은(는) 기본 필드 코드를 읽고, Result / DisplayResult은(는) 마지막 계산된 값을 읽으며, Update()은(는) 값을 다시 계산하고, Unlink()은(는) 필드를 정적 결과로 교체하며, Remove()은(는) 삭제합니다. DocumentBuilder.InsertField(fieldCode)을(를) 사용하여 문서-정보 필드를 삽입합니다 — 예를 들어 AUTHOR 또는 DOCPROPERTY "Company" 필드 코드를 사용할 수 있습니다 — 혹은 InsertField(fieldType, updateField) 오버로드를 사용하여 FieldType 값(예: FieldType.FieldAuthor, FieldType.FieldComments, FieldType.FieldDocProperty)을 지정합니다.
FieldDocProperty은(는) 바인딩된 문서 속성을 그대로 읽기 때문에, 기본 BuiltInDocumentProperties 또는 CustomDocumentProperties 값을 변경한 뒤 Update()을(를) 호출하거나 — 문서 전체의 모든 필드를 한 번에 새로 고치기 위해 Document.UpdateFields()을(를) 사용하면 — 새로운 값이 필드의 표시 결과에 전파됩니다.
팁 및 모범 사례
- 저장하기 전에
Title,Author,Subject와 같은 내장 속성을 설정하십시오 — Word 및 기타 프로그램은 문서 목록 및 검색 색인을 위해BuiltInDocumentProperties에서 이를 읽어들입니다. DocumentProperty.Type을(를) 사용하여 속성의PropertyType을 확인한 뒤 특정 변환 도우미(ToInt(),ToDateTime()등)를 호출하면, 직접 만든 것이 아닌 속성에서 발생할 수 있는 변환 불일치를 방지할 수 있습니다.AddLinkToContent()은(는) 고정값이 아니라 문서 내용(예: 책갈피 범위)과 맞춰 사용자 정의 속성을 동기화합니다 — 속성이 항상 현재 문서 내용을 반영해야 할 때 사용하십시오.- 문서 속성을 변경한 후
Document.UpdateFields()을(를) 호출하면, 문서 본문에 이미 존재하는FieldDocProperty,FieldAuthor,FieldComments필드가 새로운 값을 반영합니다. BuiltInDocumentProperties와CustomDocumentProperties은PlainTextDocument와Document에서도 모두 사용할 수 있으므로, 로드된 콘텐츠가 일반 텍스트일 때도 메타데이터가 라운드 트립됩니다.
일반적인 문제
| 문제 | 원인 | 수정 |
|---|---|---|
인덱서가 사용자 정의 속성에 대해 null을 반환합니다 | 해당 속성이 아직 추가되지 않았습니다 | 먼저 CustomDocumentProperties.Add(name, value)을 호출하고, 읽기 전에 Contains(name)을 확인하십시오 |
FieldDocProperty은 속성을 변경한 후 오래된 값을 표시합니다 | 필드가 새로 고쳐지지 않았습니다 | 필드에서 Update()를 호출하거나, 문서의 모든 필드를 새로 고치려면 Document.UpdateFields()를 사용하십시오. |
DocumentProperty.ToInt() / ToDateTime()가 예외를 발생시킵니다. | 속성의 실제 Type가 요청된 변환과 일치하지 않습니다. | 어떤 변환 도우미를 호출할지 선택하기 전에 DocumentProperty.Type를 확인하십시오. |
FAQ
내장 문서 속성과 사용자 정의 문서 속성의 차이점은 무엇인가요?
내장 속성(Document.BuiltInDocumentProperties)은 OOXML 형식에 의해 정의된 고정된 집합으로, Author, Title, Pages 등과 같습니다. 사용자 정의 속성(Document.CustomDocumentProperties)은 Add()를 사용하여 추가되는, 애플리케이션이 정의하는 개방형 이름/값 쌍 집합입니다.
고정값이 아니라 문서 내용을 추적하도록 사용자 정의 속성을 설정하려면 어떻게 해야 하나요?
정적 값을 저장하는 대신 속성 값을 문서의 책갈피나 범위에 연결하는 CustomDocumentProperties.AddLinkToContent(name, linkSource)을(를) 사용하십시오.
문서 속성을 업데이트하면 이를 표시하는 필드가 자동으로 업데이트됩니까?
아니요 — 특정 필드에 Update()을 호출하거나 Document.UpdateFields()을 사용하여 문서의 모든 필드를 다시 계산합니다. 여기에는 FieldDocProperty, FieldAuthor, 및 FieldComments 인스턴스가 포함됩니다.
일반 텍스트 문서에서 문서 속성을 읽을 수 있나요?
예. PlainTextDocument은 Document와 동일한 BuiltInDocumentProperties 및 CustomDocumentProperties 속성을 제공합니다.
API Reference 요약
| 클래스 / 메서드 | 설명 |
|---|---|
Document.BuiltInDocumentProperties | 표준 OOXML 메타데이터 컬렉션 (Author, Title, Pages 등). |
Document.CustomDocumentProperties | 응용 프로그램이 정의한 이름/값 속성 컬렉션 |
CustomDocumentProperties.Add() / 이름별 인덱서 / AddLinkToContent() | 사용자 정의 속성을 추가, 검색하거나 콘텐츠 링크 |
DocumentProperty | 단일 속성 항목; Value, Type, 및 ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() 변환 도우미 |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS, 및 DOCPROPERTY 필드; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | 필드 코드를 사용하거나 FieldType 로 필드를 삽입합니다. |