إدارة مربع النص
النصوص على الشرائح عادةً ما توجد في مربعات نص أو أشكال. لذلك، لإضافة نص إلى شريحة، عليك إضافة مربع نص أولاً ثم وضع بعض النصوص داخل مربع النص.
للسماح لك بإضافة شكل يمكنه الاحتفاظ بالنص، توفر Aspose.Slides for .NET واجهة IAutoShape.
ملحوظة
توفر Aspose.Slides أيضًا واجهة IShape للسماح لك بإضافة أشكال إلى الشرائح. ومع ذلك، ليست جميع الأشكال المضافة من خلال واجهة IShape
يمكنها الاحتفاظ بالنص. الأشكل المضافة من خلال واجهة IAutoShape عادةً ما تحتوي على نص.
لذلك، عند التعامل مع شكل موجود تريد إضافة نص له، قد ترغب في التحقق والتأكيد أنه تم تحويله من خلال واجهة IAutoShape
. فقط حينها ستكون قادرًا على العمل مع TextFrame ، وهي خاصية تحت IAutoShape
. راجع قسم تحديث النص في هذه الصفحة.
إنشاء مربع نص على الشريحة
- إنشاء مثيل من فئة Presentation.
- الحصول على مرجع الشريحة الأولى من خلال فهرسها.
- إضافة كائن IAutoShape مع ShapeType تم تعيينه كـ
Rectangle
في موقع محدد على الشريحة والحصول على مرجع لكائنIAutoShape
المضاف حديثًا. - إضافة خاصية
TextFrame
إلى الكائنIAutoShape
التي ستحتوي على نص. في المثال أدناه، أضفنا هذا النص: Aspose TextBox - أخيرًا، كتابة ملف PPTX من خلال كائن
Presentation
.
توضح هذه الشيفرة بلغة C#—تنفيذ الخطوات المذكورة أعلاه—كيفية إضافة نص إلى شريحة:
// يهيئ PresentationEx
using (Presentation pres = new Presentation())
{
// يحصل على الشريحة الأولى في العرض التقديمي
ISlide sld = pres.Slides[0];
// يضيف AutoShape بنوع تم تعيينه كـ Rectangle
IAutoShape ashp = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// يضيف TextFrame إلى Rectangle
ashp.AddTextFrame(" ");
// يصل إلى إطار النص
ITextFrame txtFrame = ashp.TextFrame;
// ينشئ كائن Paragraph لإطار النص
IParagraph para = txtFrame.Paragraphs[0];
// ينشئ كائن Portion للفقرة
IPortion portion = para.Portions[0];
// يحدد النص
portion.Text = "Aspose TextBox";
// يحفظ العرض التقديمي على القرص
pres.Save("TextBox_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
التحقق من شكل مربع النص
توفر Aspose.Slides خاصية IsTextBox (من فئة AutoShape) للسماح لك بفحص الأشكال والعثور على مربعات النص.
توضح هذه الشيفرة بلغة C# كيفية التحقق مما إذا تم إنشاء شكل كمربع نص:
using (Presentation pres = new Presentation("pres.pptx"))
{
Aspose.Slides.LowCode.ForEach.Shape(pres, (shape, slide, index) =>
{
if (shape is AutoShape autoShape)
{
Console.WriteLine(autoShape.IsTextBox ? "الشكل هو مربع نص" : "الشكل ليس مربع نص");
}
});
}
إضافة عمود في مربع النص
توفر Aspose.Slides خاصيات ColumnCount و ColumnSpacing (من واجهة ITextFrameFormat وفئة TextFrameFormat) للسماح لك بإضافة أعمدة إلى مربعات النص. يمكنك تحديد عدد الأعمدة في مربع النص ثم تحديد المسافة بالنقاط بين الأعمدة.
توضح هذه الشيفرة بلغة C# العملية الموضحة:
using (Presentation presentation = new Presentation())
{
// يحصل على الشريحة الأولى في العرض التقديمي
ISlide slide = presentation.Slides[0];
// يضيف AutoShape بنوع تم تعيينه كـ Rectangle
IAutoShape aShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// يضيف TextFrame إلى Rectangle
aShape.AddTextFrame("جميع هذه الأعمدة مقيدة لتكون داخل حاوية نص واحدة -- " +
"يمكنك إضافة أو حذف نص وسيتم تعديل النص الجديد أو المتبقي " +
"لتدفق داخل الحاوية. لا يمكنك الحصول على تدفق النص من حاوية واحدة إلى أخرى -- " +
"كما أخبرناك، خيارات الأعمدة للنص في PowerPoint محدودة!");
// يحصل على تنسيق النص لإطار النص
ITextFrameFormat format = aShape.TextFrame.TextFrameFormat;
// يحدد عدد الأعمدة في TextFrame
format.ColumnCount = 3;
// يحدد المسافة بين الأعمدة
format.ColumnSpacing = 10;
// يحفظ العرض التقديمي
presentation.Save("ColumnCount.pptx", SaveFormat.Pptx);
}
إضافة عمود في إطار النص
توفر Aspose.Slides for .NET خاصية ColumnCount (من واجهة ITextFrameFormat) التي تتيح لك إضافة أعمدة في إطارات النص. من خلال هذه الخاصية، يمكنك تحديد عدد الأعمدة المفضل لديك في إطار النص.
توضح هذه الشيفرة بلغة C# كيفية إضافة عمود داخل إطار النص:
string outPptxFileName = "ColumnsTest.pptx";
using (Presentation pres = new Presentation())
{
IAutoShape shape1 = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
TextFrameFormat format = (TextFrameFormat)shape1.TextFrame.TextFrameFormat;
format.ColumnCount = 2;
shape1.TextFrame.Text = "جميع هذه الأعمدة مُجبرة على البقاء داخل حاوية نص واحدة -- " +
"يمكنك إضافة أو حذف نص - وسيتم تعديل النص الجديد أو المتبقي تلقائيًا " +
"للبقاء داخل الحاوية. لا يمكنك الحصول على تدفق النص من حاوية واحدة " +
"إلى أخرى، رغم ذلك -- لأن خيارات الأعمدة للنص في PowerPoint محدودة!";
pres.Save(outPptxFileName, SaveFormat.Pptx);
using (Presentation test = new Presentation(outPptxFileName))
{
Debug.Assert(2 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnCount);
Debug.Assert(double.NaN == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnSpacing);
}
format.ColumnSpacing = 20;
pres.Save(outPptxFileName, SaveFormat.Pptx);
using (Presentation test = new Presentation(outPptxFileName))
{
Debug.Assert(2 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnCount);
Debug.Assert(20 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnSpacing);
}
format.ColumnCount = 3;
format.ColumnSpacing = 15;
pres.Save(outPptxFileName, SaveFormat.Pptx);
using (Presentation test = new Presentation(outPptxFileName))
{
Debug.Assert(3 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnCount);
Debug.Assert(15 == ((AutoShape)test.Slides[0].Shapes[0]).TextFrame.TextFrameFormat.ColumnSpacing);
}
}
تحديث النص
تسمح Aspose.Slides لك بتغيير أو تحديث النص الموجود في مربع نص أو جميع النصوص الموجودة في عرض تقديمي.
توضح هذه الشيفرة بلغة C# عملية يقوم فيها بتحديث أو تغيير جميع النصوص في عرض تقديمي:
using(Presentation pres = new Presentation("text.pptx"))
{
foreach (ISlide slide in pres.Slides)
{
foreach (IShape shape in slide.Shapes)
{
if (shape is IAutoShape autoShape) // يتحقق مما إذا كان الشكل يدعم إطار النص (IAutoShape).
{
foreach (IParagraph paragraph in autoShape.TextFrame.Paragraphs) // يتكرر عبر الفقرات في إطار النص
{
foreach (IPortion portion in paragraph.Portions) // يتكرر عبر كل جزء في الفقرة
{
portion.Text = portion.Text.Replace("years", "months"); // يغير النص
portion.PortionFormat.FontBold = NullableBool.True; // يغير التنسيق
}
}
}
}
}
// يحفظ العرض التقديمي المعدل
pres.Save("text-changed.pptx", SaveFormat.Pptx);
}
إضافة مربع نص مع ارتباط تشعبي
يمكنك إدراج ارتباط داخل مربع نص. عند النقر على مربع النص، يتم توجيه المستخدمين لفتح الارتباط.
- إنشاء مثيل من فئة
Presentation
. - الحصول على مرجع الشريحة الأولى من خلال فهرسها.
- إضافة كائن
AutoShape
معShapeType
تم تعيينه كـRectangle
في موقع محدد على الشريحة والحصول على مرجع للكائن AutoShape المضاف حديثًا. - إضافة
TextFrame
إلى كائنAutoShape
يحتوي على Aspose TextBox كنص افتراضي. - إنشاء مثيل من فئة
IHyperlinkManager
. - تعيين كائن
IHyperlinkManager
إلى خاصية HyperlinkClick المرتبطة بجزء النص المفضل لديك منTextFrame
. - أخيرًا، كتابة ملف PPTX من خلال كائن
Presentation
.
توضح هذه الشيفرة بلغة C#—تنفيذ الخطوات المذكورة أعلاه—كيفية إضافة مربع نص مع ارتباط تشعبي إلى شريحة:
// يهيئ فئة Presentation تمثل PPTX
Presentation pptxPresentation = new Presentation();
// يحصل على الشريحة الأولى في العرض التقديمي
ISlide slide = pptxPresentation.Slides[0];
// يضيف كائن AutoShape بنوع تم تعيينه كـ Rectangle
IShape pptxShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 150, 150, 50);
// يحول الشكل إلى AutoShape
IAutoShape pptxAutoShape = (IAutoShape)pptxShape;
// يصل إلى خاصية ITextFrame المرتبطة بـ AutoShape
pptxAutoShape.AddTextFrame("");
ITextFrame ITextFrame = pptxAutoShape.TextFrame;
// يضيف بعض النصوص إلى إطار
ITextFrame.Paragraphs[0].Portions[0].Text = "Aspose.Slides";
// يحدد الارتباط للجزء النصي
IHyperlinkManager HypMan = ITextFrame.Paragraphs[0].Portions[0].PortionFormat.HyperlinkManager;
HypMan.SetExternalHyperlinkClick("http://www.aspose.com");
// يحفظ عرض PPTX
pptxPresentation.Save("hLinkPPTX_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);