Bidang Transisional
Bidang Transisional
Panduan ini menunjukkan cara bekerja dengan jenis bidang transisional — bidang kode batang warisan dan bidang kompatibilitas — di Aspose.Words FOSS untuk .NET.
Aspose.Words FOSS untuk .NET mewakili jenis bidang Word lama tertentu melalui sekumpulan kelas khusus dalam Aspose.Words.Fields namespace, yang secara informal disebut transitional fields. Ini adalah bidang yang ada sebelum padanan bidang Open XML yang lebih baru tetapi tetap valid di dalam .docx dokumen yang dibuka dari sumber warisan. Setiap tipe bidang transisional memiliki kelas bertipe kuatnya sendiri yang diturunkan dari Field, bersama dengan generik Field objek yang diekspos oleh Document.Range.Fields.
Bidang Kode Batang
Tiga kelas bidang menghasilkan atau menampilkan data kode batang di dalam dokumen: FieldBarcode (bidang BARCODE — kode batang pos warisan dengan properti PostalAddress, IsBookmark, FacingIdentificationMark, dan IsUSPostalAddress miliknya), FieldDisplayBarcode (bidang DISPLAYBARCODE), dan FieldMergeBarcode (bidang MERGEBARCODE, yang juga mengimplementasikan IMergeFieldSurrogate untuk digunakan selama penggabungan surat). FieldDisplayBarcode dan FieldMergeBarcode berbagi properti konfigurasi kode batang tujuan umum yang sama — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar, dan FixCheckDigit — properti yang tidak dimiliki oleh FieldBarcode.
Kelas BarcodeParameters adalah wadah pass-through yang mengekspos gabungan kedua set properti (properti alamat-pos dan properti konfigurasi kode batang umum), digunakan untuk menyerahkan pengaturan ke renderer kode batang, dan IBarcodeGenerator adalah antarmuka yang diimplementasikan oleh renderer khusus, mengekspos GetBarcodeImage(parameters) dan GetOldBarcodeImage(parameters) warisan. Iterasi Document.Range.Fields dan periksa Field.Type terhadap FieldType.FieldBarcode, FieldType.FieldDisplayBarcode, atau FieldType.FieldMergeBarcode untuk menemukan bidang ini, lalu cast ke kelas bidang spesifik — BarcodeValue dan BarcodeType hanya tersedia setelah casting ke FieldDisplayBarcode atau FieldMergeBarcode, bukan FieldBarcode.
Bidang Kompatibilitas Warisan
Empat kelas bidang tambahan mencakup kode bidang Word lama yang kurang umum dalam dokumen yang baru dibuat tetapi masih muncul dalam file .docx warisan: FieldBidiOutline (bidang BIDIOUTLINE, untuk penomoran outline kanan-ke-kiri), FieldEQ (bidang persamaan EQ, yang juga mengekspos AsOfficeMath() untuk mengonversi isinya menjadi objek OfficeMath), FieldFootnoteRef (bidang FOOTNOTEREF, yang merujuk silang ke tanda catatan kaki atau catatan akhir), dan FieldInfo (bidang INFO, yang membaca atau menulis properti informasi ringkasan dokumen melalui properti InfoType dan NewValuenya).
Setiap kelas bidang ini mewarisi antarmuka Field yang sama: GetFieldCode() mengembalikan teks kode dasar bidang, Update() mengevaluasi ulang hasil bidang, Unlink() menggantikan bidang dengan hasil perhitungan terakhirnya, dan Remove() menghapus bidang dari dokumen. IFieldCodeTokenInfoProvider diimplementasikan oleh FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, dan FieldInfo, karena kode bidang mereka membawa saklar terstruktur di luar string instruksi biasa.
Tips dan Praktik Terbaik
- Selalu periksa
Field.Typesebelum mengubah (cast)Fieldumum menjadi salah satu kelas bidang transisional — cast yang tidak tepat akan melemparInvalidCastException. - Panggil
Update()setelah mengubah properti bidang kode batang sehinggaResultmencerminkan konfigurasi baru sebelum dokumen disimpan. FieldEQ.AsOfficeMath()hanya berhasil ketika bidang EQ benar-benar menyandikan sebuah persamaan; verifikasiResultbidang terlihat seperti formula sebelum memanggilnya.- Gunakan
Unlink()ketika Anda ingin membekukan nilai saat ini dari sebuah bidang menjadi teks statis, menghilangkan kemampuan untuk menghitung ulangnya nanti. - Kelas bidang kode batang hanya membawa data — edisi FOSS ini tidak menyertakan mesin render kode batang, sehingga output
GetBarcodeImage()bergantung pada implementasiIBarcodeGeneratoryang Anda sediakan.
Masalah Umum
| Issue | Cause | Perbaiki |
|---|---|---|
InvalidCastException ketika melakukan casting sebuah Field | Salah FieldType diasumsikan | Periksa Field.Type terhadap konstanta FieldType yang cocok terlebih dahulu |
FieldEQ.AsOfficeMath() mengembalikan hasil yang tidak terduga | Field tidak berisi instruksi persamaan yang valid | Periksa output GetFieldCode() sebelum konversi |
| Bidang barcode tidak memiliki gambar yang dirender | Tidak ada implementasi IBarcodeGenerator yang disediakan | Berikan generator khusus yang mengimplementasikan GetBarcodeImage() |
Nilai FieldInfo tidak diperbarui setelah perubahan NewValue | Bidang tidak diperbarui | Panggil Update() pada bidang setelah memodifikasi NewValue |
FAQ
Apa arti “transitional” untuk tipe bidang ini?
Ini bukan terminologi resmi Word — ini mengelompokkan kelas bidang dalam namespace Aspose.Words.Fields edisi ini yang mengimplementasikan kode bidang lama (barcode dan bidang kompatibilitas pra-Open-XML) melalui kelas yang sangat bertipe sendiri alih-alih hanya ditangani melalui objek umum Field.
Apakah edisi ini merender gambar barcode?
Tidak. FieldBarcode, FieldDisplayBarcode, dan FieldMergeBarcode menyimpan data barcode dan mengekspos antarmuka IBarcodeGenerator, tetapi tidak ada mesin render barcode bawaan yang disertakan dalam edisi ini — Anda menyediakan implementasi IBarcodeGenerator Anda sendiri.
Bisakah saya mengonversi bidang EQ menjadi persamaan OfficeMath?
Ya, melalui FieldEQ.AsOfficeMath(), asalkan kode bidang benar-benar mengkodekan sebuah persamaan.
Bagaimana cara menemukan semua bidang transisional dalam dokumen?
Enumerasikan Document.Range.Fields dan bandingkan setiap Field.Type dengan konstanta FieldType yang relevan (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).
API Reference Ringkasan
| Kelas / Metode | Deskripsi |
|---|---|
FieldBarcode | Menerapkan bidang BARCODE |
FieldDisplayBarcode | Menerapkan bidang DISPLAYBARCODE |
FieldMergeBarcode | Menerapkan bidang MERGEBARCODE mail-merge barcode |
BarcodeParameters | Kontainer untuk pengaturan barcode yang diteruskan ke generator |
IBarcodeGenerator | Antarmuka untuk perender gambar kode batang khusus |
FieldBidiOutline | Menerapkan bidang BIDIOUTLINE |
FieldEQ | Menerapkan bidang persamaan EQ; AsOfficeMath() mengonversi menjadi OfficeMath |
FieldFootnoteRef | Menerapkan bidang FOOTNOTEREF |
FieldInfo | Menerapkan bidang properti dokumen INFO |