Cara Menambahkan Bentuk ke PowerPoint dengan Python

Cara Menambahkan Bentuk ke PowerPoint dengan Python

Aspose.Slides FOSS for Python mendukung penambahan AutoShapes, Tables, Connectors, dan PictureFrames ke slide presentasi. Semua jenis bentuk ditambahkan melalui koleksi slide.shapes.

Panduan Langkah-demi-Langkah

Langkah 1: Instal Paket

pip install aspose-slides-foss

Verifikasi instalasi:

import aspose.slides_foss as slides
print("Ready")

Langkah 2: Buat Presentasi

Selalu gunakan Presentation sebagai manajer konteks.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    # ... add shapes ...
    prs.save("output.pptx", SaveFormat.PPTX)

Langkah 3: Tambahkan AutoShape

slide.shapes.add_auto_shape(shape_type, x, y, width, height) menempatkan sebuah bentuk pada posisi dan ukuran yang diberikan (semua dalam poin). Gunakan konstanta ShapeType untuk memilih bentuk.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Rectangle
    rect = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    rect.add_text_frame("Rectangle shape")

    # Ellipse
    ellipse = slide.shapes.add_auto_shape(ShapeType.ELLIPSE, 400, 50, 200, 100)
    ellipse.add_text_frame("Ellipse shape")

    prs.save("autoshapes.pptx", SaveFormat.PPTX)

Langkah 4: Tambahkan Tabel

slide.shapes.add_table(x, y, col_widths, row_heights) membuat tabel pada posisi yang ditentukan. Lebar kolom dan tinggi baris adalah daftar nilai poin.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [150.0, 150.0, 150.0]
    row_heights = [40.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 200, col_widths, row_heights)

    # Set header row text
    headers = ["Product", "Units", "Revenue"]
    for col, text in enumerate(headers):
        table.rows[0][col].text_frame.text = text

    # Set data rows
    rows = [
        ["Widget A", "120", "$2,400"],
        ["Widget B", "85", "$1,700"],
    ]
    for row_idx, row_data in enumerate(rows):
        for col, text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = text

    prs.save("table.pptx", SaveFormat.PPTX)

Langkah 5: Tambahkan Konektor

Penghubung menghubungkan dua bentuk secara visual. Buat bentuk terlebih dahulu, lalu tambahkan penghubung dan atur titik koneksi awal serta akhir.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 100, 150, 60)
    box1.add_text_frame("Start")

    box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 100, 150, 60)
    box2.add_text_frame("End")

    conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
    conn.start_shape_connected_to = box1
    conn.start_shape_connection_site_index = 3  # right side of box1
    conn.end_shape_connected_to = box2
    conn.end_shape_connection_site_index = 1    # left side of box2

    prs.save("connector.pptx", SaveFormat.PPTX)

Indeks situs koneksi diberi nomor 0–3 untuk sebuah persegi panjang: atas=0, kiri=1, bawah=2, kanan=3.


Langkah 6: Tambahkan Bingkai Gambar

Sematkan gambar dan tambahkan ke slide sebagai PictureFrame. Baca byte gambar terlebih dahulu, tambahkan ke koleksi gambar presentasi, kemudian buat bingkai.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    with open("logo.png", "rb") as f:
        image_data = f.read()

    image = prs.images.add_image(image_data)

    slide = prs.slides[0]
    slide.shapes.add_picture_frame(
        ShapeType.RECTANGLE,  # bounding shape type
        50, 50,               # x, y in points
        200, 150,             # width, height in points
        image
    )

    prs.save("with-image.pptx", SaveFormat.PPTX)

Masalah Umum dan Solusi

Bentuk muncul di luar area slide yang terlihat

Slide berukuran 720 × 540 poin secara default. Nilai x atau y di luar batas tersebut menempatkan bentuk di luar slide. Pertahankan x < 720 dan y < 540, serta pastikan x + width <= 720 dan y + height <= 540.

AttributeError: 'NoneType' object has no attribute 'text_frame'

add_auto_shape() mengembalikan objek shape secara langsung. Jika Anda melihat None, periksa bahwa Anda tidak membuang nilai kembaliannya.

Teks sel tabel kosong setelah penugasan

Properti yang benar adalah .text_frame.text (bukan .text langsung pada sel). Akses sel sebagai table.rows[row_index][col_index].text_frame.text = "value".


Pertanyaan yang Sering Diajukan

Berapa banyak bentuk yang dapat saya tambahkan ke slide?

Tidak ada batasan yang diberlakukan oleh perpustakaan. Batasan praktis tergantung pada ukuran file dan kemampuan rendering penampil PPTX target Anda.

Bisakah saya mengubah posisi shape setelah menambahkannya?

Ya. Objek shape yang dikembalikan oleh add_auto_shape() memiliki properti x, y, width, dan height yang dapat Anda atur:

shape.x = 100
shape.y = 200
shape.width = 400
shape.height = 80

Bisakah saya mengatur warna garis luar (border) bentuk?

Ya, via shape.line_format:

from aspose.slides_foss.drawing import Color
shape.line_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)

Apakah grafik didukung?

Tidak. Diagram, SmartArt, dan objek OLE tidak diimplementasikan dalam edisi ini dan menghasilkan NotImplementedError.


Lihat Juga

 Bahasa Indonesia