إدارة مربع النص
تعتمد النصوص في الشرائح عادةً على مربعات نص أو أشكال. لذلك، لإضافة نص إلى شريحة، يجب عليك إضافة مربع نص ثم وضع بعض النصوص داخل مربع النص. يوفر Aspose.Slides لـ Java واجهة IAutoShape التي تتيح لك إضافة شكل يحتوي على نص.
معلومات
يقدم Aspose.Slides أيضًا واجهة IShape التي تسمح لك بإضافة أشكال إلى الشرائح. ومع ذلك، ليست جميع الأشكال المضافة من خلال واجهةIShape
يمكن أن تحتوي على نص. ولكن الأشكال المضافة من خلال واجهة IAutoShape قد تحتوي على نص.
ملاحظة
لذلك، عند التعامل مع شكل ترغب في إضافة نص إليه، قد ترغب في التحقق والتأكيد بأنه تم تحويله من خلال واجهةIAutoShape
. فقط عندها ستتمكن من العمل مع TextFrame، وهو خاصية تحت IAutoShape
. انظر قسم تحديث النص في هذه الصفحة.
إنشاء مربع نص على الشريحة
لإنشاء مربع نص على الشريحة، اتبع هذه الخطوات:
- أنشئ مثيلًا من فئة Presentation.
- احصل على مرجع للشريحة الأولى في العرض التقديمي الذي تم إنشاؤه حديثًا.
- أضف كائن IAutoShape مع إعداد ShapeType كـ
Rectangle
في موضع محدد على الشريحة واحصل على مرجع لكائنIAutoShape
الذي تم إضافته مؤخرًا. - أضف خاصية
TextFrame
إلى كائنIAutoShape
الذي سيحتوي على نص. في المثال أدناه، أضفنا هذا النص: Aspose TextBox - أخيرًا، اكتب ملف PPTX من خلال كائن
Presentation
.
يوضح هذا الكود بلغة Java - تنفيذ الخطوات السابقة - كيفية إضافة نص إلى شريحة:
// ينشئ كائن Presentation
Presentation pres = new Presentation();
try {
// يحصل على الشريحة الأولى في العرض التقديمي
ISlide sld = pres.getSlides().get_Item(0);
// يضيف AutoShape مع تعيين النوع كـ Rectangle
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// يضيف TextFrame إلى المستطيل
ashp.addTextFrame(" ");
// يصل إلى إطار النص
ITextFrame txtFrame = ashp.getTextFrame();
// ينشئ كائن Paragraph لإطار النص
IParagraph para = txtFrame.getParagraphs().get_Item(0);
// ينشئ كائن Portion للفقرة
IPortion portion = para.getPortions().get_Item(0);
// يحدد النص
portion.setText("Aspose TextBox");
// يحفظ العرض التقديمي على القرص
pres.save("TextBox_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
التحقق من شكل مربع النص
يوفر Aspose.Slides خاصية isTextBox() (من فئة AutoShape) التي تتيح لك فحص الأشكال والعثور على مربعات النص.
يوضح هذا الكود بلغة Java كيفية التحقق مما إذا كان الشكل قد تم إنشاؤه كمربع نص:
Presentation pres = new Presentation("pres.pptx");
try {
ForEach.shape(pres, (shape, slide, index) ->
{
if (shape instanceof AutoShape)
{
AutoShape autoShape = (AutoShape)shape;
System.out.println(autoShape.isTextBox() ? "النموذج هو مربع نص" : "النموذج ليس مربع نص");
}
});
} finally {
if (pres != null) pres.dispose();
}
إضافة عمود في مربع النص
يوفر Aspose.Slides خاصيتي ColumnCount و ColumnSpacing (من واجهة ITextFrameFormat وفئة TextFrameFormat) التي تتيح لك إضافة أعمدة إلى مربعات النص. يمكنك تحديد عدد الأعمدة في مربع نص وتحديد مقدار التباعد بالنقاط بين الأعمدة.
يوضح هذا الكود بلغة Java العملية الموصوفة:
Presentation pres = new Presentation();
try {
// يحصل على الشريحة الأولى في العرض التقديمي
ISlide slide = pres.getSlides().get_Item(0);
// يضيف AutoShape مع تعيين النوع كـ Rectangle
IAutoShape aShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// يضيف TextFrame إلى المستطيل
aShape.addTextFrame("جميع هذه الأعمدة مقيدة لتكون ضمن حاوية نص واحدة -- " +
"يمكنك إضافة أو حذف نص والنص الجديد أو المتبقي يتكيف تلقائيًا " +
"ليتدفق داخل الحاوية. لا يمكنك أن يتدفق النص من حاوية واحدة " +
"إلى أخرى، رغم ذلك -- لقد أخبرناك أن خيارات الأعمدة في PowerPoint للنص محدودة!");
// يحصل على تنسيق النص لإطار النص
ITextFrameFormat format = aShape.getTextFrame().getTextFrameFormat();
// يحدد عدد الأعمدة في إطار النص
format.setColumnCount(3);
// يحدد المسافة بين الأعمدة
format.setColumnSpacing(10);
// يحفظ العرض التقديمي
pres.save("ColumnCount.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
إضافة عمود في إطار النص
يوفر Aspose.Slides لـ Java خاصية ColumnCount (من واجهة ITextFrameFormat) التي تتيح لك إضافة أعمدة في إطارات النص. من خلال هذه الخاصية، يمكنك تحديد عدد الأعمدة المفضل لديك في إطار النص.
يوضح هذا الكود بلغة Java كيفية إضافة عمود داخل إطار النص:
String outPptxFileName = "ColumnsTest.pptx";
Presentation pres = new Presentation();
try {
IAutoShape shape1 = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
TextFrameFormat format = (TextFrameFormat)shape1.getTextFrame().getTextFrameFormat();
format.setColumnCount(2);
shape1.getTextFrame().setText("جميع هذه الأعمدة مجبرة على البقاء ضمن حاوية نص واحدة -- " +
"يمكنك إضافة أو حذف نص - والنص الجديد أو المتبقي يتكيف تلقائيًا " +
"ليبقى داخل الحاوية. لا يمكنك أن يتدفق النص من حاوية واحدة " +
"إلى أخرى، رغم ذلك -- لأن خيارات الأعمدة في PowerPoint للنص محدودة!");
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(Double.NaN == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test != null) test.dispose();
}
format.setColumnSpacing(20);
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test1 = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test1.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(20 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test1 != null) test1.dispose();
}
format.setColumnCount(3);
format.setColumnSpacing(15);
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test2 = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test2.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(3 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(15 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test2 != null) test2.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
تحديث النص
يسمح لك Aspose.Slides بتغيير أو تحديث النص الموجود في مربع نص أو جميع النصوص الموجودة في عرض تقديمي.
يوضح هذا الكود بلغة Java عملية يتم فيها تحديث أو تغيير جميع النصوص في عرض تقديمي:
Presentation pres = new Presentation("text.pptx");
try {
for (ISlide slide : pres.getSlides())
{
for (IShape shape : slide.getShapes())
{
if (shape instanceof IAutoShape) //يتحقق مما إذا كانت الشكل يدعم إطار النص (IAutoShape).
{
IAutoShape autoShape = (IAutoShape)shape;
for (IParagraph paragraph : autoShape.getTextFrame().getParagraphs()) //يتكرر خلال الفقرات في إطار النص
{
for (IPortion portion : paragraph.getPortions()) //يتكرر عبر كل جزء في الفقرة
{
portion.setText(portion.getText().replace("years", "months")); //يغير النص
portion.getPortionFormat().setFontBold(NullableBool.True); //يغير التنسيق
}
}
}
}
}
//يحفظ العرض التقديمي المعدل
pres.save("text-changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
إضافة مربع نص برابط
يمكنك إدراج رابط داخل مربع نص. عند النقر على مربع النص، يتم توجيه المستخدمين لفتح الرابط.
لإضافة مربع نص يحتوي على رابط، اتبع هذه الخطوات:
- أنشئ مثيلًا من فئة
Presentation
. - احصل على مرجع للشريحة الأولى في العرض التقديمي الذي تم إنشاؤه حديثًا.
- أضف كائن
AutoShape
مع تعيينShapeType
كـRectangle
في موضع محدد على الشريحة واحصل على مرجع لكائن AutoShape الذي تم إضافته مؤخراً. - أضف
TextFrame
إلى كائنAutoShape
الذي يحتوي على Aspose TextBox كنص افتراضي له. - أنشئ مثيلًا من فئة
IHyperlinkManager
. - عيّن كائن
IHyperlinkManager
إلى خاصية HyperlinkClick المرتبطة بجزء النص المفضل لديك فيTextFrame
. - أخيرًا، اكتب ملف PPTX من خلال كائن
Presentation
.
يوضح هذا الكود بلغة Java - تنفيذ الخطوات المذكورة أعلاه - كيفية إضافة مربع نص مع رابط إلى شريحة:
// ينشئ مثيل لفئة Presentation التي تمثل PPTX
Presentation pres = new Presentation();
try {
// يحصل على الشريحة الأولى في العرض التقديمي
ISlide slide = pres.getSlides().get_Item(0);
// يضيف كائن AutoShape مع تعيين النوع كـ Rectangle
IShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 150, 50);
// يحول الشكل إلى AutoShape
IAutoShape pptxAutoShape = (IAutoShape)shape;
// يصل إلى خاصية ITextFrame المرتبطة بـ AutoShape
pptxAutoShape.addTextFrame("");
ITextFrame textFrame = pptxAutoShape.getTextFrame();
// يضيف بعض النصوص إلى الإطار
textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).setText("Aspose.Slides");
// يعين الرابط للنص الجزء
IHyperlinkManager hyperlinkManager = textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).
getPortionFormat().getHyperlinkManager();
hyperlinkManager.setExternalHyperlinkClick("http://www.aspose.com");
// يحفظ العرض التقديمي PPTX
pres.save("hLink_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}