Làm việc với Sections

Làm việc với các Phần

Một tài liệu Word được chia thành một hoặc nhiều phần, mỗi phần có cài đặt trang, lề, đầu trang và chân trang riêng. Aspose.Words FOSS cho .NET biểu diễn một phần dưới dạng Section nút, chứa một Body và, tùy chọn, đầu trang và chân trang, cộng với một PageSetup điều khiển bố cục của nó. Trang này đề cập đến mô hình đối tượng phần, cài đặt trang, đầu trang và chân trang, và bố cục văn bản đa cột.


Mô hình Đối tượng Phần

Document.Sections trả về một SectionCollection – mỗi Section trong tài liệu, mỗi là một CompositeNode và là một phần của cây nút. Một Section chứa một Body (một Story chứa các đoạn văn và bảng chính của phần) và, nếu có, các nút HeaderFooter có thể truy cập được thông qua Section.HeadersFooters, một HeaderFooterCollection. Document.FirstSection và Document.LastSection cung cấp quyền truy cập trực tiếp tới các phần biên. Section.AppendContent(), PrependContent(), và ClearContent() thao tác nội dung thân phần một cách hàng loạt, trong khi ClearHeadersFooters() và DeleteHeaderFooterShapes() xóa nội dung header/footer.


Tạo các Phần và Ngắt Phần

DocumentBuilder.InsertBreak(BreakType) chèn một ngắt tại con trỏ; BreakType bao gồm SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage, và SectionBreakOddPage để bắt đầu một phần mới, cùng với các giá trị không phải phần PageBreak, ColumnBreak, LineBreak, và ParagraphBreak. DocumentBuilder.MoveToSection() di chuyển con trỏ tới đầu thân của một phần cụ thể. PageSetup.SectionStart đọc hoặc thiết lập loại ngắt SectionStart được ghi trên một phần hiện có.


Cài đặt Trang

Section.PageSetup là một thể hiện PageSetup bao phủ kích thước trang và lề (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation và PaperSize, và viền trang theo mỗi bên (Borders, BorderAppliesTo qua PageBorderAppliesTo, BorderDistanceFrom qua PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). Đánh số dòng được kiểm soát bởi LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText, và LineStartingNumber. PageSetup.ClearFormatting() đặt lại về mặc định.


Đầu trang và Chân trang

Section.HeadersFooters là một HeaderFooterCollection với các accessor kiểu – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – cùng với GetByHeaderFooterType(), Add(), và LinkToPrevious(). Mỗi HeaderFooter là một Story (như Body) được xác định bằng HeaderFooterType và được gắn cờ IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter và PageSetup.OddAndEvenPagesHeaderFooter kiểm soát việc Word có mong đợi các biến thể đầu/trang đầu tiên và đầu/trang chẵn được sử dụng hay không.


Nhiều cột văn bản

PageSetup.TextColumns trả về một TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) với SetCount() để bố trí thân phần trong nhiều cột. Các cột riêng lẻ là các thể hiện TextColumn (Width, SpaceAfter) một khi bộ sưu tập được lấp đầy với hơn một cột.


Mẹo và Thực hành tốt nhất

  • Một ngắt phần mang định dạng cho phần mà follows nó – thiết lập PageSetup các thuộc tính trên một Section bạn vừa tạo (sau InsertBreak) ảnh hưởng đến nội dung xuất hiện sau dấu ngắt, không phải trước nó.
  • Sử dụng SectionBreakContinuous khi bạn chỉ cần thay đổi cài đặt trang (ví dụ, chuyển sang văn bản đa cột) mà không khởi tạo trang mới; sử dụng SectionBreakNewPage khi đoạn mới luôn phải bắt đầu trên một trang mới.
  • HeaderFooterCollection.LinkToPrevious() kết nối lại phần đầu/cuối của một phần để kế thừa nội dung của phần trước – thực hiện việc này trước khi viết nội dung phần đầu/cuối mới nếu bạn muốn phần mới bắt đầu độc lập so với phần trước nó.
  • PageSetup.DifferentFirstPageHeaderFooter và OddAndEvenPagesHeaderFooter chỉ có hiệu lực nếu các biến thể HeaderFooterType tương ứng (HeaderFirst, HeaderEven, v.v.) thực sự tồn tại trong Section.HeadersFooters – bật cờ và thêm phần đầu/cuối tương ứng cùng nhau.
  • Section.Body và mỗi HeaderFooter là các thể hiện Story riêng biệt – Range.Fields, dấu trang và các thao tác phạm vi khác trên Body của phần không tự động lan tới phần đầu và phần cuối của nó.

