مقدمة
تضع مستندات Word الصور ومربعات النص وغيرها من الكائنات العائمة في طبقة رسم منفصلة عن التدفق العادي للفقرات والجداول. Aspose.Words FOSS لـ .NET يكشف عن هذه الطبقة عبر فئات Shape و ShapeBase، مما يوفر وصولًا برمجيًا إلى نفس نموذج AutoShape، الصورة، مربع النص، وكائن OLE الذي يستخدمه Word داخليًا. يوضح هذا الدليل كيفية تمثيل المكتبة لهذه كائنات الرسم ومعالجتها — الموقع، تنسيق التعبئة والحدود، الصور المضمنة، والنص داخل الشكل — عبر مستندات DOCX و DOCM و DOTX و DOTM.
هذا مفيد للكود الذي يبني قوالب تقارير أو رؤوس رسائل مع شعار أو رسم موضع، أو يولد مستندات تحتوي على مربعات نص عائمة وتعليقات، أو يفحص الأشكال الموجودة بالفعل في مستند تم رفعه — استخراج بايتات الصورة المضمنة، قراءة اسم الموقع في سطر التوقيع، أو إعادة وضع صورة موجودة.
Aspose.Words FOSS لـ .NET صُدر تحت ترخيص MIT ويستهدف .NET Standard 2.0، لذا يعمل على .NET Framework 4.6.2+ و .NET 6 و 8 و 10 دون أي تبعيات أصلية. قم بتثبيته عبر NuGet، أو بنائه من المصدر (انظر البداية السريعة أدناه). إنه نفس محرك المستندات Aspose.Words المستخدم تجاريًا، ليس إعادة كتابة أو غلاف، لذا فالفئات Shape وطبقة الرسم الموصوفة هنا هي API الإنتاجية.
الميزات الرئيسية
نموذج كائن الشكل و ShapeBase
كل AutoShape، ومربع نص، وصورة مدمجة، وكائن OLE، أو عنصر تحكم ActiveX مثبت في مستند Word يُمثَّل بواسطة الفئة Shape — مغلقة، ومبنية على الفئة الأساسية المجردة ShapeBase. كلاهما يشتركان في نفس سطح التحديد والتنسيق: Shape.Left، Shape.Top، Shape.Width، Shape.Height، Shape.Rotation، وShape.ZOrder للجيومتري، بالإضافة إلى أعلام Shape.IsGroup، Shape.IsImage، Shape.IsWordArt، وShape.IsInline التي تصف نوع الكائن الذي تحمله الحالة المعطاة. تعداد ShapeType يعدد الأنواع المحددة للأشكال التي يتعرف عليها Word — مستطيل، قطع ناقص، خط، سهم، عائلة من أنواع التعليقات والموصلات، TextBox، صورة، و 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 لـ .NET تم إصداره تحت رخصة MIT، مجاني للاستخدام التجاري والشخصي دون أي حقوق ملكية أو قيود على إعادة التوزيع. الشيفرة الكاملة متاحة على GitHub في Aspose.Words FOSS لـ .NET مستودع.