كيفية العمل مع الأنماط في .NET

كيفية العمل مع الأنماط في .NET

يوضح هذا الدليل كيفية البحث عن الأنماط وتطبيقها وإنشاء أنماط الفقرات، الأحرف، الجداول، والقوائم في Aspose.Words FOSS لـ .NET، باستخدام Style, StyleCollection، و TableStyle الفئات. يغطي قراءة مجموعة أنماط المستند، البحث عن الأنماط بشكل موثوق عبر اللغات، تطبيق الأنماط على الفقرات والقطع، إنشاء ونسخ الأنماط، وتكوين تنسيق شرطي حسب المنطقة على أنماط الجداول.

دليل خطوة بخطوة

الخطوة 1: تثبيت الحزمة

Aspose.Words FOSS for .NET لا ينشر حزمة NuGet بعد – قم ببناء المكتبة من المصدر بدلاً من ذلك. استنسخ https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git، ثم ابنِ Aspose.Words.sln في وضع الإصدار باستخدام مجموعة تطوير .NET SDK وارجع إلى تجميع Aspose.Words الناتج من مشروعك. تستهدف المكتبة .NET Standard 2.0، لذا فهي تعمل على .NET Framework 4.6.2+ و.NET 6/8/10.


الخطوة 2: استيراد الفئات المطلوبة

أضف توجيه using Aspose.Words; – Style، StyleCollection، TableStyle، StyleType، StyleIdentifier، ConditionalStyle، ConditionalStyleCollection، وConditionalStyleType جميعها موجودة في مساحة الأسماء Aspose.Words إلى جانب Document.


الخطوة 3: قراءة مجموعة أنماط المستند

Document.Styles تُرجِع StyleCollection – كل Style المدمجة والمُعرفة من قبل المستخدم المرفقة بالمستند. StyleCollection.Count تُبلغ عن عدد الأنماط التي يحتويها، وDefaultFont / DefaultParagraphFormat تصف التنسيق الافتراضي على مستوى المستند الذي يرثه المحتوى الجديد قبل تطبيق أي نمط صريح.


الخطوة 4: البحث عن نمط بثقة

استرجِع نمطًا باستخدام اسمه الظاهر عبر الفهرس StyleCollection، styles[name]. بالنسبة للأنماط المدمجة، يُفضَّل استخدام نفس الفهرس مع قيمة تعداد StyleIdentifier بدلاً من ذلك – styles[sti] – الأسماء محلية، لكن قيم StyleIdentifier ليست كذلك، لذا فإن البحث بالمعرف يعمل بنفس الطريقة بغض النظر عن لغة المستند. تحقق من Style.Aliases للحصول على أسماء بديلة يتعرف عليها Word لنفس النمط إذا لم يجد الفهرس ما تتوقعه، وتحقق من Style.BuiltIn قبل إزالة أو إعادة تسمية نمط برمجيًا، لأن الأنماط المدمجة غالبًا ما تُشار إليها بالاسم في أماكن أخرى بالمستند.


الخطوة 5: تطبيق نمط على الفقرات أو القطاعات

تُظهر كائنات التنسيق التي تحمل نمطًا كلًا من خاصية Style (كائن Style نفسه) وخاصية StyleName (اختصار يُحَلّ أو يُنشئ نمطًا بالاسم). عيّن ParagraphFormat.Style أو ParagraphFormat.StyleName لتطبيق نمط فقرة، وFont.Style أو Font.StyleName لتطبيق نمط حرف على تنسيق القطاع. تعيين StyleName باسم غير موجود بالفعل في المجموعة يُنشئ ذلك النمط – تأكّد من وجود النمط عبر الفهرس StyleCollection أولًا، أو عيّن كائن Style مباشرةً إذا لم يكن هذا هو السلوك المقصود.


الخطوة 6: بناء تسلسلات الأنماط

اقرأ BaseStyleName لتحديد النمط الذي يرث منه نمط معين التنسيق غير المحدد، وLinkedStyleName لنمط فقرة/حرف مقترن (كما يعرّف Word للأنماط المدمجة مثل العنوان ونمط الحرف المرتبط به)، وNextParagraphStyleName للنمط الذي يعيّنه Word على فقرة جديدة تُكتب بعد فقرة تستخدم هذا النمط. عيّن BaseStyleName عند تعريف مجموعة من الأنماط ذات الصلة — مثل عائلة من أنماط العناوين التي يجب أن ترث جميعها اختيارات الخط من نمط أساسي واحد — بدلاً من تكرار نفس التنسيق على كل نمط.


الخطوة 7: إنشاء أو نسخ نمط

استدعِ StyleCollection.Add(type, name) مع StyleType (Paragraph، Character، Table أو List) واسم لإنشاء نمط جديد فارغ، ثم اضبط خصائص Font وParagraphFormat حسب الحاجة. لتكرار نمط موجود — بما في ذلك واحد من StyleCollection الخاص بـ Document مختلف — استدعِ StyleCollection.AddCopy(style) بدلاً من قراءة كل خاصية تنسيق وإعادة تطبيقها يدويًا. استدعِ Style.Remove() لحذف نمط من مجموعته.


الخطوة 8: تكوين أنماط الجداول والتنسيق الشرطي