Các vấn đề thường gặp

Vấn đềNguyên nhânKhắc phục
Cài đặt trang của phần mới không khớp với những gì tôi đã thiết lậpPageSetup đã được đặt trên đối tượng Section saiCài đặt PageSetup trên phần mà follows điểm ngắt, không phải phần trước đó
Nội dung Header/footer từ phần trước xuất hiện bất ngờ trong một phần mớiHeader/footer của phần mới vẫn được liên kết với phần trướcGọi HeaderFooterCollection.LinkToPrevious(false) (hoặc thêm nội dung Header/footer riêng) để tách chúng
Header/footer trang đầu hoặc trang chẵn bị bỏ quaDifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter là false, hoặc biến thể HeaderFooterType tương ứng không tồn tạiĐặt cờ trên PageSetup và đảm bảo biến thể header/footer tương ứng có mặt
Bố cục đa cột không áp dụngTextColumns.SetCount() được gọi với số đếm là 1, hoặc trên PageSetup của phần saiGọi SetCount() với hơn một cột trên PageSetup.TextColumns của phần mục tiêu

FAQ

Làm sao để bắt đầu một phần mới mà không bắt đầu một trang mới?

Chèn một lần ngắt SectionBreakContinuous với DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

Làm sao để cho một phần có lề và hướng riêng của nó?

Chèn một ngắt đoạn, sau đó đặt các thuộc tính cho PageSetup – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation, và PaperSize của đoạn mới.

Làm sao để trang đầu tiên của một đoạn sử dụng một tiêu đề khác?

Đặt PageSetup.DifferentFirstPageHeaderFooter = true cho đoạn đó, và thêm một HeaderFooter loại HeaderFirst (và FooterFirst, nếu cần) vào bộ sưu tập HeadersFooters của nó.

Làm sao để bố trí văn bản nội dung của một đoạn thành hai cột?

Gọi PageSetup.TextColumns.SetCount(2) trên đoạn, sau đó điều chỉnh Spacing và EvenlySpaced / các giá trị TextColumn.Width riêng lẻ theo nhu cầu.


API Reference Tóm tắt

Lớp / EnumMô tả
SectionMột nút phần; Body, HeadersFooters, PageSetup
SectionCollectionMỗi Section trong tài liệu, thông qua Document.Sections
Body / StoryBộ chứa nội dung chính cho một phần (Body) hoặc tiêu đề/chân trang (HeaderFooter)
PageSetupKích thước trang, lề, hướng, viền và cột cho một phần
HeaderFooter / HeaderFooterCollectionNội dung tiêu đề/chân trang và các accessor có kiểu cho một phần
HeaderFooterTypeXác định biến thể header/footer (primary, first, even) của HeaderFooter
TextColumn / TextColumnCollectionBố cục văn bản đa cột cho một phần
PaperSize / Orientation / MarginsKích thước trang, hướng và các giá trị lề đã cài sẵn
PageBorderAppliesTo / PageBorderDistanceFromCác trang mà viền trang được in, và cạnh tham chiếu của nó
SectionStart / BreakTypeLoại ngắt đoạn được ghi lại trên một phần, và các loại ngắt DocumentBuilder.InsertBreak() được chấp nhận
LineNumberRestartModeKhi đánh số dòng tự động bắt đầu lại trong một phần

Xem thêm

 Tiếng Việt