텍스트 작업
텍스트 작업
Word 문서의 텍스트는 Run 노드(같은 글꼴 서식을 공유하는 연속된 문자)로 구성되며, 이들은 Paragraph 노드 안에 그룹화됩니다. Aspose.Words .NET용 FOSS는 두 가지를 직접 제공하고, 문자 서식을 위한 Font, 단락 수준 서식을 위한 ParagraphFormat, 그리고 트리의 어느 부분이든 텍스트를 읽거나 교체하기 위한 Range을 제공합니다. 이 가이드는 실행과 글꼴, 단락 서식, 텍스트 읽기 및 교체, 주석, 그리고 단락 수준 목록 서식을 다룹니다.
런 및 문자 서식
A Run은(는) 하나의 서식 집합을 공유하는 텍스트 구간을 나타냅니다; 그 Text 속성은 순수 텍스트 내용을 보관하고, 그 Font 속성( Font 객체)은 문자 수준 서식을 보관합니다 — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, StrikeThrough 등 다수. Font.ClearFormatting()는 실행의 글꼴을 기본값으로 재설정합니다. 단락의 실행은 그 Runs 속성을 통해 접근할 수 있으며, 이는 RunCollection입니다.
단락 및 단락 서식
Paragraph은(는) 하나의 단락에 포함된 실행(및 기타 인라인 콘텐츠)을 담고 있는 복합 노드입니다; 문서 또는 본문의 단락은 ParagraphCollection(Body.Paragraphs)으로 노출됩니다. Paragraph.ParagraphFormat( ParagraphFormat 객체)는 단락 수준 레이아웃을 제어합니다 — Alignment, 들여쓰기(LeftIndent, RightIndent, FirstLineIndent), 간격(SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule), 그리고 페이지 매김 동작(KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting()은(는) 이를 기본값으로 재설정하고, Paragraph.JoinRunsWithSameFormatting()은(는) 동일한 서식을 가진 인접 실행을 병합합니다.
범위를 사용한 텍스트 읽기 및 교체
내용을 포함하는 모든 노드 — Document, Section, Paragraph, 또는 Run — 는 Range를 노출합니다. Range.Text는 해당 범위 내 모든 내용의 순수 텍스트를 반환하고, Range.Replace(pattern, replacement)은 그 범위에만 국한된 찾기 및 바꾸기를 수행하므로 예를 들어 문서의 나머지 부분을 건드리지 않고 한 단락 안의 텍스트를 교체할 수 있습니다. Range.Delete()은 해당 범위의 내용을 완전히 제거합니다.
Comments
Comment 노드는 텍스트 내 위치에 댓글을 고정합니다; new Comment(doc, author, initial, dateTime)으로 하나를 만들고 SetText(text)로 본문 텍스트를 설정한 뒤, 다른 노드와 마찬가지로 문서에 삽입합니다. Comment.AddReply(author, initial, dateTime, text)은 스레드형 답글을 붙이고, RemoveReply(reply) / RemoveAllReplies()는 이를 제거합니다. 문서의 댓글은 CommentCollection에 모아집니다.
단락 수준의 목록 서식
Paragraph.ListFormat ( ListFormat 객체) 은 단락이 목록의 일부인지 여부를 보고하고 제어합니다: IsListItem와 ListLevelNumber은 현재 상태를 보고하고, ApplyBulletDefault()와 ApplyNumberDefault()는 단락을 기본 글머리표 또는 번호 매기기 목록 항목으로 전환하며, ListIndent() / ListOutdent()은 목록 중첩 수준을 변경하고, RemoveNumbers()은 다시 일반 단락으로 되돌립니다.
팁 및 모범 사례
- 텍스트를 빌더로 작성하기 전에
DocumentBuilder.Font에 글꼴 속성을 설정하고, 텍스트를 먼저 작성한 뒤 개별Run객체를 다시 서식 지정하는 대신에. Range.Replace의 적용 범위를 실제로 변경하고자 하는 부분을 포함하는 가장 작은 범위로 제한하세요 — 변경이 문서 전체에 적용되지 않아야 할 경우 전체 문서 대신Paragraph또는Section의 범위에 호출합니다.- 프로그래밍 방식의 일련의 편집 후에
Paragraph.JoinRunsWithSameFormatting()를 호출하여 불필요하게 단편화된 실행 구조를 방지하십시오. - 내장 기본값이 충분할 때 목록 정의를 수동으로 구성하는 대신
ListFormat.ApplyBulletDefault()/ApplyNumberDefault()를 사용하여 빠른 기본 목록을 만드세요. Comment.AddReply결과를Comment노드 자체로 읽으세요 — 응답은 일반 문자열이 아니라 전체 댓글 객체입니다.
일반적인 문제
| 문제 | 원인 | 해결 |
|---|---|---|
Run의 Font을(를) 포맷팅해도 인접 텍스트는 시각적으로 변경되지 않습니다. | 인접 텍스트는 자체 Font 인스턴스를 가진 다른 Run에 있습니다. | 영향을 받은 모든 Run를 찾아 포맷팅하거나, 쓰기 전에 DocumentBuilder.Font를 통해 포맷팅을 설정하십시오. |
Range.Replace가 의도된 영역 외부의 텍스트를 변경합니다. | Replace가 더 좁은 노드 범위가 아니라 Document.Range에 호출되었습니다. | 특정 Paragraph, Section 또는 다른 노드의 Range에 Replace를 호출합니다 |
단락은 목록 항목처럼 보이지만 IsListItem는 false입니다 | 글머리표/번호는 수동 텍스트이며 실제 목록 서식이 아닙니다 | 타이핑한 문자 대신 ListFormat.ApplyBulletDefault() 또는 ApplyNumberDefault()를 사용하여 실제 목록 서식을 적용합니다 |
문서에 예상보다 훨씬 많은 Run 노드가 있습니다 | 반복적인 작은 편집으로 인해 run이 분리되고 다시 합쳐지지 않습니다 | 편집 배치 후에 Paragraph.JoinRunsWithSameFormatting()를 호출합니다 |
FAQ
Run와 Paragraph의 차이점은 무엇인가요?
Run는 하나의 문자 서식 집합(Font)을 공유하는 텍스트 구간입니다; Paragraph는 하나 이상의 실행(및 기타 인라인 콘텐츠)과 단락 수준 서식(ParagraphFormat)을 포함하는 복합 노드입니다.
문서 또는 섹션의 모든 텍스트를 어떻게 읽을 수 있나요?
그 노드의 Range의 Text 속성을 읽으세요 — 예를 들어, document.Range.Text 또는 section.Range.Text.
한 단락에서만 텍스트를 찾고 바꾸려면 어떻게 해야 하나요?
Document.Range이 아니라 그 Paragraph의 Range에 Replace(pattern, replacement)를 호출하세요.
문서에 주석을 추가하려면 어떻게 해야 하나요?
new Comment(doc, author, initial, dateTime)로 생성하고, SetText(text)으로 텍스트를 설정한 뒤 트리에 삽입하세요; Comment.AddReply(author, initial, dateTime, text)로 응답하세요.
단락을 글머리표 목록 항목으로 바꾸려면 어떻게 해야 하나요?
그 단락의 ListFormat에 ApplyBulletDefault()를 호출하고; 번호 매기기 목록을 원한다면 ApplyNumberDefault()를 사용하세요.
API Reference 요약
| 클래스/메서드 | 설명 |
|---|---|
Run | 하나의 문자 서식 집합을 공유하는 텍스트 구간. |
Font | 문자 수준 서식 — 이름, 크기, 굵게, 기울임, 색상 등. |
Paragraph | 하나의 단락에 대한 실행 및 서식을 포함하는 복합 노드. |
ParagraphFormat | 단락 수준 서식 — 정렬, 들여쓰기, 간격, 페이지 매김. |
ParagraphCollection | Paragraph 노드의 형식이 지정된 컬렉션, 예: Body.Paragraphs. |
Range | 문서의 연속된 영역; Text, Replace, 및 Delete를 지원합니다. |
Comment | 텍스트 내 위치에 고정된 스레드형 댓글. |
CommentCollection | 문서의 댓글 컬렉션. |
ListFormat | 단락이 목록에 참여하는지와 그 방식을 제어합니다. |