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.Type sebelum mengubah (cast) Field umum menjadi salah satu kelas bidang transisional — cast yang tidak tepat akan melempar InvalidCastException.
  • Panggil Update() setelah mengubah properti bidang kode batang sehingga Result mencerminkan konfigurasi baru sebelum dokumen disimpan.
  • FieldEQ.AsOfficeMath() hanya berhasil ketika bidang EQ benar-benar menyandikan sebuah persamaan; verifikasi Result bidang 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 implementasi IBarcodeGenerator yang Anda sediakan.

Masalah Umum

IssueCausePerbaiki
InvalidCastException ketika melakukan casting sebuah FieldSalah FieldType diasumsikanPeriksa Field.Type terhadap konstanta FieldType yang cocok terlebih dahulu
FieldEQ.AsOfficeMath() mengembalikan hasil yang tidak terdugaField tidak berisi instruksi persamaan yang validPeriksa output GetFieldCode() sebelum konversi
Bidang barcode tidak memiliki gambar yang direnderTidak ada implementasi IBarcodeGenerator yang disediakanBerikan generator khusus yang mengimplementasikan GetBarcodeImage()
Nilai FieldInfo tidak diperbarui setelah perubahan NewValueBidang tidak diperbaruiPanggil 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 / MetodeDeskripsi
FieldBarcodeMenerapkan bidang BARCODE
FieldDisplayBarcodeMenerapkan bidang DISPLAYBARCODE
FieldMergeBarcodeMenerapkan bidang MERGEBARCODE mail-merge barcode
BarcodeParametersKontainer untuk pengaturan barcode yang diteruskan ke generator
IBarcodeGeneratorAntarmuka untuk perender gambar kode batang khusus
FieldBidiOutlineMenerapkan bidang BIDIOUTLINE
FieldEQMenerapkan bidang persamaan EQ; AsOfficeMath() mengonversi menjadi OfficeMath
FieldFootnoteRefMenerapkan bidang FOOTNOTEREF
FieldInfoMenerapkan bidang properti dokumen INFO

Lihat Juga

 Bahasa Indonesia