Cara Bekerja dengan Sections di .NET

Cara Bekerja dengan Sections di .NET

Panduan ini menunjukkan cara membuat pemisah bagian, mengkonfigurasi pengaturan halaman, dan mengelola header, footer, serta tata letak multi-kolom dalam Aspose.Words FOSS for .NET, menggunakan Section and PageSetup kelas. Ini mencakup membaca bagian yang sudah ada dalam dokumen, memulai bagian baru dengan DocumentBuilder, mengkonfigurasi dimensi halaman dan margin, menambahkan variasi header dan footer, serta menata teks tubuh dalam beberapa kolom.

Panduan Langkah demi Langkah

Langkah 1: Instal Paket

Aspose.Words FOSS untuk .NET belum menerbitkan paket NuGet – bangun perpustakaan dari sumber sebagai gantinya. Kloning https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, lalu bangun Aspose.Words.sln dalam konfigurasi Release dengan .NET SDK dan referensikan assembly Aspose.Words yang dihasilkan dari proyek Anda. Perpustakaan ini menargetkan .NET Standard 2.0, sehingga dapat berjalan pada .NET Framework 4.6.2+ dan .NET 6/8/10.


Langkah 2: Impor Kelas yang Diperlukan

Tambahkan arahan using Aspose.Words; – Section, PageSetup, HeaderFooter, dan enum terkait yang digunakan dalam panduan ini semuanya berada langsung di namespace Aspose.Words bersama Document dan DocumentBuilder.


Langkah 3: Baca Bagian yang Sudah Ada dalam Dokumen

Document.Sections mengembalikan sebuah SectionCollection yang menampung setiap Section dalam dokumen, masing-masing sebuah CompositeNode yang juga merupakan bagian dari pohon node keseluruhan. Document.FirstSection dan Document.LastSection memberikan akses langsung ke bagian batas tanpa mengiterasi koleksi. Setiap Section berisi satu Body – dicapai dengan cara yang sama seperti Story lainnya – dan, bila ada, konten header dan footer yang dicapai melalui Section.HeadersFooters.


Langkah 4: Mulai Bagian Baru dengan Pemisah Bagian

Call DocumentBuilder.InsertBreak(BreakType) di kursor untuk memulai bagian baru. Berikan BreakType.SectionBreakNewPage ketika bagian baru harus selalu dimulai pada halaman baru, BreakType.SectionBreakContinuous ketika hanya perubahan pengaturan halaman yang diperlukan (misalnya, beralih ke teks multi-kolom) tanpa memaksa pemisah halaman, atau BreakType.SectionBreakNewColumn, SectionBreakEvenPage, dan SectionBreakOddPage untuk perilaku memulai bagian lain yang didukung Word. follows itu, jadi setel PageSetup properti pada yang baru Section – bukan yang sebelumnya – setelah jeda dimasukkan. DocumentBuilder.MoveToSection(sectionIndex) memindahkan kursor ke awal badan bagian tertentu, dan PageSetup.SectionStart membaca atau menyetel SectionStart tipe jeda yang sudah tercatat pada bagian yang ada.


Langkah 5: Konfigurasikan Dimensi Halaman dan Margin

