مدیریت جعبههای متن در ارائهها با پایتون
مقدمه
متنها در اسلایدها معمولاً در جعبههای متن یا شکلها وجود دارند. بنابراین، برای اضافه کردن متن به یک اسلاید، باید یک جعبه متن اضافه کنید و سپس متنی داخل آن قرار دهید. Aspose.Slides برای Python کلاس AutoShape را ارائه میدهد که به شما امکان افزودن شکلی حاوی متن را میدهد.
Info
Aspose.Slides همچنین کلاس Shape را فراهم میکند. اما همه شکلها توانایی نگهداری متن را ندارند.Note
بنابراین، هنگام کار با شکلی که میخواهید متن به آن اضافه کنید، ممکن است بخواهید بررسی و تأیید کنید که آن شکل به وسیلهٔ کلاس AutoShape تبدیل شده است. تنها در این صورت میتوانید با TextFrame، که یک ویژگی تحت AutoShape است، کار کنید. بخش Update Text را در این صفحه ببینید.ایجاد جعبههای متن در اسلایدها
برای ایجاد یک جعبه متن در یک اسلاید:
- یک نمونه از کلاس Presentation ایجاد کنید.
- به اولین اسلاید ارجاع بگیرید.
- یک AutoShape با
ShapeType.RECTANGLEدر موقعیت مورد نظر روی اسلاید اضافه کنید. - متن را در TextFrame شکل تنظیم کنید.
- ارائه را به عنوان یک فایل PPTX ذخیره کنید.
مثال زیر پایتون این مراحل را پیادهسازی میکند:
import aspose.slides as slides
# نمونهسازی کلاس Presentation.
with slides.Presentation() as presentation:
# دریافت اولین اسلاید در ارائه.
slide = presentation.slides[0]
# افزودن AutoShape از نوع RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
shape.text_frame.text = "Aspose TextBox"
# ذخیرهٔ ارائه روی دیسک.
presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)
بررسی اینکه آیا یک شکل جعبه متن است یا نه
Aspose.Slides ویژگی is_text_box را در کلاس AutoShape فراهم میکند که به شما امکان تعیین اینکه آیا یک شکل جعبه متن است یا نه را میدهد.

این مثال پایتون نشان میدهد که چگونه بررسی کنید آیا یک شکل به عنوان جعبه متن ایجاد شده است یا نه:
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if isinstance(shape, slides.AutoShape):
print("shape is a text box" if shape.is_text_box else "shape is not a text box")
توجه داشته باشید که اگر یک AutoShape را با استفاده از کلاس ShapeCollection اضافه کنید، ویژگی is_text_box شکل مقدار False را برمیگرداند. اما پس از افزودن متن—چه با متد add_text_frame و چه با تنظیم ویژگی text—is_text_box مقدار True را برمیگرداند.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 100, 40)
# shape1.is_text_box نادرست است
shape1.add_text_frame("shape 1")
# shape1.is_text_box صحیح است
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
# shape2.is_text_box نادرست است
shape2.text_frame.text = "shape 2"
# shape2.is_text_box صحیح است
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
# shape3.is_text_box نادرست است
shape3.add_text_frame("")
# shape3.is_text_box نادرست است
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
# shape4.is_text_box نادرست است
shape4.text_frame.text = ""
# shape4.is_text_box نادرست است
افزودن ستونها به جعبههای متن
Aspose.Slides ویژگیهای column_count و column_spacing را در کلاس TextFrameFormat فراهم میکند تا به جعبههای متن ستون اضافه کنید. میتوانید تعداد ستونها را مشخص کرده و فاصله (به نقطه) بین ستونها را تنظیم کنید.
کد پایتون زیر این عملیات را نشان میدهد:
import aspose.slides as slides
with slides.Presentation() as presentation:
# دریافت اولین اسلاید در ارائه.
slide = presentation.slides[0]
# افزودن AutoShape از نوع RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# افزودن TextFrame به مستطیل.
shape.add_text_frame("All of these columns are confined to a single text container—" +
"you can add or delete text, and any new or remaining text automatically reflows " +
"within the container. You cannot have text flow from one container to another, " +
"though—PowerPoint’s column options for text are limited!")
# دریافت قالب متن TextFrame.
format = shape.text_frame.text_frame_format
# تعیین تعداد ستونها در TextFrame.
format.column_count = 3
# تعیین فاصله بین ستونها.
format.column_spacing = 10
# ذخیرهٔ ارائه.
presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)
بهروزرسانی متن
Aspose.Slides به شما امکان میدهد متن را در یک جعبه متن واحد یا در کل ارائه بهروزرسانی کنید.
مثال پایتون زیر نشان میدهد چگونه تمام متنها در یک ارائه بهروزرسانی شوند:
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if type(shape) is slides.AutoShape:
for paragraph in shape.text_frame.paragraphs:
for portion in paragraph.portions:
portion.text = portion.text.replace("years", "months")
portion.portion_format.font_bold = 1
# ذخیرهٔ ارائهٔ اصلاح شده.
presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)
افزودن جعبههای متن با پیوندهای فراگیر
میتوانید یک پیوند را در یک جعبه متن وارد کنید. وقتی جعبه متن کلیک شود، پیوند باز میشود.
برای افزودن جعبه متنی که حاوی پیوند باشد، این مراحل را دنبال کنید:
- یک نمونه از کلاس Presentation ایجاد کنید.
- به اولین اسلاید ارجاع بگیرید.
- یک AutoShape با
ShapeType.RECTANGLEدر موقعیت مورد نظر روی اسلاید اضافه کنید. - متن را در TextFrame شکل تنظیم کنید.
- به یک ارجاع به HyperlinkManager دریافت کنید.
- از ویژگی
hyperlink_managerبرای تنظیم یک پیوند کلیک خارجی استفاده کنید. - ارائه را به عنوان یک فایل PPTX ذخیره کنید.
این مثال پایتون نشان میدهد چگونه یک جعبه متن با پیوند به یک اسلاید اضافه شود:
import aspose.slides as slides
# نمونهسازی کلاس Presentation.
with slides.Presentation() as presentation:
# دریافت اولین اسلاید در ارائه.
slide = presentation.slides[0]
# افزودن AutoShape از نوع RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)
text_portion = shape.text_frame.paragraphs[0].portions[0]
# افزودن متن به چارچوب.
text_portion.text = "Aspose.Slides"
# تنظیم پیوند برای متن بخش.
hyperlink_manager = text_portion.portion_format.hyperlink_manager
hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")
# ذخیرهٔ ارائه به عنوان فایل PPTX.
presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)
سوالات متداول
تفاوت جعبه متن و نگهدارنده متن هنگام کار با اسلایدهای مستر چیست؟
یک placeholder سبک/موقعیت را از master به ارث میبرد و میتواند در layouts بازنویسی شود، در حالی که یک جعبه متن عادی یک شیء مستقل در یک اسلاید خاص است و هنگام تغییر لایهها تغییر نمیکند.
چگونه میتوانم جایگزینی متن بهصورت انبوه در سراسر ارائه انجام دهم بدون اینکه به متن داخل نمودارها، جداول و SmartArt دست بزنم؟
تکرار خود را به AutoShapeهایی که دارای فریم متن هستند محدود کنید و اشیاء توکار (مانند charts، tables، SmartArt) را با پیمایش جداگانهٔ مجموعههایشان یا صرفنظر کردن از آن نوع اشیاء حذف کنید.