Cách tải bản trình chiếu trong Python
Aspose.Slides FOSS for Python lets you open any .pptx file, kiểm tra nội dung của nó, và hoặc lưu lại thành PPTX hoặc trích xuất dữ liệu từ nó. Hướng dẫn này bao gồm cách mở file, duyệt các slide, đọc văn bản của shape, và 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-fossBước 2: Mở một bản trình chiếu hiện có
Truyền đường dẫn file tới slides.Presentation(). Sử dụng context manager để đả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: 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
Duyệt qua tất cả các slide và in ra 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 của hình dạng
Duyệt qua các shape và đọc văn bản từ các shape có một 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 lõi của tài liệu 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 theo vòng lặp (Round‑Trip)
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 sẽ tạo 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 rằng đường dẫn tới .pptx file là đúng so với thư mục làm việc. 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 hỗ trợ .pptx (Office Open XML) chỉ. Các tệp Legacy .ppt (binary PowerPoint 97–2003) không được hỗ trợ.
Các hình dạng không có thuộc tính text_frame
Một số shape (Connectors, PictureFrames, GroupShapes) không có một 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?
Có. Các phần XML không xác định sẽ được giữ nguyên khi lưu lại theo 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 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ã hóa) không được hỗ trợ trong phiên bản này.
Tôi có thể trích xuất các hình ảnh nhúng không?
Truy cập bộ sưu tập hình ảnh: prs.images trả về the ImageCollection. Mỗi hình ảnh có một content_type và một bytes thuộc tính để đọc dữ liệu hình ảnh thô.
Có hỗ trợ tải từ luồng bộ nhớ trong không?
Tải trực tiếp từ io.BytesIO không được phơi bày trong API hiện tại. Ghi các byte vào 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)