Setiap Section.PageSetup adalah sebuah instance PageSetup. Atur PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin, dan Gutter untuk dimensi halaman dan margin, atau tetapkan preset Margins secara langsung ke PageSetup.Margins. Orientation dan PaperSize mengontrol orientasi halaman dan ukuran kertas. Tepi halaman dikonfigurasi dengan Borders (sebuah BorderCollection), BorderAppliesTo (PageBorderAppliesTo), BorderDistanceFrom (PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader, dan BorderSurroundsFooter. Panggil PageSetup.ClearFormatting() untuk mengatur ulang pengaturan halaman suatu bagian ke nilai default sebelum mengkonfigurasinya dari awal.


Langkah 6: Tambahkan dan Tautkan Header dan Footer

Section.HeadersFooters adalah sebuah HeaderFooterCollection dengan accessor bertipe – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – serta GetByHeaderFooterType() untuk pencarian oleh HeaderFooterType dan Add() untuk menambahkan yang baru. Setiap HeaderFooter adalah sebuah Story, ditandai IsHeader dan IsLinkedToPrevious. Aktifkan PageSetup.DifferentFirstPageHeaderFooter atau PageSetup.OddAndEvenPagesHeaderFooter sebelum menambahkan varian HeaderFirst/FooterFirst atau HeaderEven/FooterEven yang bersesuaian – flag dan varian hanya berpengaruh bersama-sama. Panggil HeaderFooterCollection.LinkToPrevious() untuk menyambungkan kembali header atau footer suatu bagian agar mewarisi konten bagian sebelumnya, atau untuk memutuskan tautannya sehingga bagian baru memulai dengan konten independen.


Langkah 7: Atur Teks Tubuh dalam Beberapa Kolom

PageSetup.TextColumns mengembalikan TextColumnCollection untuk bagian tersebut. Panggil SetCount() dengan jumlah kolom yang harus dialirkan teks tubuh, lalu sesuaikan EvenlySpaced, Spacing, LineBetween, dan Width untuk mengontrol cara kolom ditata. Setelah koleksi memiliki lebih dari satu kolom, masing-masing instance TextColumn menampilkan Width dan SpaceAfter mereka sendiri.


Langkah 8: Bersihkan atau Sunting Massal Konten Bagian

Section.AppendContent() dan PrependContent() menyalin konten tubuh bagian lain ke dalam bagian ini; ClearContent() mengosongkan tubuh bagian secara massal. ClearHeadersFooters() dan DeleteHeaderFooterShapes() membersihkan konten header dan footer di seluruh bagian tanpa menghapus bagian itu sendiri.

Masalah Umum dan Solusinya

Pengaturan halaman bagian baru tidak cocok dengan apa yang saya atur PageSetup diatur pada yang salah Section instance. Pemisah bagian membawa pemformatan untuk bagian yang mengikutinya – atur PageSetup pada bagian yang datang setelah InsertBreak(), bukan yang sebelumnya.

Konten Header atau footer dari bagian sebelumnya secara tak terduga muncul di bagian baru Header atau footer pada bagian baru masih terhubung ke bagian sebelumnya. Panggil HeaderFooterCollection.LinkToPrevious(false), atau tambahkan konten header/footer yang berbeda ke bagian baru, untuk memutuskan hubungannya.

Header/footer halaman pertama atau halaman genap diabaikan DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, atau yang cocok HeaderFooterType varian tidak ada di Section.HeadersFooters. Setel flag menjadi aktif PageSetup dan tambahkan varian header/footer yang sesuai bersama-sama.

Tata letak multi-kolom tidak berlaku TextColumns.SetCount() dipanggil dengan hitungan satu, atau pada bagian yang salah PageSetup. Panggil SetCount() dengan lebih dari satu kolom pada bagian target PageSetup.TextColumns.

Pemutus bagian disisipkan pada posisi dokumen yang salah DocumentBuilder.InsertBreak(BreakType) menyisipkan pada kursor saat ini dari builder. Gunakan DocumentBuilder.MoveToSection() atau anggota lain yang mengatur posisi kursor pada builder untuk menempatkan kursor sebelum memanggil InsertBreak().

Pertanyaan yang Sering Diajukan

Bagaimana cara memulai bagian baru tanpa memulai halaman baru?

Sisipkan pemisah SectionBreakContinuous dengan DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

Bagaimana cara memberi sebuah section margin dan orientasi tersendiri?

Sisipkan pemisah bagian, lalu atur TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation, dan PaperSize pada PageSetup bagian baru.

Bagaimana cara membuat halaman pertama sebuah bagian menggunakan header yang berbeda?

Setel PageSetup.DifferentFirstPageHeaderFooter = true pada bagian itu, dan tambahkan HeaderFooter berjenis HeaderFirst (dan FooterFirst, jika diperlukan) ke koleksi HeadersFooters-nya.

Bagaimana cara menata teks badan sebuah bagian dalam dua kolom?

Panggil PageSetup.TextColumns.SetCount(2) pada bagian tersebut, lalu sesuaikan Spacing, EvenlySpaced, atau nilai TextColumn.Width individual sesuai kebutuhan.

Bagaimana cara mengakses bagian pertama dan terakhir secara langsung?

Baca Document.FirstSection dan Document.LastSection alih-alih mengindeks ke Document.Sections.

Lihat Juga

 Bahasa Indonesia