كيفية تنسيق النص في .NET
توفر Aspose.Slides FOSS لـ .NET تنسيق نص دقيق من خلال الفئة PortionFormat. الـ Portion هو أصغر وحدة مستقلة للنص؛ وهو يطابق تشغيل تنسيق واحد داخل الفقرة. يوضح هذا الدليل كيفية تطبيق تنسيق الغامق والمائل وحجم الخط واللون على النص في عرض تقديمي.
دليل خطوة بخطوة
الخطوة 1: تثبيت الحزمة
dotnet add package Aspose.Slides.Fossالخطوة 2: إضافة شكل مع إطار نص
قبل تنسيق النص، يجب أن يحتوي الشكل على TextFrame. استخدم shape.AddTextFrame() لإنشاء واحد.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Default text: will be formatted");
prs.Save("output.pptx", SaveFormat.Pptx);الخطوة 3: الوصول إلى TextFrame
shape.AddTextFrame() تُعيد كائن TextFrame. يمكنك أيضًا استرجاعه لاحقًا عبر shape.TextFrame.
var tf = shape.TextFrame; // if the frame already exists
var tf = shape.AddTextFrame(""); // creates a new frameيحتوي TextFrame على قائمة من كائنات Paragraph (tf.Paragraphs). كل Paragraph يحتوي على كائنات Portion (paragraph.Portions).
الخطوة 4: تطبيق التنسيق العريض والمائل
استخدم PortionFormat.FontBold و PortionFormat.FontItalic. هذه الخصائص تقبل NullableBool.True أو NullableBool.False أو NullableBool.NotDefined (وراثة من الرئيس).
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Bold and italic text");
var fmt = tf.Paragraphs[0].Portions[0].PortionFormat;
fmt.FontBold = NullableBool.True;
fmt.FontItalic = NullableBool.True;
prs.Save("bold-italic.pptx", SaveFormat.Pptx);الخطوة 5: تعيين حجم الخط واللون
قم بتعيين PortionFormat.FontHeight للحجم (بالنقاط) واستخدم FillFormat للون.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Large corporate-blue heading");
var fmt = tf.Paragraphs[0].Portions[0].PortionFormat;
fmt.FontHeight = 32; // 32pt font
fmt.FontBold = NullableBool.True;
fmt.FillFormat.FillType = FillType.Solid;
fmt.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 0, 70, 127);
prs.Save("colored-text.pptx", SaveFormat.Pptx);Color.FromArgb(alpha, red, green, blue) يقبل القيم من 0 إلى 255 لكل قناة.
الخطوة 6: أجزاء متعددة في فقرة واحدة
يمكن لفقرة واحدة أن تحتوي على عدة أجزاء بتنسيقات مختلفة. أضف Portion جديدًا إلى مجموعة Portions الخاصة بالفقرة:
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 600, 100);
var tf = shape.AddTextFrame(""); // start with empty frame
var paragraph = tf.Paragraphs[0];
// First portion: normal text
var portion1 = paragraph.Portions[0];
portion1.Text = "Normal text followed by ";
portion1.PortionFormat.FontHeight = 20;
// Second portion: bold red text
var portion2 = new Portion();
portion2.Text = "bold red text";
portion2.PortionFormat.FontHeight = 20;
portion2.PortionFormat.FontBold = NullableBool.True;
portion2.PortionFormat.FillFormat.FillType = FillType.Solid;
portion2.PortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);
paragraph.Portions.Add(portion2);
prs.Save("mixed-format.pptx", SaveFormat.Pptx);المشكلات الشائعة والحلول
النص يظهر باللون الأسود حتى بعد تعيين اللون
تأكد من ضبط FillFormat.FillType = FillType.Solid قبل تعيين اللون. بدون ضبط نوع التعبئة، قد لا يكون لتغيير اللون أي تأثير.
NullableBool.True مقابل true
PortionFormat.FontBold يتوقع NullableBool.True، وليس C# true. تعيين C# true لن ينجح في التجميع لأن الأنواع غير متوافقة.
الخط لا يظهر في الملف المحفوظ
تحدد خاصية LatinFont عائلة الخط اللاتيني. إذا لم يتم تعيينها، يُستخدم خط سمة العرض. يجب تضمين الخطوط المخصصة أو أن تكون متاحة على جهاز العرض.
الأسئلة المتكررة
كيف يمكنني تغيير عائلة الخط؟
مجموعة PortionFormat.LatinFont:
fmt.LatinFont = new FontData("Arial");FontData يقبل اسم عائلة الخط كسلسلة.
كيف أضبط محاذاة الفقرة؟
استخدم ParagraphFormat.Alignment:
tf.Paragraphs[0].ParagraphFormat.Alignment = TextAlignment.Center;القيم المدعومة: Left, Center, Right, Justify.
كيف أضبط تباعد الأسطر؟
استخدم ParagraphFormat.SpaceBefore (نقاط قبل الفقرة) أو ParagraphFormat.SpaceAfter (نقاط بعد الفقرة):
tf.Paragraphs[0].ParagraphFormat.SpaceBefore = 12; // 12pt before
tf.Paragraphs[0].ParagraphFormat.SpaceAfter = 6; // 6pt after