Cách tải các bản trình chiếu trong Python

Cách tải các bản trình chiếu trong Python

Aspose.Slides FOSS for Python cho phép bạn mở bất kỳ tệp .pptx nào, kiểm tra nội dung của nó và hoặc lưu lại dưới dạng PPTX hoặc trích xuất dữ liệu từ nó. Hướng dẫn này bao gồm việc mở tệp, lặp qua các slide, đọc văn bản hình dạng và thực hiện lưu lại (round‑tripping).

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

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

pip install aspose-slides-foss

Bước 2: Mở một bản trình chiếu hiện có

Truyền đường dẫn tệp tới slides.Presentation(). Sử dụng trình quản lý ngữ cảnh để đảm bảo dọn dẹp.

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

with slides.Presentation("input.pptx") as prs:
    print(f"Slide count: {len(prs.slides)}")
    prs.save("output.pptx", SaveFormat.PPTX)

Các phần XML không xác định trong tệp nguồn được giữ nguyên nguyên văn: thư viện không bao giờ xóa nội dung mà nó chưa hiểu.


Bước 3: Kiểm tra các slide

Lặp qua tất cả các slide và in chỉ mục của chúng:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for i, slide in enumerate(prs.slides):
        shape_count = len(slide.shapes)
        print(f"Slide {i}: {shape_count} shapes")

Bước 4: Đọc văn bản hình dạng

Lặp lại các hình dạng và đọc văn bản từ các hình dạng có TextFrame:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for slide in prs.slides:
        for shape in slide.shapes:
            if hasattr(shape, "text_frame") and shape.text_frame is not None:
                text = shape.text_frame.text
                if text.strip():
                    print(f"  Shape text: {text!r}")

Bước 5: Đọc thuộc tính tài liệu

Truy cập các thuộc tính tài liệu cốt lõi từ prs.document_properties:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    props = prs.document_properties
    print(f"Title:   {props.title}")
    print(f"Author:  {props.author}")
    print(f"Subject: {props.subject}")

Bước 6: Lưu vòng tròn

Sau khi kiểm tra hoặc chỉnh sửa bản trình chiếu, lưu lại dưới dạng PPTX:

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

Lưu vào một đường dẫn khác tạo ra một tệp mới. Lưu vào cùng một đường dẫn sẽ ghi đè lên tệp gốc.


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

FileNotFoundError

Kiểm tra xem đường dẫn tới tệp .pptx có đúng so với thư mục làm việc hay không. Sử dụng pathlib.Path để xây dựng đường dẫn một cách chắc chắn:

from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
    ...

Exception: File format is not supported

Thư viện chỉ hỗ trợ .pptx (Office Open XML). Các tệp .ppt (PowerPoint nhị phân 97–2003) cũ không được hỗ trợ.

Shapes không có thuộc tính text_frame

Một số hình dạng (Connectors, PictureFrames, GroupShapes) không có text_frame. Kiểm tra với hasattr(shape, "text_frame") and shape.text_frame is not None trước khi truy cập văn bản.


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

Việc tải có giữ nguyên toàn bộ nội dung gốc không?

Vâng. Các phần XML không xác định được giữ nguyên nguyên văn khi lưu vòng tròn. Thư viện sẽ không xóa bất kỳ nội dung XML nào mà nó chưa hiểu.

Tôi có thể tải một PPTX được bảo vệ bằng mật khẩu không?

Các bản trình chiếu được bảo vệ bằng mật khẩu (được mã hoá) không được hỗ trợ trong phiên bản này.

Tôi có thể trích xuất hình ảnh được nhúng không?

Truy cập bộ sưu tập hình ảnh: prs.images trả về ImageCollection. Mỗi hình ảnh có thuộc tính content_typebytes để đọc dữ liệu hình ảnh thô.

Có hỗ trợ tải từ luồng trong bộ nhớ không?

Việc tải trực tiếp từ io.BytesIO không được cung cấp trong API hiện tại. Hãy ghi các byte vào một tệp tạm thời trước:

import tempfile, os
import aspose.slides_foss as slides

with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as tmp:
    tmp.write(pptx_bytes)
    tmp_path = tmp.name

try:
    with slides.Presentation(tmp_path) as prs:
        print(f"Slides: {len(prs.slides)}")
finally:
    os.unlink(tmp_path)

Xem thêm

 Tiếng Việt