Kelola Kotak Teks dalam Presentasi dengan Python

Introduction

Teks pada slide biasanya berada di dalam kotak teks atau shape. Oleh karena itu, untuk menambahkan teks ke slide, Anda harus menambahkan kotak teks kemudian menuliskan beberapa teks di dalamnya. Aspose.Slides untuk Python menyediakan kelas AutoShape yang memungkinkan Anda menambahkan shape yang berisi teks.

Create Text Boxes on Slides

Untuk membuat kotak teks pada slide:

  1. Buat instance dari kelas Presentation.
  2. Dapatkan referensi ke slide pertama.
  3. Tambahkan sebuah AutoShape dengan ShapeType.RECTANGLE pada posisi yang diinginkan di slide.
  4. Atur teks pada TextFrame shape tersebut.
  5. Simpan presentasi sebagai file PPTX.

Contoh Python berikut mengimplementasikan langkah‑langkah tersebut:

import aspose.slides as slides

# Membuat instance dari kelas Presentation.
with slides.Presentation() as presentation:

    # Dapatkan slide pertama dalam presentasi.
    slide = presentation.slides[0]

    # Tambahkan AutoShape dengan tipe RECTANGLE.
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)

    shape.text_frame.text = "Aspose TextBox"

    # Simpan presentasi ke disk.
    presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)

Check Whether a Shape Is a Text Box

Aspose.Slides menyediakan properti is_text_box pada kelas AutoShape yang memungkinkan Anda menentukan apakah suatu shape adalah kotak teks.

Kotak teks dan shape

Contoh Python ini menunjukkan cara memeriksa apakah sebuah shape dibuat sebagai kotak teks:

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")

Perhatikan bahwa jika Anda menambahkan sebuah AutoShape menggunakan kelas ShapeCollection, properti is_text_box pada shape tersebut akan mengembalikan False. Namun, setelah Anda menambahkan teks—baik dengan metode add_text_frame maupun dengan menyetel properti textis_text_box akan mengembalikan 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 adalah false
    shape1.add_text_frame("shape 1")
    # shape1.is_text_box adalah true

    shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
    # shape2.is_text_box adalah false
    shape2.text_frame.text = "shape 2"
    # shape2.is_text_box adalah true

    shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
    # shape3.is_text_box adalah false
    shape3.add_text_frame("")
    # shape3.is_text_box adalah false

    shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
    # shape4.is_text_box adalah false
    shape4.text_frame.text = ""
    # shape4.is_text_box adalah false

Add Columns to Text Boxes

Aspose.Slides menyediakan properti column_count dan column_spacing pada kelas TextFrameFormat untuk menambahkan kolom ke kotak teks. Anda dapat menentukan jumlah kolom dan mengatur jarak (dalam poin) antar kolom.

Kode Python berikut mendemonstrasikan operasi ini:

import aspose.slides as slides

with slides.Presentation() as presentation:

	# Dapatkan slide pertama dalam presentasi.
	slide = presentation.slides[0]

	# Tambahkan AutoShape dengan tipe RECTANGLE.
	shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)

	# Tambahkan TextFrame ke persegi panjang.
	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!")

	# Dapatkan format teks dari TextFrame.
	format = shape.text_frame.text_frame_format

	# Tentukan jumlah kolom dalam TextFrame.
	format.column_count = 3

	# Tentukan jarak antar kolom.
	format.column_spacing = 10

	# Simpan presentasi.
	presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)

Update Text

Aspose.Slides memungkinkan Anda memperbarui teks dalam satu kotak teks atau di seluruh presentasi.

Contoh Python berikut memperlihatkan cara memperbarui semua teks dalam sebuah presentasi:

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
  
    # Simpan presentasi yang telah dimodifikasi.
    presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)

Anda dapat menyisipkan tautan dalam kotak teks. Saat kotak teks diklik, tautan akan terbuka.

Untuk menambahkan kotak teks yang berisi hyperlink, ikuti langkah‑langkah berikut:

  1. Buat instance dari kelas Presentation.
  2. Dapatkan referensi ke slide pertama.
  3. Tambahkan sebuah AutoShape dengan ShapeType.RECTANGLE pada posisi yang diinginkan di slide.
  4. Atur teks pada TextFrame shape tersebut.
  5. Dapatkan referensi ke HyperlinkManager.
  6. Gunakan properti hyperlink_manager untuk menetapkan hyperlink klik eksternal.
  7. Simpan presentasi sebagai file PPTX.

Contoh Python ini menunjukkan cara menambahkan kotak teks dengan hyperlink ke slide:

import aspose.slides as slides

# Membuat instance kelas Presentation.
with slides.Presentation() as presentation:

    # Dapatkan slide pertama dalam presentasi.
    slide = presentation.slides[0]

    # Tambahkan AutoShape dengan tipe RECTANGLE.
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)

    text_portion = shape.text_frame.paragraphs[0].portions[0]

    # Tambahkan teks ke dalam frame.
    text_portion.text = "Aspose.Slides"

    # Atur hyperlink untuk teks bagian.
    hyperlink_manager = text_portion.portion_format.hyperlink_manager
    hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")

    # Simpan presentasi sebagai file PPTX.
    presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)

FAQ

Apa perbedaan antara kotak teks dan placeholder teks saat bekerja dengan master slide?

Sebuah placeholder mewarisi gaya/posisi dari master dan dapat ditimpa pada layout, sementara kotak teks biasa adalah objek independen pada slide tertentu dan tidak berubah ketika Anda beralih layout.

Bagaimana cara melakukan penggantian teks secara massal di seluruh presentasi tanpa menyentuh teks di dalam grafik, tabel, dan SmartArt?

Batasi iterasi Anda pada auto‑shape yang memiliki frame teks dan kecualikan objek tersemat (chart, table, SmartArt) dengan menelusuri koleksi masing‑masing secara terpisah atau melewati tipe objek tersebut.