.NET में सूचियों के साथ काम कैसे करें
.NET में सूचियों के साथ कैसे काम करें
Word दस्तावेज़ में क्रमांकित और बुलेटेड सूचियाँ तीन सहयोगी वस्तुओं से बनती हैं: List, पुन: उपयोग योग्य क्रमांकन परिभाषा; ListFormat, जो बताता है कि कोई विशिष्ट पैराग्राफ किस सूची और स्तर से संबंधित है; और ListLevel, जो एक स्तर के लिए वास्तविक स्वरूपण रखता है। यह गाइड दिखाता है कि सूची को पैराग्राफ पर कैसे लागू किया जाए, अलग-अलग सूचियों को एक काउंटर साझा करने से कैसे रोका जाए, पैराग्राफ को स्तरों के बीच कैसे स्थानांतरित किया जाए, और Aspose.Words FOSS for .NET के साथ क्रमांक और बुलेट स्वरूपण को कैसे अनुकूलित किया जाए।
स्टेप-बाय-स्टेप गाइड
चरण 1: पैराग्राफ पर सूची लागू करें
ListFormat.ApplyBulletDefault() या ApplyNumberDefault() का उपयोग पैराग्राफ के स्वरूपण पर करके Word की डिफ़ॉल्ट बुलेट या क्रमांकित सूची को एक ही कॉल में लागू किया जा सकता है — यह मानक सूची लागू करने का सबसे तेज़ तरीका है। डिफ़ॉल्ट के बजाय कोई विशिष्ट पूर्वनिर्धारित स्वरूप चाहिए तो Document.Lists (एक ListCollection) .Add(listTemplate) को ListTemplate मान के साथ जैसे BulletDisk, BulletSquare, NumberArabicDot, या NumberUppercaseRomanDot कॉल करें, जिससे Word के निर्मित स्वरूपों में से किसी एक से List बनाया जा सके, या एक-स्तरीय वैरिएंट के लिए AddSingleLevelList(listTemplate)। एक बार जब पैराग्राफ में सूची स्वरूपण हो जाता है, तो ListFormat.IsListItem true रिपोर्ट करता है, और ListFormat.List/ListLevelNumber यह पहचानते हैं कि वह कौन सी सूची और स्तर उपयोग कर रहा है।
चरण 2: पैराग्राफ़ों के नए समूह को स्वतंत्र क्रमांकन दें
वे पैराग्राफ़ जिनका ListFormat.List समान साझा List ऑब्जेक्ट की ओर संकेत करता है, वही काउंटर जारी रखते हैं। जब पैराग्राफ़ों का नया समूह स्वतंत्र रूप से 1 से पुनः क्रमांकित होना चाहता है, तो मौजूदा सूची परिभाषा की प्रतिलिपि बनाने के लिए ListCollection.AddCopy(srcList) को कॉल करें, फिर मूल को पुन: उपयोग करने के बजाय प्रतिलिपि को नए पैराग्राफ़ों पर लागू करें। ListCollection.GetListByListId(listId) आपको ListId द्वारा किसी विशिष्ट सूची को पुनः प्राप्त करने में मदद करता है जब आपको उसे बनाना नहीं बल्कि देखना हो, और Count दस्तावेज़ में वर्तमान में मौजूद सूचियों की संख्या रिपोर्ट करता है।
चरण 3: सूची स्तरों के बीच एक पैराग्राफ़ ले जाएँ
एक पैराग्राफ़ को उसकी सूची में एक स्तर गहरा ले जाने के लिए ListFormat.ListIndent() का उपयोग करें, और एक स्तर उँचा ले जाने के लिए ListOutdent() — यह वही कार्य हैं जो Word सूची पैराग्राफ़ की शुरुआत में Tab और Shift+Tab के लिए करता है। ListLevelNumber को सीधे सेट करने की बजाय इन विधियों को प्राथमिकता दें, क्योंकि वे पैराग्राफ़ की सूची फ़ॉर्मेटिंग को आंतरिक रूप से सुसंगत रखती हैं। पैराग्राफ़ से पूरी तरह सूची फ़ॉर्मेटिंग हटाने के लिए RemoveNumbers() को कॉल करें।
चरण 4: सूची स्तर के क्रमांक प्रारूप को अनुकूलित करें
एक विशिष्ट स्तर तक पहुँचने के लिए List.ListLevels (एक ListLevelCollection) का उपयोग करें, फिर ListLevel.NumberStyle (एक NumberStyle मान जैसे Arabic, UppercaseRoman, LowercaseLetter, या Bullet) और NumberFormat — वह फ़ॉर्मेट स्ट्रिंग जो संख्या को बिंदु या कोष्ठक जैसे शाब्दिक पाठ के साथ जोड़ती है — को साथ में सेट करें, क्योंकि असंगत जोड़ी अप्रत्याशित रेंडरिंग उत्पन्न करती है। StartAt स्तर की प्रारंभिक संख्या सेट करता है, और RestartAfterLevel नियंत्रित करता है कि कौन से उच्च स्तर की वृद्धि इस स्तर के काउंटर को पुनः आरंभ करती है — इसे नेस्टेड सूचियों पर स्पष्ट रूप से सेट करें बजाय डिफ़ॉल्ट पुनः आरंभ व्यवहार पर निर्भर रहने के। Alignment (Left, Center, Right) और TrailingCharacter (Tab, Space, Nothing) क्रमशः लेबल की स्थिति और लेबल तथा पैराग्राफ़ टेक्स्ट के बीच विभाजक को नियंत्रित करते हैं, साथ ही सटीक लेआउट के लिए TabPosition, NumberPosition, और TextPosition। IsLegal कानूनी-शैली क्रमांक ( हमेशा अरबी ) को लागू करता है, चाहे NumberStyle कुछ भी हो।
चरण 5: सूची स्तर में चित्र बुलेट जोड़ें
लक्ष्य स्तर पर चित्र-बुलेट परिभाषा बनाने के लिए ListLevel.CreatePictureBullet() को कॉल करें, फिर उसी स्तर पर मौजूदा टेक्स्ट-बुलेट फ़ॉर्मेटिंग को हटाने से पहले बुलेट का ImageData प्रदान करें। चित्र बुलेट को हटाकर टेक्स्ट-आधारित बुलेट फ़ॉर्मेटिंग पर लौटने के लिए DeletePictureBullet() को कॉल करें।
चरण 6: सूची आइटम के रेंडर किए गए लेबल का निरीक्षण करें
ListLabel उस लेबल का वर्णन करता है जो किसी सूची आइटम के उदाहरण के लिए वास्तव में रेंडर किया जाता है, जो आइटम के पैराग्राफ फ़ॉर्मेटिंग से प्राप्त होता है। LabelString वह शाब्दिक टेक्स्ट है जो Word दर्शाता है — जैसे “3.” या “•” — LabelValue अंतर्निहित संख्यात्मक मान है, और Font लेबल का अपना फ़ॉर्मेटिंग है, जो पैराग्राफ टेक्स्ट के फ़ॉर्मेटिंग से स्वतंत्र है। क्रम में किसी भी स्थान पर लेबल का मान बिना पूरी सूची को रेंडर किए गणना करने के लिए, ListLevel.GetEffectiveValue(index, numberStyle, customNumberStyleFormat) को कॉल करें।
सामान्य समस्याएँ और समाधान
दो पैराग्राफ़ जिन्हें स्वतंत्र रूप से क्रमांकित होना चाहिए, समान क्रम जारी रखते हैं। दोनों पैराग्राफ़’ ListFormat.List समान साझा को संदर्भित करता है List ऑब्जेक्ट। दूसरे समूह को अपना सूची दें द्वारा ListCollection.AddCopy(srcList) एक ही को पुन: उपयोग करने के बजाय List.
एक कस्टम क्रमांकित फ़ॉर्मेट स्ट्रिंग अपेक्षित रूप से रेंडर नहीं होती है। ListLevel.NumberFormat लेवल की अपेक्षित पैटर्न से मेल नहीं खाती है। NumberStyle. सत्यापित करें NumberFormat and NumberStyle संपादित किए जा रहे स्तर के लिए लगातार सेट किए गए हैं।
प्रोग्रामेटिक रूप से स्तर बदलने के बाद सूची इंडेंटेशन गलत दिखता है। ListLevelNumber को सीधे सेट किया गया था बिना संबंधित स्थिति गुणों को अपडेट किए। उपयोग करें ListFormat.ListIndent()/ListOutdent() सेट करने के बजाय ListLevelNumber सीधे।
एक चित्र बुलेट स्तर पर नहीं दिखता है। उस स्तर के लिए कोई चित्र बुलेट नहीं बनाया गया, या डिफ़ॉल्ट टेक्स्ट-बुलेट फ़ॉर्मेटिंग अभी भी सक्रिय है। कॉल करें ListLevel.CreatePictureBullet() और टेक्स्ट बुलेट फ़ॉर्मेटिंग हटाने से पहले इमेज डेटा प्रदान करें।
एक style-linked सूची सीधे फ़ॉर्मेटिंग बदलावों पर प्रतिक्रिया नहीं देती। Check List.IsListStyleReference — एक style-referencing सूची का फ़ॉर्मेटिंग उसके linked द्वारा नियंत्रित होता है। Style (via List.Style), सीधे सूची को संपादित करके नहीं। तुलना करें IsListStyleDefinition एक ऐसी सूची को पहचानने के लिए जो अपना स्वयं का फ़ॉर्मेटिंग निर्धारित करती है।
अक्सर पूछे जाने वाले प्रश्न
List और ListFormat में क्या अंतर है?
List पैराग्राफों में साझा की गई पुन: उपयोग योग्य क्रमांक या बुलेट परिभाषा है। ListFormat प्रति-पैराग्राफ है — यह संकेत देता है कि कोई विशिष्ट पैराग्राफ कौन-सा List उपयोग करता है और किस स्तर पर, ListFormat.List और ListLevelNumber के माध्यम से।
मैं कैसे जांचूँ कि कोई पैराग्राफ पहले से किसी सूची का हिस्सा है या नहीं?
पैराग्राफ के फ़ॉर्मेटिंग पर ListFormat.IsListItem पढ़ें। यदि true, तो ListFormat.List और ListLevelNumber यह निर्धारित करते हैं कि यह कौन-सी सूची और किस स्तर का है।
मैं नई सूची को 1 से क्रमांकित कैसे शुरू करूँ, जो मौजूदा सूची से स्वतंत्र हो?
सूची परिभाषा की स्वतंत्र प्रतिलिपि बनाने के लिए ListCollection.AddCopy(srcList) का उपयोग करें, फिर इस प्रतिलिपि को नए पैराग्राफों पर लागू करें, मूल List को पुनः उपयोग करने के बजाय, क्योंकि वह वही काउंटर जारी रखेगा।
मैं शून्य से बुलेटेड या क्रमांकित सूची कैसे बनाऊँ?
Word की डिफ़ॉल्ट फ़ॉर्मेटिंग के लिए ListFormat.ApplyBulletDefault() या ApplyNumberDefault() का उपयोग करें, या ListCollection.Add(listTemplate) को ListTemplate मान के साथ उपयोग करके एक पूर्वनिर्धारित फ़ॉर्मेट से शुरू करें और परिणामी List.ListLevels को वहाँ से कस्टमाइज़ करें।
मैं “1)” जैसा नंबर फ़ॉर्मेट कैसे प्राप्त करूँ, “1.” के बजाय?
संबंधित स्तर पर ListLevel.NumberFormat को वांछित फ़ॉर्मेट स्ट्रिंग पर सेट करें, साथ ही अंकीय शैली के लिए NumberStyle भी।