.NET में ट्रांज़िशनल फ़ील्ड्स के साथ कैसे काम करें

.NET में ट्रांज़िशनल फ़ील्ड्स के साथ कैसे काम करें

.NET में ट्रांज़िशनल फ़ील्ड्स के साथ कैसे काम करें

Aspose.Words FOSS for .NET पुराने Word फ़ील्ड प्रकारों के एक समूह को दर्शाता है — बारकोड फ़ील्ड और कुछ प्री-Open-XML संगतता फ़ील्ड — समर्पित क्लासों के माध्यम से in the Aspose.Words.Fields namespace, अनौपचारिक रूप से कहा जाता है transitional fields here. यह गाइड दिखाता है कि उन्हें कैसे खोजें, पढ़ें और कॉन्फ़िगर करें। प्रत्येक ट्रांज़िशनल फ़ील्ड क्लास बेस से व्युत्पन्न होती है Field type, साथ ही generic Field object जिसे उजागर किया गया है द्वारा Document.Range.Fields.


कदम-दर-कदम गाइड

स्टेप 1: दस्तावेज़ में ट्रांज़िशनल फ़ील्ड्स खोजें

Document.Range.Fields को एन्‍युमरेट करें और प्रत्येक फ़ील्ड के Type (एक FieldType मान) की तुलना संबंधित स्थिरांक — FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, या FieldInfo — से करें, फिर सामान्य Field को मिलते-जुलते क्लास में कास्ट करें ताकि उसकी विशिष्ट प्रॉपर्टीज़ तक पहुंच सकें। कास्ट करने से पहले हमेशा Type जांचें: गलत फ़ील्ड क्लास में कास्ट करने से एक InvalidCastException फेंका जाता है।


स्टेप 2: DISPLAYBARCODE या MERGEBARCODE फ़ील्ड को कॉन्फ़िगर करें

FieldDisplayBarcode (the DISPLAYBARCODE field) और FieldMergeBarcode (the MERGEBARCODE field, जो mail merge के लिए IMergeFieldSurrogate को भी लागू करता है) एक ही सेट के barcode-configuration प्रॉपर्टीज़ साझा करते हैं: BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar, और FixCheckDigit. इन्हें फ़ील्ड इंस्टेंस पर सेट करें, फिर Update() कॉल करें ताकि Result दस्तावेज़ सहेजे जाने से पहले नई कॉन्फ़िगरेशन को प्रतिबिंबित करे।


चरण 3: लेगेसी BARCODE (डाक) फ़ील्ड डेटा पढ़ें

FieldBarcode पुराने BARCODE फ़ील्ड को लागू करता है, जो विशेष रूप से एक US डाक बारकोड (POSTNET) फ़ील्ड है, सामान्य-उद्देश्य बारकोड नहीं — यह Step 2 की BarcodeType/BarcodeValue प्रॉपर्टीज़ को साझा नहीं करता। इसके बजाय यह PostalAddress (वह पता जिसे बारकोड एन्कोड करता है), FacingIdentificationMark, IsUSPostalAddress, और IsBookmark को उजागर करता है। इन प्रॉपर्टीज़ को पढ़ने से पहले Field.Type को विशेष रूप से FieldType.FieldBarcode के विरुद्ध जांचें, क्योंकि एक DISPLAYBARCODE या MERGEBARCODE फ़ील्ड को FieldBarcode में कास्ट करने से वह प्रॉपर्टी नहीं मिल पाएगी जिसकी आप अपेक्षा करते हैं।


चरण 4: कस्टम जेनरेटर के साथ बारकोड इमेजेज़ रेंडर करें

यह FOSS संस्करण बारकोड फ़ील्ड डेटा ले जाता है लेकिन इसमें बारकोड रेंडरिंग इंजन शामिल नहीं है। BarcodeParameters वह पास-थ्रू कंटेनर है जो किसी भी बारकोड-फ़ील्ड परिवार से सेटिंग्स को एकीकृत करता है — Step 2 की DISPLAYBARCODE/MERGEBARCODE प्रॉपर्टीज़ और Step 3 की डाक प्रॉपर्टीज़ — और उन्हें एकल ऑब्जेक्ट में सम्मिलित करता है जिसे रेंडरर को दिया जाता है। IBarcodeGenerator को लागू करें, GetBarcodeImage(parameters) और लेगेसी GetOldBarcodeImage(parameters) को उजागर करते हुए, वास्तविक इमेज रेंडरिंग प्रदान करने के लिए; यदि कोई इम्प्लीमेंटेशन नहीं दिया गया तो बारकोड फ़ील्ड केवल कॉन्फ़िगरेशन डेटा ले जाते हैं।


चरण 5: लेगेसी कम्पैटिबिलिटी फ़ील्ड्स के साथ काम करें

चार अन्य क्लासेज़ पुराने फ़ील्ड कोड्स को कवर करती हैं जो अभी भी लेगेसी .docx फाइलों में पाए जाते हैं। FieldBidiOutline BIDIOUTLINE फ़ील्ड को लागू करता है जो दाएँ-से-बाएँ आउटलाइन नंबरिंग के लिए है और सामान्य Field सतह के अलावा कोई प्रॉपर्टी उजागर नहीं करता। FieldEQ EQ समीकरण फ़ील्ड को लागू करता है और अतिरिक्त रूप से AsOfficeMath() को उजागर करता है ताकि उसकी सामग्री को OfficeMath ऑब्जेक्ट में परिवर्तित किया जा सके — यह केवल तभी सफल होता है जब फ़ील्ड वास्तव में एक समीकरण एन्कोड करता हो। FieldFootnoteRef FOOTNOTEREF फ़ील्ड को लागू करता है, जो फुटनोट या एंडनोट मार्क को क्रॉस-रेफरेंस करता है, और सामान्य Field सतह के अलावा कोई प्रॉपर्टी उजागर नहीं करता। FieldInfo INFO फ़ील्ड को लागू करता है, जो अपने InfoType और NewValue प्रॉपर्टीज़ के माध्यम से दस्तावेज़ सारांश-सूचना प्रॉपर्टी को पढ़ता या लिखता है।


