Cara Menambah Bentuk ke PowerPoint dalam Python

Cara Menambah Bentuk ke PowerPoint dalam Python

Aspose.Slides FOSS for Python menyokong penambahan AutoShapes, Tables, Connectors, dan PictureFrames ke slaid persembahan. Semua jenis bentuk ditambah melalui koleksi slide.shapes.

Panduan Langkah demi Langkah

Langkah 1: Pasang Pakej

pip install aspose-slides-foss

Sahkan pemasangan:

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

Langkah 2: Buat Persembahan

Sentiasa gunakan Presentation sebagai pengurus 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: Tambah AutoShape

slide.shapes.add_auto_shape(shape_type, x, y, width, height) menempatkan bentuk pada kedudukan dan saiz yang diberikan (semua dalam mata). Gunakan pemalar 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: Tambah Jadual

slide.shapes.add_table(x, y, col_widths, row_heights) membuat jadual pada kedudukan yang ditentukan. Lebar lajur dan tinggi baris adalah senarai nilai titik.

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: Tambah Penyambung

Penyambung menghubungkan dua bentuk secara visual. Buat bentuk terlebih dahulu, kemudian tambahkan penyambung dan tetapkan titik sambungan permulaan dan 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 tapak sambungan dinomborkan 0–3 untuk segi empat tepat: atas=0, kiri=1, bawah=2, kanan=3.


Langkah 6: Tambah Bingkai Gambar

Benamkan imej dan tambahkan ke slaid sebagai PictureFrame. Baca bait imej terlebih dahulu, tambahkan ke koleksi imej persembahan, kemudian cipta 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)

Isu Umum dan Penyelesaian

Bentuk muncul di luar kawasan slaid yang dapat dilihat

Slaid secara lalai berukuran 720 × 540 mata. Nilai x atau y yang melebihi sempadan tersebut menempatkan bentuk di luar slaid. Simpan x < 720 dan y < 540, dan pastikan x + width <= 720 dan y + height <= 540.

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

add_auto_shape() mengembalikan objek bentuk secara langsung. Jika anda melihat None, periksa bahawa anda tidak membuang nilai kembali.

Teks sel jadual kosong selepas penugasan

Sifat yang betul ialah .text_frame.text (bukan .text secara langsung pada sel). Akses sel sebagai table.rows[row_index][col_index].text_frame.text = "value".


Soalan Lazim

Berapa banyak bentuk yang boleh saya tambahkan ke slaid?

Tiada had yang dikenakan oleh perpustakaan. Had praktikal bergantung pada saiz fail dan keupayaan rendering penonton PPTX sasaran anda.

Bolehkah saya mengubah kedudukan bentuk selepas menambahnya?

Ya. Objek bentuk yang dikembalikan oleh add_auto_shape() mempunyai sifat x, y, width, dan height yang anda boleh tetapkan:

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

Bolehkah saya menetapkan warna garisan luar bentuk (sempadan)?

Ya, melalui 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)

Adakah carta disokong?

Tidak. Carta, SmartArt, dan objek OLE tidak dilaksanakan dalam edisi ini dan menghasilkan NotImplementedError.


Lihat Juga

 Bahasa Melayu