Cách Tạo Bài Thuyết Trình trong Python

Cách Tạo Bài Thuyết Trình trong Python

Aspose.Slides FOSS for Python cho phép bạn tạo các bản trình bày PowerPoint hoàn toàn bằng Python mà không cần phụ thuộc vào Microsoft Office. Hướng dẫn này cho thấy cách tạo một bản trình bày mới, thêm các slide và hình dạng, định dạng văn bản và lưu kết quả.

Hướng Dẫn Từng Bước

Bước 1: Cài đặt gói

Cài đặt Aspose.Slides FOSS từ PyPI. Yêu cầu Python 3.10 trở lên.

pip install aspose-slides-foss

Xác minh việc cài đặt:

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

Phụ thuộc lxml được cài đặt tự động. Không cần gói hệ thống nào khác.


Bước 2: Nhập các mô-đun cần thiết

Nhập gói và enum SaveFormat cần thiết để lưu.

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

Tất cả các hằng số kiểu hình dạng đều nằm trong aspose.slides_foss.ShapeType. Tất cả các kiểu định dạng (FillType, NullableBool) cũng nằm trong aspose.slides_foss.


Bước 3: Tạo bản trình chiếu

Sử dụng slides.Presentation() làm trình quản lý ngữ cảnh. Một bản trình bày mới bắt đầu với một slide trống.

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)

Quan trọng: Luôn mở và sử dụng Presentation bên trong một with block. Không lưu trữ tham chiếu bên ngoài câu lệnh with; tài nguyên sẽ không được giải phóng đúng cách.


Bước 4: Truy cập một Slide

Slide đầu tiên có chỉ mục 0. Một bản trình chiếu trống có đúng một slide.

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)

Bước 5: Thêm một Hình

Sử dụng slide.shapes.add_auto_shape() để thêm một AutoShape. Các tham số là (shape_type, x, y, width, height), tất cả tính bằng điểm (1 điểm = 1/72 inch; slide tiêu chuẩn là 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)

Bước 6: Lưu bản trình chiếu

Gọi prs.save(path, SaveFormat.PPTX) trước khi khối with kết thúc. PPTX là định dạng đầu ra duy nhất được hỗ trợ.

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

Tệp được ghi một cách nguyên tử; nếu có lỗi xảy ra trước cuộc gọi này, sẽ không tạo tệp đầu ra.


Ví dụ Hoạt động Đầy đủ

Kịch bản sau tạo một bản trình bày hai slide với một hình dạng tiêu đề trên slide đầu tiên và một bảng trên slide thứ hai.

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

Các vấn đề thường gặp và cách khắc phục

ResourceWarning: unclosed Presentation

Bạn đang khởi tạo Presentation mà không có khối with. Luôn sử dụng:

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

AttributeError: __enter__

Nếu bạn thấy lỗi này, hãy kiểm tra rằng bạn đã nhập aspose.slides_foss (không phải aspose.slides). Tên gói trên PyPI là aspose-slides-foss và lệnh nhập tại thời gian chạy là aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX là một thành viên enum, không phải hàm. Sử dụng nó như prs.save("file.pptx", SaveFormat.PPTX).


Câu hỏi thường gặp

Kích thước slide mặc định là gì?

Một Presentation() mới tạo các slide với kích thước tiêu chuẩn 10 × 7,5 inch (720 × 540 điểm). Việc thay đổi kích thước slide chưa được hỗ trợ trong phiên bản này.

Tôi có thể thêm hơn một slide không?

Vâng. Gọi prs.slides.add_empty_slide(prs.layout_slides[0]) để thêm một slide trống và truy cập nó bằng chỉ mục:

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

Có thể mở một tệp hiện có và thêm các slide không?

Có:

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

Các định dạng nào tôi có thể lưu?

Chỉ hỗ trợ SaveFormat.PPTX. Xuất ra PDF, HTML, SVG hoặc hình ảnh không khả dụng trong phiên bản này.


Xem thêm

 Tiếng Việt