परिचय
Word दस्तावेज़ छवियों, टेक्स्ट बॉक्स और अन्य स्वतंत्र-तैरते ऑब्जेक्ट्स को एक ड्राइंग लेयर में रखते हैं जो पैराग्राफ़ और तालिकाओं के सामान्य प्रवाह से अलग होती है। Aspose.Words FOSS for .NET इस ड्राइंग लेयर को Shape और ShapeBase क्लासेज़ के माध्यम से उजागर करता है, जिससे प्रोग्रामेटिक पहुंच मिलती है उसी AutoShape, चित्र, टेक्स्ट बॉक्स, और OLE ऑब्जेक्ट मॉडल तक जो Word स्वयं आंतरिक रूप से उपयोग करता है। यह गाइड दिखाता है कि लाइब्रेरी इन ड्राइंग ऑब्जेक्ट्स को — स्थितिकरण, भराव और रूपरेखा फ़ॉर्मेटिंग, एम्बेडेड चित्र, और आकार के अंदर रखे गए टेक्स्ट — DOCX, DOCM, DOTX, और DOTM दस्तावेज़ों में कैसे प्रस्तुत और हेरफेर करती है।
यह उन कोड के लिए उपयोगी है जो स्थित लोगो या ग्राफ़िक के साथ रिपोर्ट या लेटरहेड टेम्पलेट बनाते हैं, तैरते टेक्स्ट बॉक्स और कॉलआउट्स के साथ दस्तावेज़ उत्पन्न करते हैं, या अपलोड किए गए दस्तावेज़ में पहले से मौजूद आकारों की जाँच करते हैं — एम्बेडेड चित्र के बाइट्स निकालना, सिग्नेचर लाइन के साइनर का नाम पढ़ना, या मौजूदा छवि को पुनः स्थित करना।
Aspose.Words FOSS for .NET MIT लाइसेंस के तहत जारी किया गया है और .NET Standard 2.0 को लक्षित करता है, इसलिए यह .NET Framework 4.6.2+ और .NET 6, 8, और 10 पर बिना किसी नेटिव निर्भरताओं के चलता है। इसे NuGet के माध्यम से इंस्टॉल करें, या स्रोत से बनाएं (नीचे त्वरित प्रारंभ देखें)। यह वही Aspose.Words दस्तावेज़ इंजन है जो व्यावसायिक रूप से उपयोग होता है, न कि कोई रीराइट या रैपर, इसलिए यहाँ वर्णित Shape और ड्राइंग-लेयर क्लासेज़ उत्पादन API हैं।
मुख्य विशेषताएँ
आकार और ShapeBase ऑब्जेक्ट मॉडल
Word दस्तावेज़ में एंकर किए गए प्रत्येक AutoShape, टेक्स्ट बॉक्स, एम्बेडेड चित्र, OLE ऑब्जेक्ट, या ActiveX नियंत्रण को Shape क्लास द्वारा प्रतिनिधित्व किया जाता है — यह sealed है, और abstract ShapeBase बेस क्लास पर आधारित है। दोनों समान स्थितिकरण और फ़ॉर्मेटिंग सतह साझा करते हैं: ज्यामिति के लिए Shape.Left, Shape.Top, Shape.Width, Shape.Height, Shape.Rotation, और Shape.ZOrder, साथ ही Shape.IsGroup, Shape.IsImage, Shape.IsWordArt, और Shape.IsInline फ़्लैग्स जो यह वर्णित करते हैं कि किसी दिए गए इंस्टेंस में किस प्रकार का ऑब्जेक्ट है। ShapeType enum वह ठोस आकार प्रकारों की सूची देता है जिन्हें Word पहचानता है — Rectangle, Ellipse, Line, Arrow, कॉलआउट और कनेक्टर प्रकारों का एक परिवार, TextBox, Image, और OleObject सहित अस्सी से अधिक मान — ताकि दस्तावेज़ के आकारों पर चलने वाला कोड Shape.ShapeType के आधार पर शाखा बना सके और तय कर सके कि प्रत्येक को कैसे संभालना है। कई आकारों को एकल GroupShape में जोड़ा जा सकता है, जो स्वयं ShapeBase की एक सबक्लास है, और आकारों के सेट को साथ में स्थित और आकार बदलता रखता है; DocumentBuilder.InsertGroupShape(shapes) मौजूदा आकारों की एरे से एक बनाता है।
टेक्स्ट बॉक्स और WordArt
कोई भी Shape अपना टेक्स्ट TextBox क्लास के माध्यम से ले जा सकता है, जिसे Shape.TextBox के रूप में उजागर किया जाता है। TextBox प्रॉपर्टीज़ यह नियंत्रित करती हैं कि वह टेक्स्ट आकार के भीतर कैसे स्थित हो: पैडिंग के लिए TextBox.InternalMarginLeft, TextBox.InternalMarginRight, TextBox.InternalMarginTop, और TextBox.InternalMarginBottom, TextBox.FitShapeToText आकार को उसके कंटेंट के साथ बढ़ने देता है, LayoutFlow टेक्स्ट दिशा के लिए, TextBoxWrapMode बॉक्स के भीतर टेक्स्ट कैसे रैप होता है, और TextBox.VerticalAnchor — एक TextBoxAnchor मान जैसे Top, Middle, BottomCentered, या TopBaseline — ऊर्ध्वाधर संरेखण के लिए। लिंक्ड टेक्स्ट बॉक्स, जहाँ अधिक टेक्स्ट दूसरे बॉक्स में जारी रहता है, को TextBox.Next और TextBox.Previous के साथ मॉडल किया जाता है। एक संबंधित लेकिन अलग क्लास, TextPath, WordArt-शैली का टेक्स्ट परिभाषित करती है जो आकार की रूपरेखा का अनुसरण करता है न कि उसके अंदर बैठता है, जिसमें TextPath.Text, TextPath.FontFamily, TextPath.Bold, और TextPath.RotateLetters जैसी प्रॉपर्टीज़ शामिल हैं, साथ ही TextPathAlignment एनुम जिसमें Stretch, Center, और LetterJustify जैसे मान होते हैं।
चित्र और एम्बेडेड इमेज
जब कोई आकार चित्र रखता है, तो Shape.HasImage सत्य होता है और Shape.ImageData एक ImageData ऑब्जेक्ट लौटाता है। ImageData कच्चे बाइट्स को ImageData.ImageBytes के माध्यम से उजागर करता है, पता लगाए गए फॉर्मेट को ImageType के माध्यम से (मानों में Jpeg, Png, Bmp, Gif, Emf, Wmf, Pict, Eps, और WebP शामिल हैं), पिक्सेल आयाम और रिज़ॉल्यूशन को ImageSize के माध्यम से, और क्रॉपिंग को ImageData.CropTop, ImageData.CropBottom, ImageData.CropLeft, और ImageData.CropRight द्वारा किया जाता है। रंग समायोजन — ImageData.Brightness, ImageData.Contrast, ImageData.GrayScale, ImageData.BiLevel, और ImageData.ChromaKey — उसी ऑब्जेक्ट की प्रॉपर्टीज़ हैं, और ImageData.IsLink/ImageData.IsLinkOnly एम्बेडेड चित्र को केवल बाहरी फ़ाइल पाथ संदर्भित करने वाले चित्र से अलग करते हैं। DocumentBuilder.InsertImage() के पास ऐसे ओवरलोड होते हैं जो एक इमेज, फ़ाइल पाथ, बाइट एरे, या स्ट्रीम को स्वीकार करते हैं, जिसमें ऐसे संस्करण भी शामिल हैं जो सम्मिलन समय पर स्पष्ट चौड़ाई, ऊँचाई, क्षैतिज और ऊर्ध्वाधर स्थिति, और WrapType सेट करते हैं।
फ़िल, स्ट्रोक, और शेप इफ़ेक्ट्स
प्रत्येक Shape और GroupShape के भीतर उसके अंदरूनी भाग और रूपरेखा के लिए क्रमशः एक Fill ऑब्जेक्ट और एक Stroke ऑब्जेक्ट होता है। Fill FillType के माध्यम से छह प्रकार के फ़िल का समर्थन करता है, जिनमें Solid, Patterned, Gradient, Textured, Background, और Picture मान शामिल हैं, जिन्हें Fill.Solid(color), Fill.OneColorGradient(style, variant, degree), Fill.TwoColorGradient(color1, color2, style, variant), Fill.Patterned(patternType) या Fill.SetImage(fileName) जैसे मेथड्स से सेट किया जाता है। Stroke रूपरेखा को नियंत्रित करता है: Stroke.Weight, DashStyle, JoinStyle, EndCap, और Stroke.LineStyle (एक ShapeLineStyle मान) स्वयं रेखा को कवर करते हैं, जबकि Stroke.StartArrowType और Stroke.EndArrowType, ArrowWidth और ArrowLength एन्हुम्स के साथ जोड़े हुए, कनेक्टर और लाइन शेप्स पर एरोहेड्स को कॉन्फ़िगर करते हैं। फ़िल और स्ट्रोक के अलावा, Shape चार अतिरिक्त इफ़ेक्ट ऑब्जेक्ट्स — ShadowFormat, ReflectionFormat, GlowFormat, और SoftEdgeFormat — को उजागर करता है, प्रत्येक अपने संबंधित विज़ुअल इफ़ेक्ट के लिए अपना रंग और पारदर्शिता प्रॉपर्टी रखता है।
स्थिति निर्धारण और टेक्स्ट रैपिंग
पेज या पैराग्राफ के सापेक्ष तैरते हुए आकार RelativeHorizontalPosition और RelativeVerticalPosition का उपयोग करके स्वयं को एंकर करते हैं — उदाहरण के तौर पर मार्जिन, पेज, या कॉलम पर — और आकार एंकरिंग के लिए RelativeHorizontalSize और RelativeVerticalSize के साथ जोड़े जाते हैं, साथ ही सरल बाएँ/केंद्र/दाएँ या ऊपर/मध्य/नीचे स्थान के लिए HorizontalAlignment और VerticalAlignment का उपयोग किया जाता है। आसपास का टेक्स्ट आकार के प्रति कैसे प्रतिक्रिया देता है, यह WrapType द्वारा नियंत्रित होता है, जिसके मानों में Inline, Square, Tight, TopBottom, और None शामिल हैं; Square और Tight रैपिंग के लिए, WrapSide इसे और अधिक Left, Right, Both, या Largest में सीमित करता है। FlipOrientation आकार को क्षैतिज या ऊर्ध्वाधर रूप से मिरर करता है बिना उसके निर्देशांक बदले, और Shape.AllowOverlap/Shape.BehindText फ्लैग्स यह निर्धारित करते हैं कि आकार अन्य तैरते कंटेंट और उसके नीचे के टेक्स्ट लेयर के साथ कैसे इंटरैक्ट करता है।
हस्ताक्षर पंक्तियाँ और क्षैतिज रेखाएँ
एक ही ड्रॉइंग मॉडल में दो और विशेषीकृत आकार प्रकार मौजूद हैं। SignatureLine, जो SignatureLineOptions के माध्यम से सम्मिलन समय पर कॉन्फ़िगर किया जाता है (गुणों में SignatureLineOptions.Signer, SignatureLineOptions.SignerTitle, SignatureLineOptions.Email, SignatureLineOptions.Instructions, SignatureLineOptions.ShowDate, और SignatureLineOptions.AllowComments शामिल हैं), प्रिंटेबल दस्तावेज़ों में दिखने वाले दृश्य हस्ताक्षर ब्लॉक को रेंडर करता है और एक बार हस्ताक्षर लागू होने पर SignatureLine.IsSigned और SignatureLine.IsValid को उजागर करता है — यह अन्यत्र कवर किए गए क्रिप्टोग्राफ़िक डिजिटल-हस्ताक्षर सत्यापन से अलग है, जो आकार के बजाय साइन किए गए दस्तावेज़ भागों के साथ काम करता है। HorizontalRuleFormat वह साधारण विभाजक रेखा को कवर करता है जो DocumentBuilder.InsertHorizontalRule() के साथ डाली जाती है, जिसमें HorizontalRuleFormat.WidthPercent, HorizontalRuleFormat.Height, HorizontalRuleFormat.NoShade, HorizontalRuleFormat.Color, और HorizontalRuleFormat.Alignment गुण होते हैं (अंतिम एक HorizontalRuleAlignment मान है)।
त्वरित प्रारंभ
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 के लिए एक प्रोजेक्ट रेफ़रेंस जोड़ें। इसके बाद, ड्रॉइंग लेयर के साथ काम करना इस पोस्ट में उपयोग किए गए पैटर्न का अनुसरण करता है: एक Document लोड या बनाएँ, उसके आकारों को Document.GetChildNodes(NodeType.Shape, true) से पार करें या DocumentBuilder मेथड जैसे DocumentBuilder.InsertImage(), DocumentBuilder.InsertGroupShape(), या DocumentBuilder.InsertHorizontalRule() से नया जोड़ें, फिर लौटाए गए Shape पर गुण पढ़ें या सेट करें — Shape.ImageData, Shape.TextBox, Shape.Fill, Shape.Stroke, Shape.WrapType, और बाकी — Document.Save() को कॉल करने से पहले।
समर्थित प्रारूप
| फ़ॉर्मेट | एक्सटेंशन | पढ़ें | लिखें |
|---|---|---|---|
| DOCX | .docx | ✓ | ✓ |
| DOCM | .docm | ✓ | ✓ |
| DOTX | .dotx | ✓ | ✓ |
| DOTM | .dotm | ✓ | ✓ |
| Flat OPC (सभी वेरिएंट) | (विभिन्न) | ✓ | ✓ |
| Markdown | .md | ✓ | ✓ |
| Text | .txt | ✓ | ✓ |
यह संस्करण जानबूझकर पेज लेआउट और रेंडरिंग को बाहर रखता है — कोई PDF, XPS, या इमेज एक्सपोर्ट नहीं, और कोई प्रिंटिंग नहीं — इसलिए किसी आकार का Shape.Bounds और लेआउट-निर्भर ज्योमेट्री दस्तावेज़ में संग्रहीत मानों को दर्शाता है न कि गणना किए गए पेज लेआउट को। अतिरिक्त फ़ॉर्मेट कन्वर्टर (DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3, और WordML) को नहीं पढ़ा या लिखा जाता; ये वही सबसिस्टम हैं जिन्हें व्यावसायिक कोडबेस से हटा दिया गया है ताकि यह संस्करण मुफ्त रहे।
ओपन सोर्स और लाइसेंसिंग
Aspose.Words FOSS for .NET MIT लाइसेंस के तहत जारी किया गया है, व्यावसायिक और व्यक्तिगत दोनों उपयोग के लिए मुफ्त है, बिना किसी रॉयल्टी या पुनर्वितरण प्रतिबंध के। पूर्ण स्रोत GitHub पर उपलब्ध है, Aspose.Words FOSS for .NET रिपॉजिटरी में।