إدارة صندوق النص
توجد النصوص على الشرائح عادةً في صناديق نصية أو أشكال. لذلك، لإضافة نص إلى شريحة، يجب عليك إضافة صندوق نص ثم وضع بعض النص داخل صندوق النص. توفر Aspose.Slides لنظام Android عبر جافا واجهة IAutoShape التي تتيح لك إضافة شكل يحتوي على نص.
معلومات
توفر Aspose.Slides أيضًا واجهة IShape التي تتيح لك إضافة أشكال إلى الشرائح. ومع ذلك، ليس كل الأشكال المضافة من خلال واجهةIShape
يمكنها احتواء نص. ولكن الأشكال المضافة من خلال واجهة IAutoShape يمكن أن تحتوي على نص.
ملاحظة
لذلك، عند التعامل مع شكل تريد إضافة نص إليه، قد ترغب في التحقق والتأكيد على أنه تم تحويله من خلال واجهةIAutoShape
. فقط حينها ستكون قادرًا على العمل مع TextFrame، وهو خاصية تحت IAutoShape
. راجع قسم تحديث النص في هذه الصفحة.
إنشاء صندوق نص على الشريحة
لإنشاء صندوق نص على شريحة، اتبع هذه الخطوات:
- أنشئ مثيلًا من فئة Presentation.
- احصل على مرجع للشريحة الأولى في العرض التقديمي الذي تم إنشاؤه حديثًا.
- أضف كائن IAutoShape مع تعيين ShapeType كـ
Rectangle
في موضع محدد على الشريحة واحصل على مرجع لكائنIAutoShape
الذي تم إضافته مؤخرًا. - أضف خاصية
TextFrame
إلى كائنIAutoShape
الذي سيحتوي على نص. في المثال أدناه، أضفنا هذا النص: Aspose TextBox - أخيرًا، قم بكتابة ملف PPTX عبر كائن
Presentation
.
هذا الرمز بلغة جافا - تنفيذ للخطوات أعلاه - يوضح لك كيفية إضافة نص إلى شريحة:
// ينشئ 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 إلى Rectangle
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) لتتيح لك استكشاف الأشكال والعثور على صناديق النص.
يوضح لك هذا الرمز بلغة جافا كيفية التحقق من ما إذا كان الشكل قد تم إنشاؤه كصندوق نص:
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) التي تتيح لك إضافة أعمدة إلى صناديق النص. يمكنك تحديد عدد الأعمدة في صندوق النص وتعيين مقدار المسافة بالنقاط بين الأعمدة.
هذا الرمز بلغة جافا يوضح العملية الموصوفة:
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 إلى Rectangle
aShape.addTextFrame("جميع هذه الأعمدة محدودة لتكون ضمن حاوية نص واحدة -- " +
"يمكنك إضافة أو حذف نص، ويتكيف النص الجديد أو المتبقي تلقائيًا " +
"لتدفق داخل الحاوية. لا يمكنك أن يكون لديك تدفق نص من حاوية واحدة " +
"إلى أخرى، لكنها -- لقد أخبرناك أن خيارات الأعمدة في باور بوينت محدودة!");
// يحصل على تنسيق نص إطار النص
ITextFrameFormat format = aShape.getTextFrame().getTextFrameFormat();
// يحدد عدد الأعمدة في TextFrame
format.setColumnCount(3);
// يحدد المسافة بين الأعمدة
format.setColumnSpacing(10);
// يحفظ العرض التقديمي
pres.save("ColumnCount.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
إضافة عمود في إطار النص
توفر Aspose.Slides لنظام Android عبر جافا خاصية ColumnCount (من واجهة ITextFrameFormat) التي تتيح لك إضافة أعمدة في إطارات النص. من خلال هذه الخاصية، يمكنك تحديد عدد الأعمدة المفضل لديك في إطار النص.
يوضح لك هذا الرمز بلغة جافا كيفية إضافة عمود داخل إطار النص:
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("جميع هذه الأعمدة مُجبَرة على البقاء ضمن حاوية نص واحدة -- " +
"يمكنك إضافة أو حذف نص - ويتكيف النص الجديد أو المتبقي تلقائيًا " +
"ليبقى ضمن الحاوية. لا يمكنك أن يتساقط النص من حاوية واحدة " +
"إلى أخرى، على الرغم من أن خيارات الأعمدة للنص في باور بوينت محدودة!");
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 تغيير أو تحديث النص المحتوي في صندوق النص أو جميع النصوص المحتواة في عرض تقديمي.
يوضح هذا الرمز بلغة جافا عملية حيث يتم تحديث أو تغيير جميع النصوص في عرض تقديمي:
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
.
يوضح هذا الرمز بلغة جافا - تنفيذ للخطوات أعلاه - كيفية إضافة صندوق نص مع ارتباط تشعبي إلى شريحة:
// ينشئ فئة 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();
}