.NET में Word Index और Tables के साथ कैसे काम करें
.NET में Word इंडेक्स और टेबल्स के साथ कैसे काम करें
यह गाइड दिखाता है कि कैसे फ़ील्ड-ड्रिवन रेफ़रेंस स्ट्रक्चर को सम्मिलित और निर्मित किया जाए, जिन्हें Word दस्तावेज़ अपनी सामग्री का सारांश बनाने के लिए उपयोग करते हैं — एक टेबल ऑफ़ कंटेंट्स, एक वर्णक्रमीय इंडेक्स, और एक टेबल ऑफ़ अथॉरिटीज़ — Aspose.Words FOSS for .NET के साथ। प्रत्येक को दस्तावेज़ के अन्य हिस्सों में मौजूद मार्कर फ़ील्ड्स से संकलित किया जाता है: FieldToc हेडिंग-आधारित और FieldTC-मार्क्ड प्रविष्टियों को संकलित करता है, FieldIndex FieldXE मार्कर्स को संकलित करता है, और FieldToa FieldTA उद्धरणों को संकलित करता है। इस परिवार की हर फ़ील्ड क्लास Aspose.Words.Fields नेमस्पेस में बेस Field टाइप से व्युत्पन्न होती है।
चरण-बद्ध मार्गदर्शिका
चरण 1: एक टेबल ऑफ़ कंटेंट्स सम्मिलित करें
DocumentBuilder.InsertTableOfContents(switches) को उस स्थान पर कॉल करें जहाँ TOC दिखना चाहिए, और एक Word-शैली का फ़ील्ड-स्विच स्ट्रिंग पास करें — उदाहरण के लिए "\o \"1-3\" \h \z \u" — ताकि यह नियंत्रित किया जा सके कि कौन-से हेडिंग स्तर शामिल हों और परिणाम कैसे स्वरूपित हो, वही स्विचेज़ जो Word अपने UI के माध्यम से TOC सम्मिलित करने पर लिखता है। यह एक FieldToc सम्मिलित करता है, जो समान संरचना को सीधे प्रॉपर्टीज़ के रूप में भी उजागर करता है: शामिल आउटलाइन स्तरों के लिए HeadingLevelRange/EntryLevelRange, InsertHyperlinks, PreserveTabs/PreserveLineBreaks, और BookmarkName। टेबल ऑफ़ कंटेंट्स के बजाय फ़िगर्स की टेबल के लिए, उसी FieldToc पर TableOfFiguresLabel या CaptionlessTableOfFiguresLabel सेट करें।
चरण 2: कस्टम टेबल ऑफ़ कंटेंट्स प्रविष्टियों को मार्क करें
TOC में शामिल करने के लिए हर प्रविष्टि एक हेडिंग शैली से नहीं आती। एक विशिष्ट स्थान पर FieldTC डालें ताकि उसे पैराग्राफ शैली से स्वतंत्र TOC प्रविष्टि के रूप में चिह्नित किया जा सके: FieldTC.Text प्रविष्टि का पाठ है, EntryLevel वह रूपरेखा स्तर है जहाँ इसे दिखाना चाहिए, और OmitPageNumber उस प्रविष्टि के पृष्ठ संख्या को दबा देता है। जब किसी दस्तावेज़ को एक से अधिक TOC की आवश्यकता हो — उदाहरण के तौर पर मुख्य TOC और आकृतियों की अलग तालिका — तो FieldTC.TypeIdentifier को उस FieldToc के EntryIdentifier के समान सेट करें जो इसे एकत्र करेगा।
चरण 3: चिह्नित प्रविष्टियों से अनुक्रमणिका बनाएँ
इंडेक्स में शामिल प्रत्येक स्थान को एक FieldXE से चिह्नित करें, Text को प्रविष्टि पाठ के रूप में सेट करें; EntryType कॉलन-सेपरेटेड सिंटैक्स का उपयोग करके प्रविष्टियों को उप-स्तरों में समूहित करता है, और PageRangeBookmarkName एक बुकमार्क को चिह्नित करता है जिसका विस्तार इंडेक्स में एक पृष्ठ संख्या के बजाय पृष्ठ सीमा बन जाता है। FieldIndex दस्तावेज़ में प्रत्येक FieldXE मार्कर को वर्णक्रमीय परिणाम में संकलित करता है — Heading को अक्षर-हेडिंग विभाजक (A, B, C…) डालने के लिए सेट करें, LetterRange को इंडेक्स को वर्णमाला के किसी भाग तक सीमित करने के लिए, और RunSubentriesOnSameLine को उप-प्रविष्टि लेआउट नियंत्रित करने के लिए सेट करें। PageNumberSeparator, PageRangeSeparator, SequenceSeparator और CrossReferenceSeparator प्रविष्टि और उसकी पृष्ठ संदर्भ के बीच विराम चिह्न को नियंत्रित करते हैं। Word की अंतर्निहित इंडेक्स दृश्य शैलियाँ FieldIndexFormat enum के रूप में उपलब्ध हैं (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple)।
चरण 4: उद्धरणों से अधिकार तालिका बनाएँ
पाठ में प्रत्येक उद्धरण को एक FieldTA से चिह्नित करें: LongCitation और ShortCitation उद्धरण पाठ रखते हैं, EntryCategory इसे “Cases” या “Statutes” जैसे शीर्षक के तहत समूहित करता है, और IsBold/IsItalic इसके स्वरूपण को नियंत्रित करते हैं। FieldToa उन उद्धरणों को एक तालिका में संकलित करता है — EntryCategory यह चुनता है कि कौन सा वर्ग संकलित किया जाए, UseHeading यह नियंत्रित करता है कि वर्ग शीर्षक दिखें या नहीं, UsePassim कई बार उद्धृत स्रोतों के लिए “passim” परंपरा लागू करता है, और PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting लेआउट को नियंत्रित करते हैं।
चरण 5: दस्तावेज़ परिवर्तन के बाद फ़ील्ड रीफ़्रेश करें
जब आसपास की सामग्री बदलती है, तो TOC, इंडेक्स या अधिकार तालिका स्वचालित रूप से अपडेट नहीं होती। विशिष्ट फ़ील्ड पर Update() को कॉल करें — उदाहरण के तौर पर FieldToc.Update() — ताकि उसका परिणाम पुनः गणना हो, या केवल पृष्ठ-संख्या भाग को रीफ़्रेश करने के लिए FieldToc.UpdatePageNumbers() का उपयोग करें। एक बार में दस्तावेज़ के सभी फ़ील्ड को रीफ़्रेश करने के लिए, Document.UpdateFields() को कॉल करें। याद रखें कि इन फ़ील्ड्स के परिणामों में पृष्ठ संख्याएँ इस संस्करण में प्लेसहोल्डर मानों के रूप में मूल्यांकित होती हैं, क्योंकि पृष्ठ लेआउट और पेजिनेशन इसका हिस्सा नहीं हैं।
चरण 6: अन्य दस्तावेज़ों से प्रविष्टियों को शामिल करें
एक FieldRD डालें ताकि TOC, इंडेक्स, या टेबल ऑफ ऑथॉरिटीज़ कंपाइल होने पर किसी अन्य फ़ाइल से प्रविष्टियाँ खींच सके। FieldRD.FileName संदर्भित दस्तावेज़ का नाम देता है, और IsPathRelative नियंत्रित करता है कि वह पथ वर्तमान दस्तावेज़ के सापेक्ष हल हो। अतिरिक्त प्रत्येक दस्तावेज़ के लिए एक FieldRD जोड़ें और बाद में कंपाइलिंग फ़ील्ड को अपडेट करें ताकि संयुक्त परिणाम में संदर्भित सामग्री शामिल हो।
आम समस्याएँ और समाधान
सामग्री तालिका में अपेक्षित शीर्षक शामिल नहीं हैं। TOC की स्विच स्ट्रिंग (या HeadingLevelRange) उन रूपरेखा स्तरों को बाहर रखती है। पास किए गए स्विच को समायोजित करें InsertTableOfContents, या सेट करें FieldToc.HeadingLevelRange सीधे।
एक अनुक्रमणिका प्रविष्टि अपेक्षित स्थान पर नहीं दिखती। संबंधित FieldXE मार्कर गायब है, या इसका EntryType सब-स्तर सिंटैक्स उस चीज़ से मेल नहीं खाता FieldIndex अपेक्षा करता है। FieldXE मार्कर मौजूद हैं और उनके EntryType मान लगातार स्वरूपित किए गए हैं।
फ़ील्ड परिणाम सामग्री संपादित करने के बाद पुराने दिखते हैं। फ़ील्ड संपादन के बाद अपडेट नहीं हुआ। कॉल Update() विशिष्ट फ़ील्ड पर, या Document.UpdateFields() सभी फ़ील्ड को एक साथ रीफ़्रेश करने के लिए।
दूसरे दस्तावेज़ से प्रविष्टियाँ संकलन के समय शामिल नहीं होती हैं। नहीं FieldRD उस दस्तावेज़ का संदर्भ मौजूद है, या IsPathRelative पाथ के हल होने के तरीके से मेल नहीं खाता। एक जोड़ें FieldRD सही के साथ FileName and IsPathRelative सेटिंग।
अक्सर पूछे जाने वाले प्रश्न
मैं प्रोग्रामेटिक रूप से टेबल ऑफ़ कंटेंट्स कैसे डालूँ?
TOC जहाँ दिखना चाहिए उस स्थान पर DocumentBuilder.InsertTableOfContents(switches) को Word-स्टाइल स्विच स्ट्रिंग, जैसे "\o \"1-3\" \h \z \u", के साथ कॉल करें।
मैं टेक्स्ट को इंडेक्स एंट्री के रूप में कैसे चिह्नित करूँ?
उस स्थान पर FieldXE फ़ील्ड डालें और उसकी Text प्रॉपर्टी को एंट्री टेक्स्ट पर सेट करें; FieldIndex दस्तावेज़ में सभी FieldXE मार्कर को इकट्ठा करके इंडेक्स परिणाम बनाता है।
FieldTC और हेडिंग-आधारित TOC एंट्री में क्या अंतर है?
Word का डिफ़ॉल्ट TOC व्यवहार हेडिंग स्टाइल वाले पैराग्राफ़ से एंट्री इकट्ठा करता है। FieldTC पैराग्राफ़ स्टाइल से स्वतंत्र रूप से किसी भी स्थान को TOC एंट्री के रूप में चिह्नित करता है, जिसे FieldToc मिलते-जुलते EntryIdentifier/TypeIdentifier मानों के ज़रिए शामिल कर सकता है।
दस्तावेज़ में परिवर्तन के बाद मैं TOC या इंडेक्स को कैसे रिफ्रेश करूँ?
विशिष्ट फ़ील्ड पर Update() कॉल करें (या केवल पेज़ नंबरों के लिए FieldToc पर UpdatePageNumbers() कॉल करें), या दस्तावेज़ में सभी फ़ील्ड को रिफ्रेश करने के लिए Document.UpdateFields() का उपयोग करें।
क्या एक TOC या इंडेक्स कई दस्तावेज़ों में संकलित किया जा सकता है?
हाँ — प्रत्येक अतिरिक्त दस्तावेज़ की ओर इशारा करने वाला FieldRD FileName के माध्यम से डालें। संकलन फ़ील्ड (FieldToc, FieldIndex, या FieldToa) अपडेट होने पर संदर्भित दस्तावेज़ों से प्रविष्टियों को शामिल करता है।