Cara Membuat Pembentangan dalam Python

Cara Membuat Pembentangan dalam Python

Aspose.Slides FOSS for Python membolehkan anda mencipta persembahan PowerPoint sepenuhnya dalam Python tanpa kebergantungan pada Microsoft Office. Panduan ini menunjukkan cara mencipta persembahan baru, menambah slaid dan bentuk, memformat teks, dan menyimpan hasilnya.

Panduan Langkah demi Langkah

Langkah 1: Pasang Pakej

Pasang Aspose.Slides FOSS dari PyPI. Python 3.10 atau lebih baru diperlukan.

pip install aspose-slides-foss

Sahkan pemasangan:

import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")

Kebergantungan lxml dipasang secara automatik. Tiada pakej sistem lain diperlukan.


Langkah 2: Import Modul yang Diperlukan

Import pakej dan enum SaveFormat yang diperlukan untuk menyimpan.

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

Semua pemalar jenis bentuk berada dalam aspose.slides_foss.ShapeType. Semua jenis pemformatan (FillType, NullableBool) juga berada dalam aspose.slides_foss.


Langkah 3: Buat Persembahan

Gunakan slides.Presentation() sebagai pengurus konteks. Pembentangan baru bermula dengan satu slaid kosong.

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

with slides.Presentation() as prs:
    print(f"Slides in new presentation: {len(prs.slides)}")
    # work with prs inside this block
    prs.save("output.pptx", SaveFormat.PPTX)

Penting: Sentiasa buka dan gunakan Presentation di dalam blok with. Jangan simpan rujukan di luar pernyataan with; sumber tidak akan dilepaskan dengan betul.


Langkah 4: Akses Slaid

Slaid pertama berada pada indeks 0. Persembahan kosong mempunyai tepat satu slaid.

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

with slides.Presentation() as prs:
    slide = prs.slides[0]  # zero-based index
    print(f"Slide at index 0: {slide}")
    prs.save("output.pptx", SaveFormat.PPTX)

Langkah 5: Tambah Bentuk

Gunakan slide.shapes.add_auto_shape() untuk menambah AutoShape. Parameter ialah (shape_type, x, y, width, height) semua dalam titik (1 titik = 1/72 inci; slaid standard ialah 720 × 540 pt).

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 at (50, 50) with 400 wide and 120 tall
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 400, 120)

    # Attach a text frame
    shape.add_text_frame("Hello from Aspose.Slides FOSS!")

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

Langkah 6: Simpan Persembahan

Panggil prs.save(path, SaveFormat.PPTX) sebelum blok with keluar. PPTX adalah satu-satunya format output yang disokong.

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

Fail ditulis secara atomik; jika ralat berlaku sebelum panggilan ini, tiada fail output yang dibuat.


Contoh Kerja Lengkap

Skrip berikut menghasilkan persembahan dua slaid dengan bentuk tajuk pada slaid pertama dan jadual pada slaid kedua.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    # --- Slide 1: title shape ---
    slide1 = prs.slides[0]
    title = slide1.shapes.add_auto_shape(ShapeType.RECTANGLE, 40, 40, 640, 80)
    tf = title.add_text_frame("Q1 Results: Executive Summary")
    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    # --- Slide 2: table ---
    prs.slides.add_empty_slide(prs.layout_slides[0])
    slide2 = prs.slides[1]
    table = slide2.shapes.add_table(40, 40, [200.0, 120.0, 120.0], [40.0, 40.0, 40.0])
    headers = ["Region", "Revenue", "Growth"]
    data = [
        ["North", "$1.2M", "+8%"],
        ["South", "$0.9M", "+4%"],
    ]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("q1-results.pptx", SaveFormat.PPTX)

print("Saved q1-results.pptx")

Isu Umum dan Penyelesaian

ResourceWarning: unclosed Presentation

Anda sedang menginstansiasi Presentation tanpa blok with. Sentiasa gunakan:

with slides.Presentation() as prs:
    ...

AttributeError: __enter__

Jika anda melihat ralat ini, periksa bahawa anda telah mengimport aspose.slides_foss (bukan aspose.slides). Nama pakej di PyPI ialah aspose-slides-foss dan import masa jalan ialah aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX adalah ahli enum, bukan fungsi. Gunakan ia sebagai prs.save("file.pptx", SaveFormat.PPTX).


Soalan Lazim

Apakah saiz slaid lalai?

Satu Presentation() baru mencipta slaid pada saiz standard 10 × 7.5 inci (720 × 540 titik). Menukar saiz slaid belum disokong dalam edisi ini.

Bolehkah saya menambah lebih daripada satu slaid?

Ya. Panggil prs.slides.add_empty_slide(prs.layout_slides[0]) untuk menambah slaid kosong dan mengaksesnya mengikut indeks:

prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]

Bolehkah saya membuka fail sedia ada dan menambah slaid?

Ya:

with slides.Presentation("existing.pptx") as prs:
    prs.slides.add_empty_slide(prs.layout_slides[0])
    prs.save("existing.pptx", SaveFormat.PPTX)

Format apa yang boleh saya simpan?

Hanya SaveFormat.PPTX disokong. Eksport ke PDF, HTML, SVG, atau imej tidak tersedia dalam edisi ini.


Lihat Juga

 Bahasa Melayu