स्ट्रक्चर्ड डॉक्यूमेंट टैग्स (कंटेंट कंट्रोल्स) के साथ काम करना
संरचित दस्तावेज़ टैग (कंटेंट कंट्रोल) के साथ काम करना
एक संरचित दस्तावेज़ टैग (SDT), जिसे Word UI में कंटेंट कंट्रोल के रूप में जाना जाता है, दस्तावेज़ सामग्री के एक हिस्से को टाइप किए गए, सीमित संपादन व्यवहार के साथ लपेटता है — एक चेकबॉक्स, एक तिथि चयनकर्ता, एक ड्रॉप-डाउन सूची, या एक साधारण-या-रिच-टेक्स्ट प्लेसहोल्डर। Aspose.Words .NET के लिए FOSS इनका मॉडलिंग इनके माध्यम से Aspose.Words.Markup नामस्थान, जिसका शीर्षक है StructuredDocumentTag क्लास। यह पृष्ठ कंटेंट कंट्रोल्स को सम्मिलित करने, प्रत्येक प्रकार को कॉन्फ़िगर करने, उन्हें खोजने और हटाने, तथा उन्हें कस्टम XML डेटा से बाइंड करने को कवर करता है।
संरचित दस्तावेज़ टैग ऑब्जेक्ट मॉडल
StructuredDocumentTag एक CompositeNode है जो IMarkupNode, ITrackableNode, और IStructuredDocumentTag को भी लागू करता है। SdtType यह पहचानता है कि यह किस प्रकार का कंट्रोल है। Tag और Title वे पहचान स्ट्रिंग्स रखते हैं जो लेखक Word में सेट करते हैं; Placeholder (एक BuildingBlock) और PlaceholderName उन प्रॉम्प्ट टेक्स्ट को प्रदान करते हैं जो कंट्रोल खाली होने पर दिखते हैं, जिन्हें IsShowingPlaceholderText के माध्यम से रिपोर्ट किया जाता है। LockContentControl कंट्रोल को हटाने से रोकता है, और LockContents इसकी सामग्री को संपादित करने से रोकता है, एक-दूसरे से स्वतंत्र रूप से।
कंटेंट कंट्रोल सम्मिलित करना
DocumentBuilder.InsertStructuredDocumentTag(SdtType) कर्सर पर एक नया कंट्रोल सम्मिलित करता है, लेकिन केवल SdtType मानों में से सात के लिए: PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture, और Date। RepeatingSection और RepeatingSectionItem इस प्रकार टेक्स्ट कर्सर पर सम्मिलित नहीं किए जा सकते — वे इसके बजाय पूरे पैराग्राफ या टेबल रो को लपेटते हैं। शेष SdtType मान जो Word फ़ाइलों में दिखाई देते हैं लेकिन Word UI में सम्मिलित करने योग्य प्रकारों के रूप में नहीं हैं — None, Bibliography, Citation, Equation, BuildingBlockGallery, DocPartObj, Group, और EntityPicker — इस सम्मिलन विधि द्वारा समर्थित नहीं हैं।
प्रकार-विशिष्ट सामग्री
एक चेकबॉक्स नियंत्रण की स्थिति StructuredDocumentTag.Checked है; SetCheckedSymbol() और SetUncheckedSymbol() प्रत्येक स्थिति के लिए दिखाए जाने वाले ग्लिफ़ सेट करते हैं। एक डेट कंट्रोल अपना मान FullDate में संग्रहीत करता है, जिसमें DateDisplayFormat और DateDisplayLocale यह नियंत्रित करते हैं कि इसे कैसे रेंडर किया जाए, DateStorageFormat (एक SdtDateStorageFormat) यह नियंत्रित करता है कि इसे XML डेटा से बंधे होने पर कैसे संग्रहीत किया जाए, और CalendarType (एक SdtCalendarType) कैलेंडर सिस्टम का चयन करता है। एक ड्रॉप-डाउन सूची या कॉम्बो बॉक्स अपने विकल्पों को ListItems के माध्यम से उजागर करता है, जो SdtListItemCollection है SdtListItem का (DisplayText, Value) साथ में SelectedValue। एक प्लेन-टेक्स्ट नियंत्रण की Multiline प्रॉपर्टी इसके अंदर लाइन ब्रेक को अनुमति या प्रतिबंधित करती है।
दिखावट और लॉकिंग
Appearance (SdtAppearance) नियंत्रित करता है कि Word में नियंत्रण दृश्य रूप से कैसे सीमित हो। Color इसका हाइलाइट रंग सेट करता है, और ContentsFont / EndCharacterFont इसके सामग्री पर लागू फ़ॉन्ट और उसके अंत के अक्षर को नियंत्रित करते हैं। LockContentControl और LockContents स्वतंत्र स्विच हैं — पहला नियंत्रण स्वयं को हटाने से रोकता है, दूसरा उसके भीतर की चीज़ों को संपादित करने से रोकता है।
सामग्री नियंत्रणों को ढूँढ़ना और हटाना
Range.StructuredDocumentTags उस रेंज के लिए स्कोप्ड StructuredDocumentTagCollection लौटाता है, जिसमें GetById(), GetByTag(), और GetByTitle() लक्षित लुकअप के लिए Remove() और RemoveAt() के साथ होते हैं। व्यक्तिगत StructuredDocumentTag पर, Remove() नियंत्रण और उसकी सामग्री को एक साथ हटाता है, RemoveSelfOnly() केवल रैपर को हटाता है और सामग्री को दस्तावेज़ में रखता है, और Clear() नियंत्रण की सामग्री को खाली करता है जबकि स्वयं नियंत्रण को बरकरार रखता है।
XML डेटा बाइंडिंग
StructuredDocumentTag.XmlMapping एक XmlMapping उदाहरण है जो दस्तावेज़ में एक कस्टम XML भाग से बाइंडिंग का वर्णन करता है: CustomXmlPart, XPath, PrefixMappings, StoreItemId, और IsMapped। SetMapping() मौजूदा कस्टम XML भाग से बाइंडिंग स्थापित करता है और Delete() इसे हटाता है।
बहु-सेक्शन (रेंज्ड) सामग्री नियंत्रण
एक कंटेंट कंट्रोल जो एक सेक्शन से अधिक को कवर करता है – IsMultiSection द्वारा रिपोर्ट किया गया – एकल StructuredDocumentTag नोड द्वारा नहीं, बल्कि StructuredDocumentTagRangeStart और StructuredDocumentTagRangeEnd नोड्स की जोड़ी द्वारा दर्शाया जाता है, जो StructuredDocumentTagRangeStart.RangeEnd के माध्यम से जुड़ी होती है। दोनों, सिंगल-नोड और रेंज्ड फ़ॉर्म, सामान्य IStructuredDocumentTag इंटरफ़ेस को लागू करते हैं, इसलिए कोड जो केवल Tag, Title, SdtType, Placeholder और समान पहचान गुणों की आवश्यकता रखता है, वह दोनों रूपों के साथ समान रूप से काम कर सकता है।
सलाह और सर्वोत्तम प्रथाएँ
- इस पर भरोसा करने से पहले
DocumentBuilder.InsertStructuredDocumentTag()की supported-type सूची जांचें – केवलPlainText,RichText,Checkbox,DropDownList,ComboBox,PictureऔरDateको कर्सर पर डाला जा सकता है; अन्य प्रकार एक अपवाद फेंकते हैं। - जब आप किसी कंटेंट कंट्रोल को “फ़्लैटेन” करना चाहते हैं तो
Remove()की बजायRemoveSelfOnly()का उपयोग करें – इसका कंटेंट दस्तावेज़ में बना रहे लेकिन कंट्रोल रैपर हट जाए। - जब आप उम्मीद करें कि
DropDownListयाComboBoxनियंत्रण विकल्प दिखाएगा, तो पहलेListItemsको भरें, और सक्रिय विकल्प चुनने के लिएSelectedValueसेट करें। - यदि आपका कोड सामान्य और कई-सेक्शन (रेंज्ड) कंटेंट कंट्रोल दोनों को एक ही तरह से संभालना चाहता है, तो सीधे
StructuredDocumentTagके बजायIStructuredDocumentTagके विरुद्ध प्रोग्राम करें। XmlMapping.SetMapping()एक कस्टम XML भाग से बंधता है जो दस्तावेज़ के कस्टम XML डेटा स्टोर में पहले से मौजूद होना चाहिए – नियंत्रण को उससे मैप करने से पहले XML डेटा जोड़ें या लोड करें।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
InsertStructuredDocumentTag() NotImplementedException फेंकता है | अनुरोधित SdtType (उदाहरण के लिए Citation, Equation, या BuildingBlockGallery) सात सम्मिलित करने योग्य प्रकारों में से एक नहीं है | इनमें से PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture, Date में से एक का उपयोग करें |
InsertStructuredDocumentTag() InvalidOperationException फेंकता है | टेक्स्ट कर्सर पर RepeatingSection या RepeatingSectionItem का अनुरोध किया गया था | ये प्रकार पूरे पैराग्राफ या तालिका पंक्तियों को घेरते हैं, कर्सर स्थिति को नहीं |
| कंटेंट कंट्रोल को हटाने से उसके अंदर का टेक्स्ट भी हट जाता है | Remove() नियंत्रण और उसकी सामग्री को एक साथ हटाता है | सामग्री को बनाए रखने के लिए RemoveSelfOnly() को कॉल करें |
| चेकबॉक्स अपेक्षित प्रतीक नहीं दिखा रहा है | कस्टम चेक्ड/अनचेक्ड ग्लिफ़ सेट नहीं किए गए | SetCheckedSymbol() और SetUncheckedSymbol() को कॉल करें |
FAQ
मैं DocumentBuilder के साथ सीधे कौन से कंटेंट कंट्रोल प्रकार सम्मिलित कर सकता हूँ?
PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture, और Date. अन्य SdtType मान InsertStructuredDocumentTag() द्वारा समर्थित नहीं हैं।
मैं किसी विशिष्ट टैग वाले सभी कंटेंट कंट्रोल कैसे खोजूँ?
यदि आप उन पर मिलान कर रहे हैं तो Range.StructuredDocumentTags.GetByTag() का उपयोग करें, या GetByTitle() / GetById()।
मैं कंटेंट कंट्रोल को हटाकर उसकी सामग्री कैसे रखूँ?
StructuredDocumentTag.RemoveSelfOnly() को कॉल करें, Remove() के बजाय।
मैं कंटेंट कंट्रोल को कस्टम XML डेटा से कैसे बाँधूँ?
नियंत्रण पर XmlMapping.SetMapping() को कॉल करें, इसे एक मौजूदा कस्टम XML भाग और उसके भीतर एक XPath अभिव्यक्ति की ओर इंगित करते हुए।
साधारण StructuredDocumentTag और रेंज वाला StructuredDocumentTag में क्या अंतर है?
एक कंटेंट कंट्रोल जो एक से अधिक दस्तावेज़ अनुभागों को कवर करता है, उसे एकल नोड के बजाय StructuredDocumentTagRangeStart / StructuredDocumentTagRangeEnd जोड़ी के रूप में दर्शाया जाता है; दोनों रूप IStructuredDocumentTag को लागू करते हैं।
API Reference सारांश
| क्लास / इंटरफ़ेस / एनम | विवरण |
|---|---|
StructuredDocumentTag | सामग्री नियंत्रण नोड; SdtType, Tag, Title, Remove(), RemoveSelfOnly(), Clear() |
IStructuredDocumentTag | सामान्य इंटरफ़ेस जो सामान्य और बहु-सेक्शन कंटेंट कंट्रोल्स द्वारा साझा किया जाता है |
StructuredDocumentTagCollection | एक रेंज में कंटेंट कंट्रोल्स, Range.StructuredDocumentTags के माध्यम से; GetById(), GetByTag(), GetByTitle() |
StructuredDocumentTagRangeStart / StructuredDocumentTagRangeEnd | बहु-सेक्शन कंटेंट कंट्रोल को दर्शाने वाला प्रारंभ/समाप्ति जोड़ी |
SdtType | कंटेंट कंट्रोल के प्रकार की पहचान करने वाला Enum |
SdtAppearance | कंटेंट कंट्रोल के लिए दृश्य विभाजक शैली |
SdtCalendarType / SdtDateStorageFormat | डेट कंट्रोल के लिए कैलेंडर सिस्टम और स्टोरेज फॉर्मेट |
SdtListItem / SdtListItemCollection | ड्रॉप-डाउन सूची या कॉम्बो बॉक्स कंट्रोल के विकल्प |
XmlMapping | कंटेंट कंट्रोल के लिए कस्टम XML डेटा बाइंडिंग; SetMapping(), Delete() |
DocumentBuilder.InsertStructuredDocumentTag | कर्सर पर समर्थित कंटेंट-कंट्रोल प्रकार सम्मिलित करता है |