จัดการกล่องข้อความในงานนำเสนอด้วย Python
บทนำ
ข้อความบนสไลด์โดยทั่วไปอยู่ในกล่องข้อความหรือรูปร่าง ดังนั้น เพื่อเพิ่มข้อความลงในสไลด์ คุณต้องเพิ่มกล่องข้อความแล้วใส่ข้อความลงในกล่องนั้น Aspose.Slides for Python มีคลาส AutoShape ที่อนุญาตให้คุณเพิ่มรูปร่างที่มีข้อความ
Info
Aspose.Slides ยังมีคลาส Shape อีกด้วย อย่างไรก็ตาม รูปร่างทั้งหมดไม่สามารถเก็บข้อความได้Note
ดังนั้นเมื่อทำงานกับรูปร่างที่คุณต้องการเพิ่มข้อความ คุณอาจต้องตรวจสอบและยืนยันว่ารูปร่างนั้นถูกแคสต์ผ่านคลาส AutoShape เท่านั้นที่คุณจะสามารถทำงานกับ TextFrame ซึ่งเป็นคุณสมบัติของ AutoShape ดูส่วน Update Text ในหน้านี้สร้างกล่องข้อความบนสไลด์
เพื่อสร้างกล่องข้อความบนสไลด์:
- สร้างอินสแตนซ์ของคลาส Presentation
- รับอ้างอิงถึงสไลด์แรก
- เพิ่ม AutoShape ด้วย
ShapeType.RECTANGLEที่ตำแหน่งที่ต้องการบนสไลด์ - ตั้งค่าข้อความใน TextFrame ของรูปร่าง
- บันทึกงานนำเสนอเป็นไฟล์ PPTX
ตัวอย่าง Python ต่อไปนี้ดำเนินการตามขั้นตอนเหล่านี้:
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 ซึ่งช่วยให้คุณตรวจจับได้ว่ารูปร่างเป็นกล่องข้อความหรือไม่

ตัวอย่าง Python นี้แสดงวิธีตรวจสอบว่ารูปร่างถูกสร้างเป็นกล่องข้อความหรือไม่:
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 เป็น false
shape1.add_text_frame("shape 1")
# shape1.is_text_box เป็น true
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
# shape2.is_text_box เป็น false
shape2.text_frame.text = "shape 2"
# shape2.is_text_box เป็น true
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
# shape3.is_text_box เป็น false
shape3.add_text_frame("")
# shape3.is_text_box เป็น false
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
# shape4.is_text_box เป็น false
shape4.text_frame.text = ""
# shape4.is_text_box เป็น false
เพิ่มคอลัมน์ในกล่องข้อความ
Aspose.Slides มีคุณสมบัติ column_count และ column_spacing บนคลาส TextFrameFormat เพื่อเพิ่มคอลัมน์ในกล่องข้อความ คุณสามารถระบุจำนวนคอลัมน์และตั้งค่าระยะห่าง (เป็นพอยต์) ระหว่างคอลัมน์
โค้ด Python ต่อไปนี้แสดงการทำงานนี้:
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 อนุญาตให้คุณอัปเดตข้อความในกล่องข้อความเดียวหรือทั่วงานนำเสนอทั้งหมด
ตัวอย่าง Python ต่อไปนี้แสดงวิธีอัปเดตข้อความทั้งหมดในงานนำเสนอ:
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
ตัวอย่าง Python นี้แสดงวิธีเพิ่มกล่องข้อความพร้อมไฮเพอร์ลิงค์ลงในสไลด์:
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 ได้อย่างไร?
จำกัดการวนรอบของคุณให้ทำกับออโต-ชป์ที่มีกรอบข้อความเท่านั้นและละเว้นอ็อบเจกต์ที่ฝังอยู่ (charts, tables, SmartArt) โดย traversing คอลเลกชันของพวกมันแยกกันหรือข้ามประเภทอ็อบเจกต์เหล่านั้น.