परिचय
Aspose.Words FOSS for .NET में वही टेक्स्ट-फ़ॉर्मैटिंग ऑब्जेक्ट मॉडल शामिल है जैसा कि व्यावसायिक Aspose.Words इंजन में है: रन-स्तर के एट्रिब्यूट्स के लिए Font, पैराग्राफ-स्तर के एट्रिब्यूट्स के लिए ParagraphFormat, क्रमांकित और बुलेटेड सूचियों के लिए ListFormat, स्थित टेक्स्ट फ़्रेम्स के लिए FrameFormat, और खोज-और-प्रतिस्थापन के लिए Range.Replace. यह गाइड विशेष रूप से उस परत को देखता है — दस्तावेज़ में पहले से मौजूद टेक्स्ट का फ़ॉर्मैटिंग और पुनः लेखन — न कि शून्य से दस्तावेज़ की संरचना बनाने के बारे में (रिलीज़ का अवलोकन पाने के लिए परिचय पोस्ट देखें).
लाइब्रेरी MIT-लाइसेंस वाली है, जिसमें कोई नेटिव निर्भरताएँ नहीं हैं और यह .NET Standard 2.0 को लक्षित करती है, इसलिए यह .NET Framework 4.6.2+ और .NET 6, 8, और 10 पर चलती है। इसे NuGet के माध्यम से स्थापित करें, या स्रोत से बनाएँ (नीचे त्वरित प्रारम्भ देखें). यहाँ वर्णित सभी चीज़ें .docx, .docm, .dotx, .dotm, और new Document(fileName) के साथ लोड किए गए Flat OPC फ़ाइलों के खिलाफ काम करती हैं, या DocumentBuilder के साथ मेमोरी में निर्मित दस्तावेज़ों के खिलाफ।
क्योंकि Aspose.Words FOSS for .NET वास्तविक Aspose.Words कोडबेस है जिसे मुफ्त कोर में घटाया गया है, न कि पुनर्लेखन, इसलिए Font, ParagraphFormat, ListFormat, और FrameFormat ऑब्जेक्ट मॉडल सीधे व्यावसायिक Aspose.Words for .NET में ले जाया जाता है, यदि बाद में किसी प्रोजेक्ट को पेज लेआउट, रेंडरिंग, या अतिरिक्त फ़ॉर्मेट परिवर्तक की आवश्यकता हो जो इस संस्करण में नहीं हैं।
मुख्य विशेषताएँ
फ़ॉन्ट के साथ रन-स्तर फ़ॉर्मैटिंग
प्रत्येक Run एक Font प्रॉपर्टी प्रदान करता है, और DocumentBuilder.Font वह फ़ॉन्ट सेट करता है जो अगले लिखे जाने वाले टेक्स्ट पर लागू होगा। स्पष्ट Bold, Italic, और Underline (एक Underline enum जिसमें मान Single, Double, Dotted, Dash, Wavy सहित होते हैं, और उनके *Heavy वैरिएंट) के अलावा, Font में StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling, और EmphasisMark शामिल हैं। Font.Style, Font.StyleName, और Font.StyleIdentifier एक रन को कैरेक्टर स्टाइल से जोड़ते हैं, और Font.ClearFormatting() रन पर सीधे फ़ॉर्मैटिंग को उसकी स्टाइल डिफ़ॉल्ट्स पर रीसेट करता है। DocumentBuilder भी Bold, Italic, और Underline को सीधे शॉर्टकट के रूप में उजागर करता है, साथ ही PushFont() और PopFont() का उपयोग बिल्डर की वर्तमान फ़ॉन्ट स्थिति को अस्थायी फ़ॉर्मैटिंग परिवर्तन के चारों ओर सहेजने और पुनर्स्थापित करने के लिए किया जाता है।
पैराग्राफ फ़ॉर्मेटिंग ParagraphFormat के साथ
ParagraphFormat (Paragraph.ParagraphFormat या DocumentBuilder.ParagraphFormat के माध्यम से पहुँचा जा सकता है) ParagraphAlignment enum के माध्यम से संरेखण नियंत्रित करता है (Left, Center, Right, Justify, Distributed, साथ ही अरबी काशिदा और थाई-वितरित वैरिएंट), LeftIndent, RightIndent, और FirstLineIndent के माध्यम से इंडेंटेशन (पूर्वी एशियाई लेआउट के लिए CharacterUnit* समकक्षों के साथ), तथा SpaceBefore, SpaceAfter, और LineSpacingRule/LineSpacing के द्वारा स्पेसिंग। पेजिनेशन व्यवहार KeepTogether, KeepWithNext, PageBreakBefore, और WidowControl से नियंत्रित होता है, और Bidi पैराग्राफ को दाएँ-से-बाएँ चिह्नित करता है। कस्टम टैब स्टॉप ParagraphFormat.TabStops में रहते हैं, जो TabStop वस्तुओं का एक TabStopCollection है, प्रत्येक में एक Position, एक TabAlignment (Left, Center, Right, Decimal, Bar), और एक TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot) है। जैसा कि Font में है, ParagraphFormat.Style और StyleName पैराग्राफ को नामित Style से जोड़ते हैं, और ClearFormatting() सीधे पैराग्राफ फ़ॉर्मेटिंग को साफ़ करता है।
ListFormat के साथ सूचियाँ
ListFormat (Paragraph.ListFormat या DocumentBuilder.ListFormat पर) पैराग्राफ पर सूची फ़ॉर्मेटिंग लागू करता है: ApplyBulletDefault() और ApplyNumberDefault() इसे डिफ़ॉल्ट बुलेटेड या क्रमांकित सूची में बदलते हैं, RemoveNumbers() सूची फ़ॉर्मेटिंग को पूरी तरह हटाता है, और ListIndent()/ListOutdent() इसे सूची स्तरों के बीच ले जाते हैं। ListFormat.List अंतर्निहित List परिभाषा लौटाता है, और ListFormat.ListLevel उस पैराग्राफ के लिए प्रभावी ListLevel लौटाता है, जिसमें प्रति-स्तर सेटिंग्स जैसे NumberStyle, NumberFormat, Alignment (एक ListLevelAlignment जिसमें Left, Center, या Right शामिल हैं), StartAt, RestartAfterLevel, स्तर-विशिष्ट Font, और TrailingCharacter (एक ListTrailingCharacter जिसमें Tab, Space, या Nothing शामिल हैं) सूची लेबल और पैराग्राफ टेक्स्ट के बीच अंतर नियंत्रित करता है। नई सूची परिभाषाएँ ListCollection.Add(listTemplate) से आती हैं, जो अंतर्निर्मित ListTemplate प्रीसेट (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot आदि) में से एक का उपयोग करती हैं, या AddSingleLevelList एक-स्तरीय सूची के लिए; दस्तावेज़ की सूचियों को Document.Lists के माध्यम से क्रमांकित किया जाता है।
FrameFormat के साथ टेक्स्ट फ्रेम
Paragraph.FrameFormat एक पढ़ने-के-लिए-केवल रिपोर्टिंग ऑब्जेक्ट है: उस पर प्रत्येक प्रॉपर्टी एक पैराग्राफ की वर्तमान फ्रेम स्थिति को दर्शाता है, बजाय इसके कि आप इसे सीधे सेट कर सकें। IsFrame रिपोर्ट करता है कि पैराग्राफ वर्तमान में एक फ्रेम है या नहीं; Width, Height, और HeightRule इसका आकार रिपोर्ट करता है; HorizontalPosition और VerticalPosition, साथ में RelativeHorizontalPosition और RelativeVerticalPosition, रिपोर्ट करें कि यह पृष्ठ, मार्जिन, कॉलम या पैराग्राफ के सापेक्ष कहाँ एंकर किया गया है; और HorizontalDistanceFromText/VerticalDistanceFromText रिपोर्ट करें फ़्रेम और आसपास के बॉडी टेक्स्ट के बीच का अंतर। HorizontalAlignment और VerticalAlignment रिपोर्ट करें कि सामग्री फ्रेम के भीतर कैसे संरेखित होती है।
रेंज और IReplacingCallback के साथ खोज और प्रतिस्थापन
Range.Replace — Document.Range पर पूरे-दस्तावेज़ पास के लिए, या किसी नोड के Range पर उपलब्ध — साधारण पैटर्न/रिप्लेसमेंट जोड़ी और FindReplaceOptions इंस्टेंस के साथ संयोजित पैटर्न/रिप्लेसमेंट जोड़ी के लिए ओवरलोड रखता है, जो रेगेक्स-आधारित मिलान को समर्थन देता है। FindReplaceOptions.MatchCase और FindWholeWordsOnly यह निर्धारित करते हैं कि क्या मिलान माना जाता है; Direction (FindReplaceDirection.Forward या Backward) स्कैन क्रम सेट करता है; ApplyFont और ApplyParagraphFormat एक रिप्लेस पास को रिप्लेसमेंट टेक्स्ट पर फ़ॉर्मेटिंग ले जाने की अनुमति देते हैं; और Ignore* फ़्लैग्स का सेट (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) मिलान से विशिष्ट कंटेंट श्रेणियों को बाहर करता है। ऐसे रिप्लेसमेंट लॉजिक के लिए जो स्थिर स्ट्रिंग नहीं व्यक्त कर सकती, IReplacingCallback.Replacing(args) लागू करें और इसे FindReplaceOptions.ReplacingCallback के रूप में सेट करें (या इसे उन FindReplaceOptions कन्स्ट्रक्टर्स में से एक को पास करें जो सीधे कॉलबैक स्वीकार करते हैं); args पैरामीटर एक ReplacingArgs है जो Match, MatchNode, MatchOffset को उजागर करता है, और एक सेट-टेबल Replacement स्ट्रिंग प्रदान करता है ताकि कॉलबैक प्रत्येक मिलान के लिए मान गणना कर सके। एक संबंधित ReplaceAction enum (Replace, Skip, Stop) ऑपरेशन के दौरान एकल मिलान के संभावित परिणामों का वर्णन करता है।
त्वरित प्रारम्भ
Aspose.Words FOSS .NET के लिए NuGet के माध्यम से उपलब्ध है:
dotnet add package Aspose.Words.FOSSवैकल्पिक रूप से स्रोत से निर्माण करने के लिए:
git clone https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git
cd Aspose.Words-FOSS-for-.NET
dotnet build Aspose.Words.sln -c Release
फिर Aspose.Words.csproj के लिए एक प्रोजेक्ट रेफ़रेंस जोड़ें। जैसा कि आप लिखते हैं, पाठ को फ़ॉर्मेट करने के लिए, DocumentBuilder.Font प्रॉपर्टी सेट करें (Bold, Italic, Underline), DocumentBuilder.ParagraphFormat प्रॉपर्टी सेट करें (Alignment, इंडेंट, स्पेसिंग), और DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) को Write(), Writeln() या InsertParagraph() कॉल करने से पहले सेट करें — बिल्डर वर्तमान फ़ॉर्मेटिंग स्थिति को सभी लिखे गए सामग्री पर लागू करता है जब तक आप इसे फिर से बदलते नहीं, या अस्थायी परिवर्तन को PushFont()/PopFont() में लपेटते हैं। किसी दस्तावेज़ में पहले से मौजूद पाठ को पुनः फ़ॉर्मेट या पुनः लिखने के लिए, इसे new Document(fileName) से खोलें और doc.Range पर Range.Replace() कॉल करें — या तो साधारण पैटर्न/रिप्लेसमेंट ओवरलोड, या वह ओवरलोड जो FindReplaceOptions लेता है जिसमें MatchCase, FindWholeWordsOnly, या एक कस्टम IReplacingCallback हो — फिर परिणाम को Save() करें।
समर्थित फ़ॉर्मेट्स
| फ़ॉर्मेट | एक्सटेंशन | पढ़ें | लिखें |
|---|---|---|---|
| DOCX | .docx | ✓ | ✓ |
| DOCM | .docm | ✓ | ✓ |
| DOTX | .dotx | ✓ | ✓ |
| DOTM | .dotm | ✓ | ✓ |
| Flat OPC (सभी संस्करण) | (विभिन्न) | ✓ | ✓ |
| Markdown | .md | ✓ | ✓ |
| Text | .txt | ✓ | ✓ |
ऊपर बताए गए फ़ॉर्मेटिंग क्लासेस उसी प्रकार लागू होते हैं चाहे दस्तावेज़ किसी भी इन फ़ॉर्मेट्स से लोड किया गया हो या सहेजा गया हो। इस संस्करण में पढ़ने या लिखने के लिए DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3, या WordML का समर्थन नहीं है, और PDF, XPS, या इमेज एक्सपोर्ट का भी समर्थन नहीं है, क्योंकि पेज लेआउट और रेंडरिंग इसका दायरा नहीं हैं।
ओपन सोर्स एवं लाइसेंसिंग
Aspose.Words FOSS for .NET को MIT लाइसेंस के तहत जारी किया गया है, व्यावसायिक और व्यक्तिगत उपयोग के लिए मुफ्त, बिना किसी रॉयल्टी या पुनर्वितरण प्रतिबंध के। पूर्ण स्रोत, जिसमें ऊपर वर्णित Font, ParagraphFormat, ListFormat, FrameFormat, और Range कार्यान्वयन शामिल हैं, GitHub पर Aspose.Words FOSS for .NET रिपॉजिटरी में उपलब्ध है।