إدارة عقد أشكال SmartArt في العروض التقديمية باستخدام Python
نظرة عامة
يتم تنظيم رسومات SmartArt في عروض PowerPoint عبر عقد تحتوي على نص وتحدد هيكل المخطط. تتيح لك Aspose.Slides العمل مع عقد SmartArt برمجياً: إضافة عقد جديدة وعقد فرعية، إدراج عقد فرعية في موضع محدد، الوصول إلى العقد الموجودة، وقراءة نصها، ومستواها، وموقعها.
تشرح هذه المقالة كيفية إدارة عقد شكل SmartArt. توضح كيفية إزالة العقد، والعمل مع العقد الفرعية حسب الفهرس أو الموضع، وتحويل عقدة مساعدة إلى عقدة عادية، وضبط الموضع والحجم والدوران لأشكال عقد SmartArt، وتعيين تنسيقات التعبئة للعقد، وتوليد صورة مصغرة لعقدة فرعية من SmartArt.
إضافة عقدة SmartArt
توفر Aspose.Slides for Python via Java واجهة برمجة تطبيقات لإدارة أشكال SmartArt. المثال التالي يضيف عقدة وعقدة فرعية إلى شكل SmartArt.
- أنشئ مثيلاً من الفئة العرض التقديمي وحمّل العرض الذي يحتوي على شكل SmartArt.
- احصل على الشريحة الأولى بحسب فهرستها.
- حلق عبر كل شكل في الشريحة الأولى.
- تحقق مما إذا كان الشكل نسخة من SmartArt.
- أضف عقدة جديدة إلى مجموعة العقد في شكل SmartArt، واضبط نصها عبر TextFrame.
- أضف عقدة فرعية إلى العقدة الجديدة واضبط نصها عبر TextFrame.
- احفظ العرض.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArt
presentation = Presentation("SimpleSmartArt.pptx")
try:
for shape in presentation.getSlides().get_Item(0).getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
node = smart_art.getAllNodes().addNode()
node.getTextFrame().setText("Test")
child_node = node.getChildNodes().addNode()
child_node.getTextFrame().setText("New Node Added")
presentation.save("AddSmartArtNode.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
إضافة عقدة SmartArt في موضع محدد
المثال التالي يضيف عقدة فرعية في موضع معين داخل عقدة SmartArt.
- أنشئ مثيلاً من الفئة العرض التقديمي.
- احصل على الشريحة الأولى بحسب فهرستها.
- أضف شكل SmartArt باستخدام تخطيط StackedList إلى الشريحة.
- وصل إلى العقدة الأولى في شكل SmartArt المضاف.
- أضف عقدة فرعية إلى العقدة المحددة في الموضع 2 باستخدام addNodeByPosition واضبط نصها.
- احفظ العرض.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
smart_art = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList)
node = smart_art.getAllNodes().get_Item(0)
child_node = node.getChildNodes().addNodeByPosition(2)
child_node.getTextFrame().setText("Sample Text Added")
presentation.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
الوصول إلى عقدة SmartArt
المثال التالي يصل إلى العقد في شكل SmartArt. التخطيط الذي يُرجع بواسطة getLayout هو قراءة فقط ويتم تعيينه عند إضافة شكل SmartArt.
- أنشئ مثيلاً من الفئة العرض التقديمي وحمّل العرض الذي يحتوي على شكل SmartArt.
- احصل على الشريحة الأولى بحسب فهرستها.
- حلق عبر كل شكل في الشريحة الأولى.
- تحقق مما إذا كان الشكل نسخة من SmartArt.
- حلق عبر جميع العقد في شكل SmartArt.
- اقرأ واعرض موضع كل عقدة SmartArt ومستواها ونصها.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SmartArt
presentation = Presentation("SmartArtShape.pptx")
try:
slide = presentation.getSlides().get_Item(0)
for shape in slide.getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
for i in range(smart_art.getAllNodes().size()):
node = smart_art.getAllNodes().get_Item(i)
print(node.getTextFrame().getText(), " ", node.getLevel(), " ", node.getPosition())
finally:
presentation.dispose()
الوصول إلى عقدة فرعية في SmartArt
المثال التالي يصل إلى العقد الفرعية لكل عقدة في شكل SmartArt.
- أنشئ مثيلاً من الفئة العرض التقديمي وحمّل العرض الذي يحتوي على شكل SmartArt.
- احصل على الشريحة الأولى بحسب فهرستها.
- حلق عبر كل شكل في الشريحة الأولى.
- تحقق مما إذا كان الشكل نسخة من SmartArt.
- حلق عبر جميع العقد في شكل SmartArt.
- لكل عقدة، حلق عبر العقد الفرعية الخاصة بها.
- اقرأ واعرض موضع العقدة الفرعية ومستواها ونصها.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SmartArt
presentation = Presentation("AccessChildNodes.pptx")
try:
slide = presentation.getSlides().get_Item(0)
for shape in slide.getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
for i in range(smart_art.getAllNodes().size()):
parent_node = smart_art.getAllNodes().get_Item(i)
for j in range(parent_node.getChildNodes().size()):
node = parent_node.getChildNodes().get_Item(j)
print("j = ", j, ", Text = ", node.getTextFrame().getText(), ", Level = ", node.getLevel(), ", Position = ", node.getPosition())
finally:
presentation.dispose()
الوصول إلى عقدة فرعية في SmartArt بموضع محدد
المثال التالي يصل إلى عقدة فرعية في فهرس محدد داخل مجموعة العقد للعنصر الأصل.
- أنشئ مثيلاً من الفئة العرض التقديمي.
- احصل على الشريحة الأولى بحسب فهرستها.
- أضف شكل SmartArt باستخدام تخطيط StackedList.
- وصل إلى شكل SmartArt المضاف.
- وصل إلى العقدة في الفهرس 0 داخل شكل SmartArt.
- وصل إلى العقدة الفرعية في الفهرس 1 باستخدام get_Item.
- اقرأ واعرض موضع العقدة الفرعية ومستواها ونصها.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SmartArtLayoutType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
smart_art = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList)
node = smart_art.getAllNodes().get_Item(0)
position = 1
child_node = node.getChildNodes().get_Item(position)
print("Text = ", child_node.getTextFrame().getText(), ", Level = ", child_node.getLevel(), ", Position = ", child_node.getPosition())
finally:
presentation.dispose()
إزالة عقدة SmartArt
المثال التالي يزيل عقدة من شكل SmartArt.
- أنشئ مثيلاً من الفئة العرض التقديمي وحمّل العرض الذي يحتوي على شكل SmartArt.
- احصل على الشريحة الأولى بحسب فهرستها.
- حلق عبر كل شكل في الشريحة الأولى.
- تحقق مما إذا كان الشكل نسخة من SmartArt.
- تحقق من أن شكل SmartArt يحتوي على عقدة واحدة على الأقل.
- اختر عقدة SmartArt التي تريد حذفها.
- أزل العقدة المحددة باستخدام removeNode.
- احفظ العرض.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArt
presentation = Presentation("AddSmartArtNode.pptx")
try:
for shape in presentation.getSlides().get_Item(0).getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
if smart_art.getAllNodes().size() > 0:
node = smart_art.getAllNodes().get_Item(0)
smart_art.getAllNodes().removeNode(node)
presentation.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
إزالة عقدة SmartArt من موضع محدد
المثال التالي يزيل عقدة فرعية في فهرس محدد داخل مجموعة عقد SmartArt.
- أنشئ مثيلاً من الفئة العرض التقديمي وحمّل العرض الذي يحتوي على شكل SmartArt.
- احصل على الشريحة الأولى بحسب فهرستها.
- حلق عبر كل شكل في الشريحة الأولى.
- تحقق مما إذا كان الشكل نسخة من SmartArt.
- وصل إلى عقدة SmartArt في الفهرس 0 إذا كانت موجودة.
- تحقق من أن العقدة المحددة لديها عقدتين فرعيتين على الأقل.
- أزل العقدة الفرعية في الفهرس 1 باستخدام removeNode.
- احفظ العرض.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArt
presentation = Presentation("AddSmartArtNode.pptx")
try:
for shape in presentation.getSlides().get_Item(0).getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
if smart_art.getAllNodes().size() > 0:
node = smart_art.getAllNodes().get_Item(0)
if node.getChildNodes().size() >= 2:
node.getChildNodes().removeNode(1)
presentation.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
تعيين موضع مخصص لعقدة فرعية في كائن SmartArt
يدعم Aspose.Slides for Python via Java تعيين موضع SmartArtShape باستخدام setX وsetY. المثال التالي يحدد موضعًا مخصصًا، وحجمًا، ودورانًا لأشكال عقد SmartArt. إضافة عقد جديدة يعيد حساب مواضع وأحجام جميع العقد. يتيح التحديد المخصص ترتيب العقد حسب الحاجة.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpime.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType
presentation = Presentation("SimpleSmartArt.pptx")
try:
smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart)
node = smart_art.getAllNodes().get_Item(1)
shape = node.getShapes().get_Item(1)
shape.setX(shape.getX() + shape.getWidth() * 2)
shape.setY(shape.getY() - shape.getHeight() * 2)
node = smart_art.getAllNodes().get_Item(2)
shape = node.getShapes().get_Item(1)
shape.setWidth(shape.getWidth() + shape.getWidth() * 2)
node = smart_art.getAllNodes().get_Item(3)
shape = node.getShapes().get_Item(1)
shape.setHeight(shape.getHeight() + shape.getHeight() * 2)
node = smart_art.getAllNodes().get_Item(4)
shape = node.getShapes().get_Item(1)
shape.setRotation(90)
presentation.save("SmartArt.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
التحقق من عقدة مساعدة
ملاحظة
يستكشف هذا القسم أشكال SmartArt التي تُضاف إلى شرائح العرض برمجياً باستخدام Aspose.Slides for Python via Java.يُستخدم شكل SmartArt التالي كمصدر في هذا المثال.
![]() |
|---|
| الشكل: شكل SmartArt الأصلي على شريحة |
المثال التالي يحدد العقد المساعدة في مجموعة عقد SmartArt ويحولها إلى عقد عادية.
- أنشئ مثيلاً من الفئة العرض التقديمي وحمّل العرض الذي يحتوي على شكل SmartArt.
- احصل على الشريحة الأولى بحسب فهرستها.
- حلق عبر كل شكل في الشريحة الأولى.
- تحقق مما إذا كان الشكل نسخة من SmartArt.
- حلق عبر جميع العقد في شكل SmartArt وتحقق مما إذا كانت عقد مساعدة.
- غيّر كل عقدة مساعدة إلى عقدة عادية.
- احفظ العرض.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArt
presentation = Presentation("AddNodes.pptx")
try:
for shape in presentation.getSlides().get_Item(0).getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
for i in range(smart_art.getAllNodes().size()):
node = smart_art.getAllNodes().get_Item(i)
if node.isAssistant():
node.setAssistant(False)
presentation.save("ChangeAssistantNode.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
![]() |
|---|
| الشكل: تم تغيير العقد المساعدة في شكل SmartArt على شريحة |
تعيين تنسيق تعبئة العقدة
يتيح Aspose.Slides for Python via Java إمكانية إضافة أشكال SmartArt مخصصة وتعيين تنسيق تعبئتها. تشرح هذه المقالة كيفية إنشاء والوصول إلى أشكال SmartArt وتعيين تنسيق تعبئتها باستخدام Aspose.Slides for Python via Java.
يرجى اتباع الخطوات أدناه:
- أنشئ مثيلاً من الفئة العرض التقديمي.
- احصل على شريحة بحسب فهرستها.
- أضف شكل SmartArt بتخطيط ClosedChevronProcess.
- عيّن FillFormat لعقد شكل SmartArt.
- احفظ العرض المعدّل كملف PPTX.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType, FillType
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess)
node = chevron.getAllNodes().addNode()
node.getTextFrame().setText("Some text")
for item in node.getShapes():
item.getFillFormat().setFillType(FillType.Solid)
item.getFillFormat().getSolidFillColor().setColor(Color.RED)
presentation.save("TestSmart.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
توليد صورة مصغرة لعقدة فرعية في SmartArt
لتوليد صورة مصغرة لعقدة فرعية في SmartArt، اتبع الخطوات التالية:
- أنشئ مثيلاً من الفئة العرض التقديمي.
- أضف شكل SmartArt.
- احصل على عقدة بحسب فهرستها.
- احصل على صورة المصغرة.
- احفظ صورة المصغرة بأي تنسيق صورة تفضله.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SmartArtLayoutType, ImageFormat
presentation = Presentation()
try:
smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle)
node = smart_art.getNodes().get_Item(1)
image = node.getShapes().get_Item(0).getImage()
try:
image.save("SmartArt_ChildNode_Thumbnail.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
الأسئلة المتكررة
هل تدعم الرسوم المتحركة لـ SmartArt؟
نعم. يُعامل SmartArt كشكل عادي، لذا يمكنك تطبيق الرسوم المتحركة القياسية (دخول، خروج، تأكيد، مسارات الحركة) وضبط التوقيت. يمكنك أيضاً تحريك الأشكال داخل عقد SmartArt عند الحاجة.
كيف يمكنني تحديد موقع SmartArt معين على شريحة إذا كان معرفه الداخلي غير معروف؟
استخدم وابحث عبر النص البديل. ضبط نص بديل مميز على SmartArt يتيح العثور عليه برمجياً دون الاعتماد على المعرفات الداخلية.
هل سيحافظ مظهر SmartArt عند تحويل العرض إلى PDF؟
نعم. تقوم Aspose.Slides بتصدير SmartArt بجودة بصرية عالية أثناء تصدير PDF، مع الحفاظ على التخطيط، والألوان، والتأثيرات.
هل يمكن استخراج صورة كاملة لـ SmartArt (للمعاينات أو التقارير)؟
نعم. يمكنك تصدير شكل SmartArt إلى تنسيقات نقطية أو إلى SVG للحصول على مخرجات متجهية قابلة للتوسع، ما يجعلها مناسبة للصور المصغرة، التقارير، أو الاستخدام على الويب.

