Word दस्तावेज़ों में .NET में ड्राइंग आकार कैसे जोड़ें
यह मार्गदर्शिका दिखाती है कि .NET के लिए Aspose.Words FOSS का उपयोग करके Word दस्तावेज़ की ड्रॉइंग लेयर में सामग्री कैसे जोड़ें: एक AutoShape डालना, चित्र जोड़ना, उसका स्थान निर्धारित करना और उसके चारों ओर टेक्स्ट रैप करना, उसे भरना और शैली देना, कई शैप्स को समूहित करना, और वॉटरमार्क सेट करना। .NET के लिए Aspose.Words FOSS NuGet के माध्यम से या स्रोत से बनाकर उपलब्ध है।
स्टेप-बाय-स्टेप गाइड
चरण 1: लाइब्रेरी प्राप्त करें
रिपॉज़िटरी को क्लोन करें और बिल्ड करें Aspose.Words.sln रिलीज़ कॉन्फ़िगरेशन में, फिर एक प्रोजेक्ट रेफ़रेंस जोड़ें Aspose.Words.csproj अपने स्वयं के .NET प्रोजेक्ट से, जैसा कि वर्णन में है इंस्टॉलेशन गाइड. जोड़ें using Aspose.Words; and using Aspose.Words.Drawing; शेप्स के साथ काम करने वाली किसी भी फ़ाइल के शीर्ष पर रखें।
चरण 2: एक AutoShape जोड़ें
एक शैप को सीधे new Shape(doc, shapeType) के साथ बनाएँ, जहाँ shapeType एक ShapeType मान है जैसे Rectangle, Ellipse, Star, या TextBox, फिर इसे DocumentBuilder.InsertNode(node) के द्वारा ट्री में डालें। Shape वह ठोस, सील्ड क्लास है जिसे आप बनाते और कॉन्फ़िगर करते हैं; यह एब्स्ट्रैक्ट ShapeBase से व्युत्पन्न है, जो स्थिति (Left, Top, Width, Height, Rotation) और फ़ॉर्मेटिंग सब-ऑब्जेक्ट्स (Fill, Stroke, ShadowFormat, Glow, Reflection) को परिभाषित करता है, जो GroupShape के साथ साझा होते हैं।
चरण 3: चित्र जोड़ें
DocumentBuilder.InsertImage चित्रों के लिए प्रत्यक्ष मार्ग है: ओवरलोड्स एक Image, फ़ाइल पथ, एक Stream, या कच्चे बाइट एरे को स्वीकार करते हैं, साथ ही आगे के ओवरलोड्स हैं जो स्पष्ट width/height या पूर्ण स्थितिक आर्ग्यूमेंट्स (horzPos, left, vertPos, top, width, height, wrapType) लेते हैं। परिणामी Shape की ImageData प्रॉपर्टी चित्र डेटा रखती है — छवि बदलने के लिए ImageData.SetImage(...) को कॉल करें, और बुनियादी समायोजन के लिए CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast, और GrayScale का उपयोग करें।
चरण 4: आकार को स्थित करें और टेक्स्ट को लपेटें
एक इनलाइन आकार (InsertImage का डिफ़ॉल्ट परिणाम) आसपास के टेक्स्ट के साथ बहता है और जब तक वह फ़्लोट नहीं करता, तब तक स्थितिक गुणों को अनदेखा करता है — यह पुष्टि करने के लिए कि आकार कौनसे मोड में है, IsInline देखें। आकार को फ़्लोट करने के लिए, WrapType को गैर-इनलाइन मान पर सेट करें और RelativeHorizontalPosition / RelativeVerticalPosition (प्रत्येक Page, Margin, Column या समान एंकर के सापेक्ष) को Left/Top ऑफ़सेट्स के साथ सेट करें। WrapSide साइड-स्पेसिफिक रैपिंग को नियंत्रित करता है, और HorizontalAlignment / VerticalAlignment स्पष्ट ऑफ़सेट्स के बजाय सरल सापेक्ष संरेखण को संभालते हैं।
चरण 5: आकार को भरें और शैली दें
Shape.Fill (एक Fill ऑब्जेक्ट) आकार के अंदरूनी भाग को पेंट करता है: फ्लैट रंग के लिए Fill.Solid(color), ग्रेडिएंट्स के लिए Fill.OneColorGradient(...) / Fill.TwoColorGradient(...), पैटर्न के लिए Fill.Patterned(patternType), और चित्र भराव के लिए Fill.SetImage(...) — वर्तमान में कौन सा सक्रिय है, यह FillType रिपोर्ट करता है। आउटलाइन Stroke प्रॉपर्टी से आती है। इफ़ेक्ट्स के लिए, ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat), और SoftEdge (SoftEdgeFormat) प्रत्येक अपने सेटिंग्स को उजागर करते हैं और एक Remove() मेथड प्रदान करते हैं जो इफ़ेक्ट को फिर से ‘कोई नहीं’ पर रीसेट करता है।
चरण 6: कई आकारों को समूहित करें
DocumentBuilder.InsertGroupShape(shapes) के साथ कई आकारों को एक इकाई में मिलाएं, जो एक GroupShape लौटाता है। GroupShape स्वयं एक ShapeBase है, इसलिए इसके पास अपने स्वयं के Fill, ShadowFormat, Glow, और Reflection होते हैं जो पूरे समूह पर लागू होते हैं; समूह के समन्वय परिवर्तन को स्थिर रखने के लिए व्यक्तिगत बच्चों के बजाय GroupShape को स्थानांतरित या आकार बदलें। टेक्स्ट ले जाने वाले आकार के लिए, Shape.TextBox (एक TextBox ऑब्जेक्ट) पैडिंग (InternalMarginLeft/Right/Top/Bottom), ऑटो-साइज़िंग (FitShapeToText), टेक्स्ट दिशा (LayoutFlow), और वर्टिकल एलाइमेंट (VerticalAnchor) को नियंत्रित करता है।
चरण 7: वॉटरमार्क जोड़ें
Document.Watermark एकल दस्तावेज-व्यापी वॉटरमार्क को प्रबंधित करता है जो किसी भी मैन्युअल रूप से सम्मिलित आकृति से स्वतंत्र है। टेक्स्ट वॉटरमार्क के लिए Watermark.SetText(text) या SetText(text, options) को कॉल करें, या चित्र वॉटरमार्क के लिए SetImage(...) का उपयोग करें; Watermark.Remove() इसे साफ़ करता है, और Watermark.Type वर्तमान WatermarkType (Text, Image, या None) की रिपोर्ट करता है। TextWatermarkOptions FontFamily, FontSize, Color, और Layout (WatermarkLayout.Horizontal या Diagonal) सेट करता है; ImageWatermarkOptions Scale और IsWashout सेट करता है।
सामान्य समस्याएँ और समाधान
Setting Left/Top एक शेप पर कोई दृश्यमान प्रभाव नहीं डालता। शेप अभी भी इनलाइन है (IsInline == true). सेट WrapType को एक फ्लोटिंग वैल्यू पर सेट करें और RelativeHorizontalPosition/RelativeVerticalPosition ताकि ऑफसेट प्रॉपर्टीज़ प्रभावी हो सकें।
Shape.ImageData कुछ नहीं थ्रो करता या रिटर्न करता है। आकार एक पिक्चर शेप नहीं है। जांचें Shape.HasImage पढ़ने से पहले ImageData.
किसी समूह के चाइल्ड शेप्स एक साथ नहीं चलते। बच्चों को समूह के माध्यम से नहीं, व्यक्तिगत रूप से पुनःस्थापित किया गया। मूव या रिसाइज़ करें GroupShape खुद, इसलिए इसका निर्देशांक परिवर्तन प्रत्येक बच्चे पर लागू होता है।
वॉटरमार्क पाठ अनुरोधित फ़ॉन्ट का उपयोग नहीं करता है। नहीं TextWatermarkOptions पारित किया गया। कॉल Watermark.SetText(text, options) के साथ एक TextWatermarkOptions इंस्टेंस जिसका FontFamily सेट किया गया है।
अक्सर पूछे जाने वाले प्रश्न
Shape और ShapeBase में क्या अंतर है?
ShapeBase वह एब्स्ट्रैक्ट बेस क्लास है जो Shape और GroupShape द्वारा साझा किया जाता है। जब इसे दोनों प्रकार को समान रूप से संभालना चाहिए तो ShapeBase के विरुद्ध कोड लिखें; एकल ड्रॉइंग ऑब्जेक्ट के विशिष्ट सदस्य, जैसे ImageData, के लिए सीधे Shape का उपयोग करें।
मैं विशिष्ट आकार के साथ चित्र कैसे सम्मिलित करूँ?
एक DocumentBuilder.InsertImage ओवरलोड का उपयोग करें जो स्पष्ट width और height तर्क स्वीकार करता है, साथ ही इमेज स्रोत (एक Image, फ़ाइल पथ, Stream, या बाइट ऐरे) के साथ।
मैं आकार को टेक्स्ट के साथ इनलाइन रहने के बजाय फ़्लोट कैसे बना सकता हूँ?
इसका WrapType को गैर-इनलाइन मान पर सेट करें और RelativeHorizontalPosition / RelativeVerticalPosition को इस तरह सेट करें कि Left/Top ऑफ़सेट पेज, मार्जिन, या कॉलम के सापेक्ष व्याख्यायित हों।
क्या एक दस्तावेज़ एक साथ टेक्स्ट और इमेज दोनों वॉटरमार्क रख सकता है?
No. Document.Watermark.Type वर्तमान वॉटरमार्क के प्रकार की रिपोर्ट करता है; SetText या SetImage को फिर से कॉल करने पर पहले सेट किया गया कोई भी वॉटरमार्क बदल दिया जाता है।
मैं किसी आकार से छाया या प्रतिबिंब को कैसे हटाऊँ?
संबंधित फ़ॉर्मेटिंग ऑब्जेक्ट पर Remove() को कॉल करें — Shape.ShadowFormat.Remove() या Shape.Reflection.Remove()।