Bekerja dengan Sections
Bekerja dengan Seksi
Dokumen Word dibagi menjadi satu atau lebih bagian, masing-masing dengan pengaturan halaman, margin, header, dan footer sendiri. Aspose.Words FOSS untuk .NET mewakili sebuah bagian sebagai Section node, yang berisi sebuah Body dan, secara opsional, header dan footer, serta sebuah PageSetup yang mengontrol tata letaknya. Halaman ini membahas model objek bagian, pengaturan halaman, header dan footer, serta tata letak teks multi-kolom.
Model Objek Seksi
Document.Sections mengembalikan sebuah SectionCollection – setiap Section dalam dokumen, masing-masing sebuah CompositeNode dan bagian dari pohon node. Sebuah Section berisi satu Body (sebuah Story yang menyimpan paragraf dan tabel utama seksi) dan, bila ada, node HeaderFooter yang dapat dijangkau melalui Section.HeadersFooters, sebuah HeaderFooterCollection. Document.FirstSection dan Document.LastSection memberikan akses langsung ke seksi batas. Section.AppendContent(), PrependContent(), dan ClearContent() memanipulasi konten tubuh seksi secara massal, sementara ClearHeadersFooters() dan DeleteHeaderFooterShapes() menghapus konten header/footer.
Membuat Seksi dan Pemisah Seksi
DocumentBuilder.InsertBreak(BreakType) menyisipkan pemisah pada kursor; BreakType mencakup SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage, dan SectionBreakOddPage untuk memulai seksi baru, bersama dengan nilai non-seksi PageBreak, ColumnBreak, LineBreak, dan ParagraphBreak. DocumentBuilder.MoveToSection() memindahkan kursor ke awal tubuh seksi tertentu. PageSetup.SectionStart membaca atau menetapkan tipe pemisah SectionStart yang tercatat pada seksi yang ada.
Pengaturan Halaman
Section.PageSetup adalah sebuah PageSetup yang mencakup dimensi halaman dan margin (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation dan PaperSize, serta batas halaman per sisi (Borders, BorderAppliesTo via PageBorderAppliesTo, BorderDistanceFrom via PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). Penomoran baris dikontrol oleh LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText, dan LineStartingNumber. PageSetup.ClearFormatting() mengatur ulang ke default.
Header dan Footer
Section.HeadersFooters adalah sebuah HeaderFooterCollection dengan accessor bertipe – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – bersama dengan GetByHeaderFooterType(), Add(), dan LinkToPrevious(). Setiap HeaderFooter adalah sebuah Story (seperti Body) yang diidentifikasi oleh HeaderFooterType dan ditandai IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter dan PageSetup.OddAndEvenPagesHeaderFooter mengontrol apakah Word mengharapkan varian header/footer halaman pertama dan halaman genap digunakan sama sekali.
Kolom Teks Berganda
PageSetup.TextColumns mengembalikan sebuah TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) dengan SetCount() untuk menata isi bagian dalam beberapa kolom. Kolom individu adalah instance TextColumn (Width, SpaceAfter) setelah koleksi diisi dengan lebih dari satu kolom.
Tips dan Praktik Terbaik
- Pemutus bagian membawa pemformatan untuk bagian yang follows itu – mengatur
PageSetupproperti padaSectionyang baru saja Anda buat (setelahInsertBreak) memengaruhi konten yang muncul setelah jeda, bukan sebelum itu. - Gunakan
SectionBreakContinuousketika Anda hanya membutuhkan perubahan pengaturan halaman (misalnya, beralih ke teks berkolom ganda) tanpa memulai halaman baru; gunakanSectionBreakNewPageketika bagian baru harus selalu dimulai pada halaman baru. HeaderFooterCollection.LinkToPrevious()menghubungkan kembali header/footer sebuah bagian untuk mewarisi konten bagian sebelumnya – lakukan ini sebelum menulis konten header/footer baru jika Anda ingin bagian baru dimulai secara independen dari yang sebelumnya.PageSetup.DifferentFirstPageHeaderFooterdanOddAndEvenPagesHeaderFooterhanya berlaku jika varianHeaderFooterTypeyang sesuai (HeaderFirst,HeaderEven, dan seterusnya) memang ada diSection.HeadersFooters– aktifkan flag dan tambahkan header/footer yang sesuai bersama-sama.Section.Bodydan setiapHeaderFooteradalah instanceStoryyang terpisah –Range.Fields, bookmark, dan operasi lain yang berskala rentang padaBodybagian tidak secara otomatis menjangkau header dan footernya.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Pengaturan halaman bagian baru tidak sesuai dengan yang saya atur | PageSetup diatur pada instance Section yang salah | Atur PageSetup pada bagian yang follows pemisahannya, bukan yang sebelumnya |
| Konten header/footer dari bagian sebelumnya secara tak terduga muncul di bagian baru | Header/footer pada bagian baru masih terhubung ke bagian sebelumnya | Panggil HeaderFooterCollection.LinkToPrevious(false) (atau tambahkan konten header/footer yang berbeda) untuk memutuskan tautannya |
| Header/footer halaman pertama atau halaman genap diabaikan | DifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter adalah false, atau varian HeaderFooterType yang cocok tidak ada | Setel flag pada PageSetup dan pastikan varian header/footer yang bersesuaian ada |
| Tata letak multi-kolom tidak berlaku | TextColumns.SetCount() dipanggil dengan jumlah 1, atau pada PageSetup bagian yang salah | Panggil SetCount() dengan lebih dari satu kolom pada PageSetup.TextColumns bagian target |
FAQ
Bagaimana cara memulai bagian baru tanpa memulai halaman baru?
Sisipkan jeda SectionBreakContinuous dengan DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).
Bagaimana cara memberi sebuah bagian margin dan orientasi sendiri?
Sisipkan pemisah bagian, lalu atur properti pada PageSetup – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation, dan PaperSize.
Bagaimana cara membuat halaman pertama suatu bagian menggunakan header yang berbeda?
Atur PageSetup.DifferentFirstPageHeaderFooter = true pada bagian itu, dan tambahkan HeaderFooter berjenis HeaderFirst (dan FooterFirst, jika diperlukan) ke koleksi HeadersFooters-nya.
Bagaimana cara menata teks isi bagian dalam dua kolom?
Panggil PageSetup.TextColumns.SetCount(2) pada bagian tersebut, lalu sesuaikan Spacing dan EvenlySpaced / nilai TextColumn.Width individu sesuai kebutuhan.
API Reference Ringkasan
| Kelas / Enum | Deskripsi |
|---|---|
Section | Node bagian; Body, HeadersFooters, PageSetup |
SectionCollection | Setiap Section dalam dokumen, melalui Document.Sections |
Body / Story | Kontainer konten utama untuk bagian (Body) atau header/footer (HeaderFooter) |
PageSetup | Dimensi halaman, margin, orientasi, batas, dan kolom untuk sebuah bagian |
HeaderFooter / HeaderFooterCollection | Konten header/footer dan accessor bertipe untuk sebuah bagian |
HeaderFooterType | Mengidentifikasi varian header/footer (primary, first, even) mana yang dimiliki oleh HeaderFooter |
TextColumn / TextColumnCollection | Tata letak teks multi-kolom untuk sebuah bagian |
PaperSize / Orientation / Margins | Ukuran halaman, orientasi, dan nilai margin yang telah ditetapkan |
PageBorderAppliesTo / PageBorderDistanceFrom | Halaman mana yang dicetak dengan batas halaman, dan tepi referensinya |
SectionStart / BreakType | Jenis pemisah bagian yang dicatat pada sebuah bagian, dan jenis pemisahan yang diterima oleh DocumentBuilder.InsertBreak() |
LineNumberRestartMode | Ketika penomoran baris otomatis dimulai kembali di dalam sebuah bagian |