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
PageSetupcác thuộc tính trên mộtSectionbạn vừa tạo (sauInsertBreak) ả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
SectionBreakContinuouskhi 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ụngSectionBreakNewPagekhi đ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.DifferentFirstPageHeaderFootervàOddAndEvenPagesHeaderFooterchỉ có hiệu lực nếu các biến thểHeaderFooterTypetương ứng (HeaderFirst,HeaderEven, v.v.) thực sự tồn tại trongSection.HeadersFooters– bật cờ và thêm phần đầu/cuối tương ứng cùng nhau.Section.Bodyvà mỗiHeaderFooterlà các thể hiệnStoryriêng biệt –Range.Fields, dấu trang và các thao tác phạm vi khác trênBodycủ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ân | Khắ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ập | PageSetup đã được đặt trên đối tượng Section sai | Cà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ới | Header/footer của phần mới vẫn được liên kết với phần trước | Gọ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ỏ qua | DifferentFirstPageHeaderFooter / 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ụng | TextColumns.SetCount() được gọi với số đếm là 1, hoặc trên PageSetup của phần sai | Gọ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 / Enum | Mô tả |
|---|---|
Section | Một nút phần; Body, HeadersFooters, PageSetup |
SectionCollection | Mỗi Section trong tài liệu, thông qua Document.Sections |
Body / Story | Bộ chứa nội dung chính cho một phần (Body) hoặc tiêu đề/chân trang (HeaderFooter) |
PageSetup | Kích thước trang, lề, hướng, viền và cột cho một phần |
HeaderFooter / HeaderFooterCollection | Nội dung tiêu đề/chân trang và các accessor có kiểu cho một phần |
HeaderFooterType | Xác định biến thể header/footer (primary, first, even) của HeaderFooter |
TextColumn / TextColumnCollection | Bố cục văn bản đa cột cho một phần |
PaperSize / Orientation / Margins | Kích thước trang, hướng và các giá trị lề đã cài sẵn |
PageBorderAppliesTo / PageBorderDistanceFrom | Các trang mà viền trang được in, và cạnh tham chiếu của nó |
SectionStart / BreakType | Loạ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 |
LineNumberRestartMode | Khi đánh số dòng tự động bắt đầu lại trong một phần |