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-fossSahkan 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 = 80Bolehkah 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.