Geçiş Alanlarıyla .NET'de Nasıl Çalışılır

Geçiş Alanlarıyla .NET'de Nasıl Çalışılır

Transitional Fields ile .NET içinde Nasıl Çalışılır

Aspose.Words .NET için FOSS, daha eski Word alan türleri grubunu — barkod alanları ve bir avuç Open-XML öncesi uyumluluk alanı — özel sınıflar aracılığıyla temsil eder Aspose.Words.Fields namespace, gayri resmi olarak adlandırılan transitional alanlar burada. Bu kılavuz, bunları nasıl bulacağınızı, okuyacağınızı ve yapılandıracağınızı gösterir. Her geçiş alan sınıfı temel sınıftan türetilir. Field tip, genel tipin yanında Field tarafından açığa çıkarılan nesne Document.Range.Fields.


Adım Adım Kılavuz

Adım 1: Bir Belgede Geçiş Alanlarını Bulun

Document.Range.Fields‘ı enumerate edin ve her alanın Type‘ini (bir FieldType değeri) ilgili sabitlerle — FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef veya FieldInfo — karşılaştırın, ardından genel Field‘ı eşleşen sınıfa dönüştürerek özel özelliklerine erişin. Dönüştürmeden önce her zaman Type‘i kontrol edin: yanlış alan sınıfına dönüştürme bir InvalidCastException fırlatır.


Adım 2: DISPLAYBARCODE veya MERGEBARCODE Alanını Yapılandırın

FieldDisplayBarcode (DISPLAYBARCODE alanı) ve FieldMergeBarcode (MERGEBARCODE alanı, aynı zamanda posta birleştirme için IMergeFieldSurrogate uygular) aynı barkod-konfigürasyon özellikleri kümesini paylaşır: BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar ve FixCheckDigit. Bu özellikleri alan örneğine ayarlayın, ardından Update() çağırın, böylece Result belgenin kaydedilmeden önce yeni konfigürasyonu yansıtır.


Adım 3: Eski BARCODE (Posta) Alan Verilerini Oku

FieldBarcode, daha eski BARCODE alanını uygular; bu özellikle bir genel amaçlı barkod yerine ABD posta barkodu (POSTNET) alanıdır — Step 2’deki BarcodeType/BarcodeValue özelliklerini paylaşmaz. Bunun yerine PostalAddress (barkodun kodladığı adres), FacingIdentificationMark, IsUSPostalAddress ve IsBookmark öğelerini ortaya çıkarır. Bu özellikleri okumadan önce Field.Type‘i FieldType.FieldBarcode‘a karşı özellikle kontrol edin; çünkü bir DISPLAYBARCODE veya MERGEBARCODE alanını FieldBarcode‘ye dönüştürmek, beklediğiniz özellikleri ortaya çıkarmaz.


Adım 4: Özel Bir Üreteç ile Barkod Görüntülerini Oluştur

Bu FOSS sürümü barkod alan verilerini taşır ancak bir barkod render motoru içermez. BarcodeParameters, barkod-alanı ailesinden — Step 2’deki DISPLAYBARCODE/MERGEBARCODE özellikleri ve Step 3’teki posta özellikleri — ayarları tek bir nesnede birleştirerek bir renderlayıcıya ileten geçiş konteyneridir. Gerçek görüntü renderlamasını sağlamak için IBarcodeGenerator‘i uygulayın, GetBarcodeImage(parameters) ve eski GetOldBarcodeImage(parameters)‘i ortaya çıkararak; bir uygulama sağlanmadığı sürece barkod alanları yalnızca konfigürasyon verisi taşır.


Adım 5: Eski Uyumluluk Alanlarıyla Çalışma

Dört başka sınıf, eski .docx dosyalarında hâlâ bulunan eski alan kodlarını kapsar. FieldBidiOutline, sağdan sola anahat numaralandırması için BIDIOUTLINE alanını uygular ve ortak Field yüzeyinin ötesinde hiçbir özellik ortaya çıkarmaz. FieldEQ, EQ denklem alanını uygular ve ayrıca içeriğini bir OfficeMath nesnesine dönüştürmek için AsOfficeMath()‘yı ortaya çıkarır — bu yalnızca alan gerçekten bir denklem kodladığında başarılı olur. FieldFootnoteRef, bir dipnot veya sonnot işaretine çapraz referans veren FOOTNOTEREF alanını uygular ve ortak Field yüzeyinin ötesinde başka özellik ortaya çıkarmaz. FieldInfo, INFO alanını uygular, belge özet-bilgi özelliğini InfoType ve NewValue özellikleri aracılığıyla okur veya yazar.


