Cara Bekerja dengan Tautan dan Referensi Word di .NET
Panduan ini menunjukkan cara menyisipkan hyperlink, referensi silang ke bookmark, bidang nilai yang diminta, dan bidang kutipan dalam Aspose.Words FOSS for .NET, menggunakan FieldHyperlink, FieldRef, FieldPageRef, FieldCitation, dan link serta referensi lainnya Field subkelas dalam Aspose.Words.Fields namespace. Panduan ini mencakup penyisipan hyperlink sederhana, pembuatan bookmark dan referensi silang ke mereka, meminta nilai saat memperbarui bidang, serta mengutip sumber bibliografi.
Panduan Langkah demi Langkah
Langkah 1: Instal Paket
Aspose.Words FOSS for .NET belum mempublikasikan paket NuGet – bangun perpustakaan dari sumbernya saja. Kloning https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, lalu bangun Aspose.Words.sln dalam konfigurasi Release dengan SDK .NET dan referensikan assembly Aspose.Words yang dihasilkan dari proyek Anda. Perpustakaan menargetkan .NET Standard 2.0, sehingga berjalan pada .NET Framework 4.6.2+ dan .NET 6/8/10.
Langkah 2: Impor Kelas yang Diperlukan
Tambahkan arahan using Aspose.Words; untuk Document dan DocumentBuilder, serta arahan using Aspose.Words.Fields; untuk FieldHyperlink, FieldRef, FieldPageRef, FieldNoteRef, FieldStyleRef, FieldSet, FieldAsk, FieldFillIn, FieldCitation, FieldBibliography, dan kelas bidang lainnya yang dibahas dalam panduan ini.
Langkah 3: Sisipkan Tautan Hiper
Untuk tautan hiper yang sederhana, panggil DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark) – berikan isBookmark: false untuk target URL atau true untuk menautkan ke bookmark dalam dokumen yang sama. Turun ke pembuatan FieldHyperlink secara langsung ketika properti yang tidak diungkapkan oleh pintasan diperlukan: Address dan SubAddress menyimpan URL target atau lokasi dalam dokumen, ScreenTip mengatur tooltip saat mengarahkan, OpenInNewWindow dan IsImageMap adalah bendera tampilan, dan Target memberi nama pada frame peramban.
Langkah 4: Buat Bookmark untuk Referensi
Panggil DocumentBuilder.StartBookmark(bookmarkName) sebelum konten yang harus dicakup oleh bookmark, dan DocumentBuilder.EndBookmark(bookmarkName) setelahnya, dengan menggunakan nama yang sama untuk kedua pemanggilan. DocumentBuilder.MoveToBookmark(bookmarkName) memindahkan kursor ke bookmark yang sudah ada – berguna untuk menavigasi ke lokasi sebelum menyisipkan bidang referensi silang di dekatnya.
Langkah 5: Sisipkan Referensi Silang ke Bookmark Itu
FieldRef (bidang REF), FieldPageRef (PAGEREF), dan FieldNoteRef (NOTEREF) masing-masing mengacu pada konten pada bookmark yang dinamai melalui properti BookmarkName mereka. Atur InsertHyperlink agar referensi dapat diklik, dan InsertRelativePosition untuk melaporkan posisi relatif (“di atas” / “di bawah”) alih-alih teks yang direferensikan itu sendiri. FieldRef juga mendukung opsi penomoran paragraf — InsertParagraphNumber, InsertParagraphNumberInFullContext, InsertParagraphNumberInRelativeContext, NumberSeparator — dan IncludeNoteOrComment. FieldStyleRef (STYLEREF) mengacu pada paragraf terdekat yang diformat dengan StyleName tertentu alih-alih bookmark, dengan SearchFromBottom untuk mencari mundur dari posisi bidang. FieldSet (SET) mendefinisikan nilai teks yang dibookmark — BookmarkName dan BookmarkText — yang dapat diresolusikan oleh bidang REF di tempat lain.
Langkah 6: Minta Nilai Selama Pembaruan
FieldAsk (ASK) dan FieldFillIn (FILLIN) meminta nilai dari siapa pun yang memperbarui bidang: set PromptText ke teks yang ditampilkan kepada pengguna, DefaultResponse untuk nilai cadangan, dan PromptOnceOnMailMerge untuk membatasi permintaan berulang selama penggabungan surat. FieldAsk selain itu menyimpan jawabannya di BookmarkName sehingga bidang lain dapat merujuknya. Untuk pembaruan bidang tanpa pengawasan, berikan jawaban secara programatik alih-alih meminta secara interaktif; lihat panduan bidang untuk antarmuka panggilan balik yang melakukan ini.
Langkah 7: Referensi Konten Eksternal atau Tertaut
FieldDde (DDE) dan FieldDdeAuto (DDEAUTO) menautkan ke konten di aplikasi lain melalui ProgId, SourceFullName, dan SourceItem, dengan InsertAsText, InsertAsHtml, InsertAsPicture, InsertAsRtf, InsertAsUnicode, dan InsertAsBitmap memilih representasi yang disisipkan, dan AutoUpdate / IsLinked mengontrol perilaku penyegaran. FieldLink (LINK) adalah setara OLE-link, menambahkan FormatUpdateType. FieldImport (IMPORT) dan FieldIncludePicture (INCLUDEPICTURE) menarik grafik eksternal melalui SourceFullName dan GraphicFilter. FieldInclude (INCLUDE) dan FieldIncludeText (INCLUDETEXT) menarik konten dokumen eksternal, dengan BookmarkName untuk menentukan jangkauan yang disertakan dan LockFields untuk mencegahnya disegarkan; FieldIncludeText juga mendukung sumber XML melalui Encoding, MimeType, NamespaceMappings, XPath, dan XslTransformation.
Langkah 8: Referensi Blok Bangunan dan Entri Glosarium
FieldAutoText (AUTOTEXT), FieldAutoTextList (AUTOTEXTLIST), dan FieldGlossary (GLOSSARY) semuanya merujuk ke entri blok-bangunan bernama melalui EntryName; FieldAutoTextList menambahkan ListStyle dan ScreenTip untuk presentasi gaya-daftar-nya.
Langkah 9: Sisipkan Bidang Sitasi dan Bibliografi
FieldCitation (CITATION) dan FieldBibliography (BIBLIOGRAPHY) menampilkan konten yang bersumber dari data bibliografi dokumen. Atur FieldCitation.SourceTag (atau alternatifnya AnotherSourceTag) untuk mengidentifikasi sumber mana yang dikutip, dan gunakan Prefix, Suffix, PageNumber, VolumeNumber, dan Suppress* bendera (SuppressAuthor, SuppressTitle, SuppressYear) untuk mengontrol bagaimana sitasi diformat. FieldBibliography.SourceTag, FilterLanguageId, dan FormatLanguageId mengontrol sumber mana yang muncul dalam bibliografi yang dihasilkan dan dalam bahasa apa. Bidang ini hanya akan dirender dengan benar setelah cocoknya Source rekaman ada – lihat panduan bibliografi untuk membuatnya.
Masalah Umum dan Solusi
Bidang REF, PAGEREF, atau NOTEREF menunjukkan hasil kesalahan The BookmarkName targetnya tidak ada dalam dokumen. Buat bookmark dengan DocumentBuilder.StartBookmark() / EndBookmark() sebelum memperbarui bidang.
ASK atau FILLIN field menghalangi pembaruan tanpa pengawasan Tidak ada callback yang ditetapkan untuk menyediakan jawaban secara programatik. Tetapkan callback pembaruan bidang yang dijelaskan dalam panduan bidang, atau setel DefaultResponse pada bidang sehingga memiliki nilai cadangan.
Bidang CITATION atau BIBLIOGRAPHY menampilkan kosong The SourceTag tidak cocok dengan apa pun Source dalam data bibliografi dokumen. Tambahkan yang cocok Source – lihat panduan bibliografi.
Bidang DDE, DDEAUTO, atau LINK tidak menyegarkan Bidang-bidang ini merujuk ke sumber OLE eksternal yang tidak tersedia di luar konteks Windows/OLE asli. Perlakukan hasil yang disimpan pada bidang sebagai nilai terakhir yang diketahui dalam situasi tersebut.
Hyperlink yang disisipkan dengan InsertHyperlink kehilangan properti yang saya butuhkan DocumentBuilder.InsertHyperlink() adalah pintasan yang tidak menampilkan semua FieldHyperlink properti. Bangun atau ambil FieldHyperlink langsung untuk mengatur properti seperti ScreenTip or IsImageMap.
Pertanyaan yang Sering Diajukan
Apa perbedaan antara FieldRef dan FieldStyleRef?
FieldRef mengarah ke konten pada bookmark bernama (BookmarkName); FieldStyleRef justru mengarah ke paragraf terdekat yang diformat dengan StyleName tertentu, terlepas dari bookmark.
Bagaimana cara saya menyisipkan hyperlink sederhana tanpa membuat Field secara manual?
Panggil DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark).
Apakah kelas field tautan dan referensi ini berada di ruang nama terpisah dari field lainnya?
Tidak – FieldHyperlink, FieldRef, FieldCitation, dan kelas-kelas lainnya yang dibahas di sini adalah subclass Field biasa dalam ruang nama Aspose.Words.Fields, ruang nama yang sama digunakan untuk setiap tipe field lainnya.
Bagaimana field kutipan berhubungan dengan model data bibliografi?
FieldCitation and FieldBibliography render konten dengan mencari SourceTag terhadap Source rekaman yang dijelaskan dalam panduan bibliografi – kelas bidang ini menangani rendering, sementara Source and Contributor kelas menyimpan data yang mendasari.
Bagaimana cara saya membuat bookmark sebelum merujuknya?
Panggil DocumentBuilder.StartBookmark(bookmarkName) sebelum konten, dan DocumentBuilder.EndBookmark(bookmarkName) setelahnya, dengan menggunakan nama yang sama untuk kedua pemanggilan.