.NET에서 섹션을 작업하는 방법
이 가이드는 섹션 구분을 만들고, 페이지 설정을 구성하며, 머리글, 바닥글 및 다중 열 레이아웃을 관리하는 방법을 보여줍니다 Aspose.Words FOSS for .NET, 사용하는 Section and PageSetup 클래스. 이 문서에 이미 존재하는 섹션을 읽고, 새로운 섹션을 시작하는 방법을 다룹니다 DocumentBuilder, 페이지 크기와 여백을 구성하고, 머리글 및 바닥글 변형을 추가하며, 본문 텍스트를 다중 열로 배치합니다.
단계별 가이드
1단계: 패키지 설치
Aspose.Words FOSS for .NET는 아직 NuGet 패키지를 배포하지 않으므로 대신 소스에서 라이브러리를 빌드하십시오. https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git를 복제한 다음 .NET SDK를 사용하여 Release 구성으로 Aspose.Words.sln을 빌드하고, 프로젝트에서 결과 Aspose.Words 어셈블리를 참조합니다. 이 라이브러리는 .NET Standard 2.0을 대상으로 하므로 .NET Framework 4.6.2+ 및 .NET 6/8/10에서 실행됩니다.
2단계: 필요한 클래스 가져오기
using Aspose.Words; 지시자를 추가하십시오 – Section, PageSetup, HeaderFooter 및 이 가이드에서 사용되는 관련 열거형은 모두 Document와 DocumentBuilder와 함께 Aspose.Words 네임스페이스에 직접 존재합니다.
3단계: 문서에 이미 있는 섹션 읽기
Document.Sections은(는) 문서의 모든 Section를 보유하는 SectionCollection을 반환하며, 각 Section는 전체 노드 트리의 일부인 CompositeNode입니다. Document.FirstSection와 Document.LastSection는 컬렉션을 반복하지 않고 경계 섹션에 직접 접근할 수 있게 합니다. 각 Section에는 하나의 Body가 포함되어 있으며—다른 Story와 동일한 방식으로 도달됩니다—그리고 존재할 경우 Section.HeadersFooters를 통해 헤더와 푸터 콘텐츠에 접근합니다.
4단계: 섹션 구분을 사용하여 새 섹션 시작하기
Call DocumentBuilder.InsertBreak(BreakType) 커서 위치에서 새로운 섹션을 시작합니다. Pass BreakType.SectionBreakNewPage 새 섹션이 항상 새 페이지에서 시작해야 할 때, BreakType.SectionBreakContinuous 페이지 설정만 변경하면 될 때(예: 다중 열 텍스트로 전환) 페이지 구분을 강제하지 않고, 또는 BreakType.SectionBreakNewColumn, SectionBreakEvenPage, 그리고 SectionBreakOddPage Word가 지원하는 다른 섹션 시작 동작에 대해. 섹션 구분은 해당 섹션에 대한 서식을 전달합니다 follows 그것을, 따라서 설정 PageSetup 새로운 것에 대한 속성 Section – 이전 것을 아니라 – 구분이 삽입된 후에. DocumentBuilder.MoveToSection(sectionIndex) 특정 섹션 본문의 시작으로 커서를 이동시키고 PageSetup.SectionStart 읽거나 설정합니다 SectionStart 기존 섹션에 이미 기록된 구분 유형.
5단계: 페이지 크기 및 여백 구성하기
각 Section.PageSetup는 PageSetup 인스턴스입니다. 페이지 크기와 여백을 설정하려면 PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin, Gutter를 지정하거나, Margins 프리셋을 직접 PageSetup.Margins에 할당합니다. Orientation와 PaperSize는 페이지 방향 및 용지 크기를 제어합니다. 페이지 테두리는 Borders(a BorderCollection), BorderAppliesTo(PageBorderAppliesTo), BorderDistanceFrom(PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader와 BorderSurroundsFooter 로 구성됩니다. PageSetup.ClearFormatting()를 호출하여 섹션의 페이지 설정을 처음부터 구성하기 전에 기본값으로 재설정합니다.
6단계: 머리글 및 바닥글 추가 및 연결하기
Section.HeadersFooters은(는) HeaderFooterCollection이며, 타입이 지정된 접근자 – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – 와 함께 GetByHeaderFooterType()을 제공하여 HeaderFooterType와 Add()으로 새 항목을 조회하고 추가할 수 있습니다. 각 HeaderFooter은 Story이며, IsHeader 및 IsLinkedToPrevious 플래그가 설정되어 있습니다. 해당 HeaderFirst/FooterFirst 또는 HeaderEven/FooterEven 변형을 추가하기 전에 PageSetup.DifferentFirstPageHeaderFooter 또는 PageSetup.OddAndEvenPagesHeaderFooter을 활성화하십시오—플래그와 변형은 함께 있을 때만 효과를 발휘합니다. HeaderFooterCollection.LinkToPrevious()을 호출하여 섹션의 머리글이나 바닥글을 이전 섹션의 내용과 연결하거나, 새 섹션이 독립적인 내용으로 시작하도록 연결을 해제합니다.
Step 7: 본문 텍스트를 여러 열로 배치
PageSetup.TextColumns은(는) 해당 섹션에 대한 TextColumnCollection을 반환합니다. 본문 텍스트가 흐를 열 개수를 SetCount()에 전달하고, 이후 EvenlySpaced, Spacing, LineBetween, Width을 조정하여 열 배치를 제어합니다. 컬렉션에 열이 하나 이상 포함되면 개별 TextColumn 인스턴스가 자체 Width 및 SpaceAfter를 노출합니다.
Step 8: 섹션 콘텐츠를 지우거나 일괄 편집
Section.AppendContent()와 PrependContent()은(는) 다른 섹션의 본문 콘텐츠를 이 섹션으로 복사합니다; ClearContent()는 섹션의 본문을 일괄적으로 비웁니다. ClearHeadersFooters()와 DeleteHeaderFooterShapes()는 섹션 자체를 제거하지 않고 헤더 및 푸터 콘텐츠를 전체적으로 삭제합니다.
일반적인 문제 및 해결책
새 섹션의 페이지 설정이 내가 설정한 것과 일치하지 않습니다 PageSetup 잘못된 위치에 설정되었습니다 Section 인스턴스. 섹션 구분은 그 뒤에 오는 섹션의 서식을 전달합니다 – 설정 PageSetup 다음 섹션에 InsertBreak(), 이전 섹션이 아니라.
이전 섹션의 헤더 또는 푸터 내용이 새 섹션에 예기치 않게 나타납니다. 새 섹션의 헤더 또는 푸터가 아직 이전 섹션과 연결되어 있습니다. Call HeaderFooterCollection.LinkToPrevious(false), 또는 새 섹션에 별도의 헤더/푸터 내용을 추가하여 연결을 끊으세요.
첫 페이지 또는 짝수 페이지 헤더/푸터는 무시됩니다 DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, 또는 일치하는 HeaderFooterType 변형이 존재하지 않습니다 Section.HeadersFooters. 플래그를 설정하십시오 PageSetup 그리고 해당 헤더/푸터 변형을 함께 추가하십시오.
다중 열 레이아웃이 적용되지 않습니다 TextColumns.SetCount() 카운트가 하나인 상태로 호출되었거나, 잘못된 섹션의 PageSetup. 호출하십시오 SetCount() 대상 섹션에 열이 두 개 이상인 경우 PageSetup.TextColumns.
섹션 구분이 잘못된 문서 위치에 삽입되었습니다 DocumentBuilder.InsertBreak(BreakType) 빌더의 현재 커서에 삽입됩니다. 사용 DocumentBuilder.MoveToSection() 또는 빌더의 다른 커서 위치 지정 멤버를 사용하여 호출하기 전에 커서를 위치시킵니다 InsertBreak().
자주 묻는 질문
새 페이지를 시작하지 않고 새 섹션을 시작하려면 어떻게 해야 하나요?
DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous)으로 SectionBreakContinuous 구분을 삽입하십시오.
섹션에 고유한 여백과 방향을 지정하려면 어떻게 해야 하나요?
섹션 구분을 삽입한 다음, 새 섹션의 PageSetup에 TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation, 그리고 PaperSize를 설정하십시오.
섹션의 첫 페이지에서 다른 헤더를 사용하려면 어떻게 해야 하나요?
PageSetup.DifferentFirstPageHeaderFooter = true을(를) 해당 섹션에 설정하고, HeadersFooters 컬렉션에 HeaderFirst 유형의 HeaderFooter(을/를) 추가합니다(필요한 경우 FooterFirst도 추가).
섹션 본문 텍스트를 두 열로 배치하려면 어떻게 해야 하나요?
섹션에 PageSetup.TextColumns.SetCount(2)을(를) 호출한 다음, 필요에 따라 Spacing, EvenlySpaced 또는 개별 TextColumn.Width 값을 조정합니다.
첫 번째와 마지막 섹션에 직접 접근하려면 어떻게 해야 하나요?
Document.Sections에 인덱싱하는 대신 Document.FirstSection와 Document.LastSection을 읽습니다.