Adım 6: Geçiş Alanının Değerini Güncelle veya Dondur

Her geçiş alan sınıfı GetFieldCode() (alanın temel kod metni), Update() (sonucu yeniden değerlendirir), Unlink() (alanı son hesaplanmış sonucunu statik metin olarak değiştirir) ve Remove() (alanı siler) miras alır. Update() öğesini bir alanın yapılandırması değiştirildikten sonra çağırın, böylece Result değişikliği yansıtır, ve Unlink() öğesini bir alanın mevcut değeri yeniden hesaplanabilir kalmak yerine dondurulması gerektiğinde kullanın.


Yaygın Sorunlar ve Çözümler

InvalidCastException when casting a Field geçiş alan sınıfına. Yanlış FieldType varsayıldı. Kontrol edin Field.Type eşleşenle karşılaştır. FieldType dönüştürmeden önce sabiti.

A DISPLAYBARCODE/MERGEBARCODE Alan özellikleri dönüştürmeden sonra eksik. Alan şu şeye dönüştürüldü FieldBarcode yerine FieldDisplayBarcode/FieldMergeBarcode (veya tersine) — bu sınıflar üçü de barkod verisi temsil etse de farklı özellik setleri sunar. Onaylayın Field.Type dönüştürmeden önce.

Barkod alanları veri taşır ancak görüntü oluşturulmaz. Hayır IBarcodeGenerator uygulama sağlandı. Uygulayan özel bir jeneratör sağlayın GetBarcodeImage(parameters) — bu sürüm yerleşik bir barkod renderleme motoru içermez.

FieldEQ.AsOfficeMath() beklenmeyen sonuçlar döndürür. Alan geçerli bir denklem talimatı içermiyor. Alanın GetFieldCode() dönüşüm denenmeden önce çıktıyı.

FieldInfo’s değeri ayarlandıktan sonra güncellenmiyor NewValue. Alan değişiklikten sonra yenilenmedi. Çağır Update() alan üzerinde değişiklik yaptıktan sonra NewValue.


Sıkça Sorulan Sorular

Bu alan türleri için “transitional” ne anlama geliyor?

Bu resmi Word terminolojisi değildir — bu, bu edisyonun Aspose.Words.Fields ad alanındaki alan sınıflarını, eski alan kodlarını (barcode fields and pre-Open-XML compatibility fields) kendi güçlü-tipli sınıflarıyla uygulayan, sadece genel Field nesnesiyle ele alınmak yerine gruplayan bir yapıdır.

FieldBarcode, FieldDisplayBarcode ile aynı özellikleri kullanıyor mu?

Hayır. FieldBarcode, eski BARCODE (postal/POSTNET) alanını uygular ve PostalAddress, FacingIdentificationMark, IsUSPostalAddress ve IsBookmark öğelerini ortaya çıkarır. FieldDisplayBarcode ve FieldMergeBarcode, farklı bir özellik kümesini paylaşır — BarcodeType, BarcodeValue, SymbolHeight ve ilgili render ayarları.

Bu edisyon barkod görüntülerini oluşturuyor mu?

Hayır. FieldBarcode, FieldDisplayBarcode ve FieldMergeBarcode barkod yapılandırma verilerini tutar ve IBarcodeGenerator arayüzünü sunar, ancak bu edisyon içinde hiçbir barkod render motoru bulunmaz — bir görüntü üretmek için özel bir IBarcodeGenerator uygulaması gereklidir.

Bir EQ alanını OfficeMath denkleme dönüştürebilir miyim?

Evet, FieldEQ.AsOfficeMath() aracılığıyla, alanın kodu gerçekten bir denklem kodluyorsa.

Bir belgede tüm geçiş alanlarını nasıl bulabilirim?

Numaralandır Document.Range.Fields ve her Field.Type‘ı ilgili FieldType sabitleri (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo) ile karşılaştır.


Ayrıca Bakınız

 Türkçe