빌딩 블록
빌딩 블록
이 가이드는 .NET용 Aspose.Words FOSS와 함께 문서의 용어집 문서에 저장된 재사용 가능한 콘텐츠 빌딩 블록을 읽고 수정하는 방법을 보여줍니다. 라이브러리는 Document.GlossaryDocument 및 BuildingBlock/BuildingBlockCollection 객체 모델을 통해 AutoText 항목, 표지, 머리글, 바닥글 및 유사한 미리 정의된 콘텐츠를 노출합니다.
용어집 문서
모든 Document은 Document.GlossaryDocument를 통해 접근 가능한 GlossaryDocument을 가지고 있으며, 이는 빌딩 블록을 보유한 DocumentBase 하위 클래스 자체입니다. 그 BuildingBlocks 속성은 BuildingBlockCollection를 반환하고, FirstBuildingBlock/LastBuildingBlock은 리스트의 양 끝에 빠르게 접근할 수 있게 합니다. GetBuildingBlock(gallery, category, name)을 사용하여 특정 빌딩 블록을 조회하면, 해당 BuildingBlockGallery, 카테고리 문자열 및 이름이 함께 일치합니다.
빌딩 블록 구조
BuildingBlock은 CompositeNode이며, 따라서 자체 콘텐츠 트리 — Sections (a SectionCollection), FirstSection, 및 LastSection — 를 보유합니다. 이는 Document이 섹션을 보유하는 방식과 동일합니다. 메타데이터 속성은 이를 식별하고 분류합니다: Name, Guid, Description, Category, Gallery (a BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks, 및 수십 개 이상의 미리 정의된 갤러리), Type (a BuildingBlockType), 그리고 Behavior (a BuildingBlockBehavior of Content, Paragraph, 또는 Page)은 삽입될 때 해당 내용이 문서에 어떻게 병합되는지를 제어합니다.
빌딩 블록 컬렉션 관리
BuildingBlockCollection은 전체 컬렉션 편집을 지원합니다: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node), 및 IndexOf(node), 그리고 읽기를 위해 ToArray()과 GetEnumerator()도 함께 사용할 수 있습니다. NodeCollection이기 때문에, 빌딩 블록은 문서 트리의 다른 부분과 동일한 노드 API를 사용하여 구성, 복제 및 이동될 수 있습니다.
플레이스홀더 텍스트 빌딩 블록
구조화된 문서 태그는 빌딩 블록을 플레이스홀더 콘텐츠로 참조할 수 있습니다: StructuredDocumentTag.Placeholder과 StructuredDocumentTagRangeStart.Placeholder은 모두 태그가 비어 있을 때 표시되는 BuildingBlock를 반환하며, 이는 공유된 IStructuredDocumentTag.Placeholder 속성을 통해 이루어집니다.
팁 및 모범 사례
GetBuildingBlock(gallery, category, name)의 세 인수를 신중히 일치시켜야 합니다 — 동일한 이름이 다른 갤러리나 카테고리에도 존재할 수 있습니다.- 이름만으로 모든 빌딩 블록을 검색하는 대신,
BuildingBlockGallery을 사용하여 찾고 있는 재사용 가능한 콘텐츠 종류(AutoText,CoverPage,Tables,Watermarks등)를 필터링하세요. BuildingBlockBehavior은 삽입된 콘텐츠가 주변 문서와 어떻게 병합되는지(Content,Paragraph, 또는Page)를 결정합니다 — 빌딩 블록이 기대한 방식으로 삽입될 것이라고 가정하기 전에 이를 확인하세요.BuildingBlock이CompositeNode이므로, 내용을 구축하거나 편집할 때 다른 노드 서브트리와 같이 취급하십시오 —AppendChild,InsertAfter및 유사한 노드 메서드가 모두 적용됩니다.
일반적인 문제
| 문제 | 원인 | 수정 |
|---|---|---|
GetBuildingBlock() 반환값이 없습니다 | 갤러리, 카테고리 또는 이름이 기존 빌딩 블록과 정확히 일치하지 않음 | 정확한 Gallery/Category/Name 조합을 찾기 위해 GlossaryDocument.BuildingBlocks을 열거하십시오 |
| 삽입된 빌딩 블록 내용이 예기치 않게 병합됩니다 | Behavior (Content/Paragraph/Page)가 고려되지 않음 | 삽입하기 전에 BuildingBlock.Behavior을 확인하여 병합 방식이 어떻게 되는지 이해하십시오 |
| 구조화된 문서 태그 자리표시자가 예상된 내용을 표시하지 않습니다 | Placeholder이(가) 예상과 다른 BuildingBlock을 가리킵니다 | 어떤 빌딩 블록이 실제로 참조되는지 확인하려면 StructuredDocumentTag.Placeholder을 읽으십시오 |
FAQ
문서에서 빌딩 블록은 어디에 저장되어 있나요?
문서의 GlossaryDocument에 있으며, Document.GlossaryDocument를 통해 접근할 수 있고, 그 BuildingBlocks 속성은 BuildingBlockCollection입니다.
특정 빌딩 블록, 예를 들어 AutoText 항목을 어떻게 찾나요?
일치하는 BuildingBlockGallery, 카테고리 및 이름을 사용하여 GlossaryDocument.GetBuildingBlock(gallery, category, name)를 호출합니다.
프로그래밍 방식으로 새로운 빌딩 블록을 추가할 수 있나요?
네 — BuildingBlockCollection는 NodeCollection이기 때문에 Add(node)와 Insert(index, node)를 지원합니다.
BuildingBlockBehavior은(는) 무엇을 제어합니까?
빌딩 블록이 삽입될 때 내용이 문서에 병합되는 방식 — Content로, 전체 Paragraph로, 또는 전체 Page로.
빌딩 블록은 구조화된 문서 태그의 자리표시자 텍스트와 어떻게 관련되어 있습니까?
StructuredDocumentTag.Placeholder (및 StructuredDocumentTagRangeStart.Placeholder)는 비어 있을 때 SDT의 자리표시자 콘텐츠를 제공하는 BuildingBlock를 반환합니다.
API Reference 요약
| 클래스 / 메서드 | 설명 |
|---|---|
Document.GlossaryDocument | 문서의 GlossaryDocument, 모든 빌딩 블록을 보유합니다 |
GlossaryDocument.BuildingBlocks | 모든 빌딩 블록의 BuildingBlockCollection |
GlossaryDocument.GetBuildingBlock() | 갤러리, 카테고리 및 이름으로 빌딩 블록을 조회합니다 |
BuildingBlock | 다음이 포함된 CompositeNode: Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | 빌딩 블록을 분류하는 열거형 |
StructuredDocumentTag.Placeholder | SDT의 자리 표시자 내용으로 사용되는 BuildingBlock |