TableStyle يوسّع Style بخصائص تخطيط الجدول — Alignment، CellSpacing، LeftIndent، Shading، VerticalAlignment، وخصائص الحشو الأربعة (LeftPadding، RightPadding، TopPadding، BottomPadding) — بالإضافة إلى RowStripe وColumnStripe، اللذين يتحكمان في عدد الصفوف أو الأعمدة التي يتكرر فيها نمط التظليل. لتنسيق كل منطقة على حدة، قم بتكوين TableStyle.ConditionalStyles — ConditionalStyleCollection يحتوي على ConditionalStyle واحد لكل منطقة: FirstRow، LastRow، FirstColumn، LastColumn، OddRowBanding، EvenRowBanding، OddColumnBanding، EvenColumnBanding، وخلايا الزوايا الأربعة (TopLeftCell، TopRightCell، BottomLeftCell، BottomRightCell). كل ConditionalStyle يحمل Font وParagraphFormat وShading وBorders الخاصين به، بالإضافة إلى حشو الخلية، مع Type الذي يوضح أي منطقة ConditionalStyleType يمثلها؛ اضبط التنسيق على هذه المناطق بدلاً من الصفوف الفردية للجدول للحصول على تنسيق متظلل أو صف رأس أو خلية زاوية يبقى ثابتًا عند تعديل الجدول.


الخطوة 9: إعادة تعيين أو إزالة التنسيق

استدعِ ConditionalStyle.ClearFormatting() لإعادة تعيين منطقة شرطية واحدة، أو ConditionalStyleCollection.ClearFormatting() لإعادة تعيين جميع المناطق على TableStyle مرة واحدة. StyleCollection.ClearQuickStyleGallery() يزيل كل نمط من معرض الأنماط السريعة في واجهة Word دون حذف الأنماط نفسها — مفيد لتقليص المعرض دون التأثير على محتوى المستند.

المشكلات الشائعة والإصلاحات

StyleCollection indexer يُعيد null لعملية البحث عن الاسم اسم النمط غير موجود في هذا المستند، أو أن نمطًا مدمجًا لم يُستخدم بعد، لذا لم يقم Word بإنشائه. تحقق Style.Aliases من أسماء بديلة، أو استخدم the StyleCollection فهرس مع StyleIdentifier بدلاً من الأنماط المدمجة.

إعداد StyleName ينشئ نمطًا جديدًا بشكل غير متوقع StyleName ينشئ النمط المسماى إذا لم يكن موجودًا بالفعل في المجموعة. استخدم الـ StyleCollection الفهرس أولاً لتأكيد وجود النمط، أو قم بتعيين الـ Style الكائن مباشرةً عبر الـ Style الخاصية بدلاً من StyleName.

لا يظهر تظليل الجدول بعد تطبيق TableStyle مناطق التنسيق الشرطي – OddRowBanding, EvenRowBanding, ومثيلتها – لم يتم تكوينها على TableStyle.ConditionalStyles. اضبط التنسيق على الملائم ConditionalStyle الإدخالات في ConditionalStyleCollection.

تغيير النمط لا يؤثر على المحتوى الذي يستخدم النمط بالفعل التنسيق المباشر (اليدوي) المطبق فوق النمط يتفوق على إعدادات النمط نفسها. قم بإزالة التنسيق المباشر على المقاطع أو الفقرات المتأثرة، أو اضبط Style.AutomaticallyUpdate بحيث يعيد النمط تعريف نفسه بناءً على ذلك التنسيق اليدوي.

فشل البحث عن نمط مدمج في مستند كُتب بلغة أخرى ال StyleCollection يقوم الفهرس بالمطابقة على اسم العرض، الذي يتم تعريبها، عند استدعائه باسم. استخدم نفس الفهرس مع StyleIdentifier قيمة التعداد بدلاً من ذلك، لأن هذا المعرف لا يعتمد على اللغة.

الأسئلة المتكررة

كيف أحصل على مجموعة جميع الأنماط في مستند؟

اقرأ Document.Styles، الذي يُعيد StyleCollection يحتوي على كل Style المدمجة والمُعرفة من قبل المستخدم في ذلك المستند.

ما الفرق بين Style و StyleIdentifier؟

Style هو كائن النمط الفعلي مع تنسيقه؛ StyleIdentifier هو قيمة تعداد مستقلة عن اللغة تُستخدم للبحث عن نمط مدمج محدد بغض النظر عن لغة المستند، عبر فهرس StyleCollection.

كيف تختلف أنماط الجداول عن أنماط الفقرات أو الأحرف؟

TableStyle هو فئة فرعية من Style تضيف خصائص تخطيط الجدول (Alignment, CellSpacing, padding) ومجموعة ConditionalStyles لتنسيق خاص بالمناطق مثل الصفوف المتناوبة، صفوف الرأس، والخلايا الزاوية – مفاهيم تنسيق لا تنطبق على أنماط الفقرات أو الأحرف.

هل يمكنني إنشاء نمط جديد تمامًا بدلاً من تعديل نمط موجود؟

نعم – استدعِ StyleCollection.Add(type, name) مع StyleType المطلوب واسم جديد لإنشاء نمط فارغ، ثم عيّن خصائص تنسيقه (Font، ParagraphFormat، وما إلى ذلك لأنماط الفقرات أو الأحرف).

كيف يمكنني تكرار نمط، بما في ذلك من مستند آخر؟

استدعِ StyleCollection.AddCopy(style)، مع تمرير كائن Style – الذي يمكن أن يأتي من StyleCollection الخاص بـ Document مختلف – لإضافة نسخة منه إلى المجموعة المستهدفة.

انظر أيضاً

 العربية