Cara Bekerja dengan Indeks dan Tabel Word di .NET
Cara Bekerja dengan Indeks dan Tabel Word di .NET
Panduan ini menunjukkan cara menyisipkan dan membangun struktur referensi berbasis bidang yang digunakan dokumen Word untuk merangkum kontennya — daftar isi, indeks alfabet, dan tabel otoritas — dengan Aspose.Words FOSS untuk .NET. Masing-masing dikompilasi dari bidang penanda di tempat lain dalam dokumen: FieldToc mengompilasi entri berbasis heading dan entri yang ditandai FieldTC, FieldIndex mengompilasi penanda FieldXE, dan FieldToa mengompilasi sitasi FieldTA. Setiap kelas bidang dalam keluarga ini diturunkan dari tipe dasar Field dalam ruang nama Aspose.Words.Fields.
Panduan Langkah demi Langkah
Langkah 1: Sisipkan Daftar Isi
Panggil DocumentBuilder.InsertTableOfContents(switches) pada posisi dimana TOC harus muncul, dengan memberikan string saklar-bidang gaya Word — misalnya "\o \"1-3\" \h \z \u" — untuk mengontrol level heading yang disertakan dan bagaimana hasilnya diformat, saklar yang sama yang ditulis Word ketika TOC disisipkan melalui UI-nya. Ini menyisipkan sebuah FieldToc, yang juga mengekspos struktur yang sama secara langsung sebagai properti: HeadingLevelRange/EntryLevelRange untuk level outline yang disertakan, InsertHyperlinks, PreserveTabs/PreserveLineBreaks, dan BookmarkName. Untuk tabel gambar alih-alih daftar isi, atur TableOfFiguresLabel atau CaptionlessTableOfFiguresLabel pada FieldToc yang sama.
Langkah 2: Tandai Entri Daftar Isi Kustom
Tidak setiap entri yang harus dimasukkan dalam TOC berasal dari gaya heading. Sisipkan FieldTC pada lokasi tertentu untuk menandainya sebagai entri TOC yang independen dari gaya paragraf: FieldTC.Text adalah teks entri, EntryLevel adalah tingkat outline tempat entri tersebut muncul, dan OmitPageNumber menekan nomor halaman untuk entri itu. Ketika sebuah dokumen membutuhkan lebih dari satu TOC — misalnya TOC utama dan tabel gambar terpisah — atur FieldTC.TypeIdentifier agar cocok dengan EntryIdentifier dari FieldToc yang harus mengumpulkannya.
Langkah 3: Buat Indeks dari Entri yang Ditandai
Tandai setiap lokasi yang termasuk dalam indeks dengan FieldXE, mengatur Text menjadi teks entri; EntryType mengelompokkan entri ke dalam sub-level menggunakan sintaks yang dipisahkan tanda titik dua, dan PageRangeBookmarkName menandai bookmark yang jangkauannya menjadi rentang halaman dalam indeks alih-alih nomor halaman tunggal. FieldIndex mengompilasi setiap penanda FieldXE dalam dokumen menjadi hasil alfabetik — atur Heading untuk menyisipkan pemisah judul huruf (A, B, C…), LetterRange untuk membatasi indeks pada bagian alfabet, dan RunSubentriesOnSameLine untuk mengontrol tata letak sub-entri. PageNumberSeparator, PageRangeSeparator, SequenceSeparator, dan CrossReferenceSeparator mengontrol tanda baca antara entri dan referensi halamannya. Gaya visual indeks bawaan Word tersedia sebagai enum FieldIndexFormat (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).
Langkah 4: Buat Tabel Otoritas dari Kutipan
Tandai setiap kutipan dalam teks dengan FieldTA: LongCitation dan ShortCitation menyimpan teks kutipan, EntryCategory mengelompokkannya di bawah judul seperti “Cases” atau “Statutes”, dan IsBold/IsItalic mengontrol formatnya. FieldToa mengompilasi kutipan-kutipan tersebut ke dalam sebuah tabel — EntryCategory memilih kategori yang akan dikompilasi, UseHeading mengontrol apakah judul kategori muncul, UsePassim menerapkan konvensi “passim” untuk sumber yang dikutip berkali-kali, dan PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting mengontrol tata letak.
Langkah 5: Segarkan Field Setelah Dokumen Berubah
TOC, indeks, atau tabel otoritas tidak memperbarui dirinya sendiri ketika konten di sekitarnya berubah. Panggil Update() pada field tertentu — misalnya FieldToc.Update() — untuk menghitung ulang hasilnya, atau FieldToc.UpdatePageNumbers() ketika hanya bagian nomor halaman yang perlu disegarkan. Untuk menyegarkan semua field dalam dokumen sekaligus bukan satu per satu, panggil Document.UpdateFields(). Ingat bahwa nomor halaman dalam hasil dari field ini dievaluasi sebagai nilai placeholder dalam edisi ini, karena tata letak halaman dan pagination tidak termasuk di dalamnya.
Langkah 6: Sertakan Entri dari Dokumen Lain
Masukkan FieldRD untuk membuat TOC, indeks, atau tabel otoritas menarik entri dari file lain saat dikompilasi. FieldRD.FileName memberi nama dokumen yang dirujuk, dan IsPathRelative mengontrol apakah jalur tersebut diselesaikan relatif terhadap dokumen saat ini. Tambahkan satu FieldRD untuk setiap dokumen tambahan dan perbarui bidang kompilasi setelahnya sehingga hasil gabungan mencakup konten yang dirujuk.
Masalah Umum dan Solusinya
Daftar isi tidak menyertakan judul yang diharapkan. String saklar TOC (atau HeadingLevelRange) mengecualikan level outline tersebut. Sesuaikan saklar yang diberikan ke InsertTableOfContents, atau atur FieldToc.HeadingLevelRange langsung.
Entri indeks tidak muncul di tempat yang diharapkan. Penanda yang bersangkutan FieldXE penanda tidak ada, atau. EntryType sintaks sub-level tidak cocok dengan apa FieldIndex mengharapkan. Konfirmasikan FieldXE penanda ada dan EntryType nilainya diformat secara konsisten.
Hasil Field terlihat usang setelah mengedit konten. Field tidak diperbarui setelah penyuntingan. Panggil Update() pada field tertentu, atau Document.UpdateFields() untuk menyegarkan semua field sekaligus.
Entri dari dokumen lain tidak termasuk saat dikompilasi. Tidak FieldRD merujuk bahwa dokumen tersebut ada, atau IsPathRelative tidak cocok dengan cara jalur harus diselesaikan. Tambahkan sebuah FieldRD dengan yang benar FileName and IsPathRelative pengaturan.
Pertanyaan yang Sering Diajukan
Bagaimana cara menyisipkan daftar isi secara programatis?
Panggil DocumentBuilder.InsertTableOfContents(switches) dengan string switch bergaya Word, seperti "\o \"1-3\" \h \z \u", pada posisi di mana TOC harus muncul.
Bagaimana cara menandai teks sebagai entri indeks?
Sisipkan bidang FieldXE di lokasi itu dengan properti Text diatur ke teks entri; FieldIndex mengompilasi semua penanda FieldXE dalam dokumen menjadi hasil indeks.
Apa perbedaan antara FieldTC dan entri TOC berbasis heading?
Perilaku TOC default Word mengumpulkan entri dari paragraf menggunakan gaya heading. FieldTC menandai lokasi arbitrer sebagai entri TOC yang independen dari gaya paragraf, yang dapat dimasukkan oleh FieldToc melalui pencocokan nilai EntryIdentifier/TypeIdentifier.
Bagaimana cara memperbarui TOC atau indeks setelah dokumen berubah?
Panggil Update() pada bidang spesifik (atau UpdatePageNumbers() pada FieldToc hanya untuk nomor halaman), atau Document.UpdateFields() untuk menyegarkan setiap bidang dalam dokumen.
Apakah TOC atau indeks dapat dikompilasi lintas beberapa dokumen?
Ya — sisipkan FieldRD yang mengarah ke setiap dokumen tambahan melalui FileName. Bidang kompilasi (FieldToc, FieldIndex, atau FieldToa) mencakup entri dari dokumen yang dirujuk setelah diperbarui.