चरण 6: ट्रांज़िशनल फ़ील्ड के मान को अपडेट या फ्रीज़ करें

प्रत्येक ट्रांज़िशनल फ़ील्ड क्लास GetFieldCode() (फ़ील्ड का अंतर्निहित कोड टेक्स्ट), Update() (परिणाम को पुनः-मूल्यांकन करता है), Unlink() (फ़ील्ड को उसके अंतिम गणना किए गए परिणाम के रूप में स्थिर टेक्स्ट से बदलता है), और Remove() (फ़ील्ड को हटाता है) को विरासत में प्राप्त करती है। किसी भी फ़ील्ड की कॉन्फ़िगरेशन बदलने के बाद Update() को कॉल करें ताकि Result परिवर्तन को दर्शाए, और जब फ़ील्ड का वर्तमान मान स्थिर रखा जाना चाहिए न कि पुनः-गणना योग्य रहे, तो Unlink() का उपयोग करें।


सामान्य समस्याएँ और समाधान

InvalidCastException जब एक को कास्ट किया जाता है Field को एक ट्रांज़िशनल फ़ील्ड क्लास में। गलत FieldType मान लिया गया था। जाँचें Field.Type मेल के विरुद्ध FieldType कास्ट करने से पहले स्थिरांक।

A DISPLAYBARCODE/MERGEBARCODE कास्ट करने के बाद फ़ील्ड की प्रॉपर्टीज़ गायब हैं। फ़ील्ड को कास्ट किया गया था FieldBarcode के बजाय FieldDisplayBarcode/FieldMergeBarcode (या इसके विपरीत) — ये क्लासेज़ विभिन्न प्रॉपर्टी सेट्स को उजागर करती हैं भले ही सभी तीन बारकोड डेटा का प्रतिनिधित्व करें। पुष्टि करें Field.Type कास्ट करने से पहले।

बारकोड फ़ील्ड डेटा रखते हैं लेकिन कोई छवि रेंडर नहीं होती। नहीं IBarcodeGenerator इम्प्लीमेंटेशन प्रदान किया गया था। एक कस्टम जेनरेटर प्रदान करें जो लागू करता है GetBarcodeImage(parameters) — इस संस्करण में अंतर्निहित बारकोड रेंडरिंग इंजन शामिल नहीं है।

FieldEQ.AsOfficeMath() अप्रत्याशित परिणाम लौटाता है। फ़ील्ड में वैध समीकरण निर्देश नहीं है। फ़ील्ड का GetFieldCode() परिवर्तन का प्रयास करने से पहले आउटपुट।

FieldInfo’s मान सेट करने के बाद अपडेट नहीं होता NewValue. परिवर्तन के बाद फ़ील्ड रिफ्रेश नहीं हुआ। Call Update() संशोधित करने के बाद फ़ील्ड पर NewValue.


अक्सर पूछे जाने वाले प्रश्न

इन फ़ील्ड प्रकारों के लिए “transitional” का क्या मतलब है?

यह आधिकारिक Word शब्दावली नहीं है — यह इस संस्करण के Aspose.Words.Fields नेमस्पेस में फ़ील्ड क्लासों को समूहित करता है जो पुराने फ़ील्ड कोड (barcode fields और pre-Open-XML compatibility fields) को अपनी मजबूत-टाइप्ड क्लासों के माध्यम से लागू करते हैं, बजाय इसके कि उन्हें केवल सामान्य Field ऑब्जेक्ट के द्वारा संभाला जाए।

क्या FieldBarcode FieldDisplayBarcode के समान गुणों का उपयोग करता है?

नहीं। FieldBarcode लेगेसी BARCODE (postal/POSTNET) फ़ील्ड को लागू करता है और PostalAddress, FacingIdentificationMark, IsUSPostalAddress, तथा IsBookmark को उजागर करता है। FieldDisplayBarcode और FieldMergeBarcode एक अलग गुण सेट साझा करते हैं — BarcodeType, BarcodeValue, SymbolHeight, और संबंधित रेंडरिंग सेटिंग्स।

क्या यह संस्करण बारकोड छवियों को रेंडर करता है?

नहीं। FieldBarcode, FieldDisplayBarcode, और FieldMergeBarcode बारकोड कॉन्फ़िगरेशन डेटा रखते हैं और IBarcodeGenerator इंटरफ़ेस को उजागर करते हैं, लेकिन इस संस्करण में कोई बारकोड रेंडरिंग इंजन शामिल नहीं है — एक कस्टम IBarcodeGenerator कार्यान्वयन आवश्यक है ताकि छवि बनाई जा सके।

क्या मैं एक EQ फ़ील्ड को OfficeMath समीकरण में बदल सकता हूँ?

हाँ, FieldEQ.AsOfficeMath() के माध्यम से, बशर्ते फ़ील्ड का कोड वास्तव में समीकरण को एन्कोड करता हो।

मैं किसी दस्तावेज़ में सभी संक्रमणीय फ़ील्ड्स कैसे खोजूँ?

Document.Range.Fields को सूचीबद्ध करें और प्रत्येक Field.Type की तुलना संबंधित FieldType स्थिरांक (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo) से करें।


यह भी देखें

 हिन्दी