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

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

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

Làm thế nào để cài đặt Aspose.Slides FOSS?

Cài đặt từ PyPI bằng pip. Yêu cầu Python 3.10 hoặc mới hơn.

pip install aspose-slides-foss

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

import aspose.slides_foss as slides
with slides.Presentation() as prs:
    print(f"Slides: {len(prs.slides)}")

Phụ thuộc lxml được cài đặt tự động. Không cần Microsoft Office hay bất kỳ môi trường chạy hệ thống nào khác.


Tại sao tôi phải sử dụng with slides.Presentation() as prs:?

Lớp Presentation quản lý các handle tệp nội bộ và tài nguyên XML. Nếu không có trình quản lý ngữ cảnh, các tài nguyên đó sẽ không được giải phóng khi đối tượng Presentation ra khỏi phạm vi, điều này có thể gây rò rỉ tài nguyên hoặc khóa tệp trên Windows.

Luôn tuân theo mẫu này:

with slides.Presentation("input.pptx") as prs:
    # work here
    prs.save("output.pptx", SaveFormat.PPTX)

Tôi có thể lưu dưới định dạng tệp nào?

Enum SaveFormat định nghĩa các hằng cho nhiều định dạng — PPTX, PDF, HTML, SVG, JPEG, PNG, và các định dạng khác — để tương thích API với phiên bản thương mại. Khi chạy tại thời gian thực trong phiên bản FOSS này, tất cả các lời gọi save() bỏ qua đối số định dạng và luôn ghi ra đầu ra PPTX. Việc truyền SaveFormat.PDF biên dịch và chạy mà không có lỗi nhưng tạo ra một tệp .pptx, không phải .pdf.

from aspose.slides_foss.export import SaveFormat
prs.save("output.pptx", SaveFormat.PPTX)

Xuất sang các định dạng không phải PPTX không khả dụng về chức năng trong phiên bản này. Sử dụng SaveFormat.PPTX cho tất cả các thao tác lưu.


Tôi có thể mở các tệp .ppt (PowerPoint 97–2003 cũ) không?

Không. Chỉ hỗ trợ các tệp .pptx (Office Open XML). Định dạng nhị phân .ppt cũ không được thư viện này xử lý.


Làm sao tôi có thể truy cập các slide?

Slides là một danh sách bắt đầu từ chỉ số 0 có thể truy cập qua prs.slides:

first_slide = prs.slides[0]
slide_count = len(prs.slides)

Làm thế nào để tôi thêm một slide thứ hai?

Sử dụng prs.slides.add_empty_slide() với một bố cục:

with slides.Presentation() as prs:
    layout = prs.layout_slides[0]
    prs.slides.add_empty_slide(layout)
    slide2 = prs.slides[1]
    prs.save("two-slides.pptx", SaveFormat.PPTX)

Làm thế nào để đặt màu nền cho slide?

Màu nền slide không có trong phiên bản này. Lớp Slide không cung cấp thuộc tính background. Thử thực hiện slide.background sẽ gây ra AttributeError. Tính năng này chưa được triển khai trong phiên bản hiện tại.


Làm thế nào để tôi sử dụng NullableBool?

NullableBool là một enum ba trạng thái được sử dụng cho các thuộc tính định dạng. Sử dụng NullableBool.TRUE (không phải True của Python) cho các thuộc tính như in đậm, in nghiêng và các thuộc tính tương tự:

from aspose.slides_foss import NullableBool, TextUnderlineType
fmt.font_bold = NullableBool.TRUE
fmt.font_italic = NullableBool.FALSE
# font_underline is TextUnderlineType, not NullableBool:
fmt.font_underline = TextUnderlineType.NOT_DEFINED  # inherits from theme

Tại sao việc đặt màu văn bản không có hiệu lực?

Bạn cũng phải đặt fill_type = FillType.SOLID trước khi gán màu:

from aspose.slides_foss import FillType
from aspose.slides_foss.drawing import Color

fmt.fill_format.fill_type = FillType.SOLID
fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)

Tôi có thể sử dụng biểu đồ hoặc SmartArt không?

Không. Charts, SmartArt, OLE objects, animations, transitions, hyperlinks, VBA macros, và digital signatures không được triển khai trong phiên bản này và gây ra NotImplementedError.


Thư viện có hỗ trợ Python 3.9 không?

Không. Yêu cầu Python 3.10 trở lên.


Thư viện này có an toàn với đa luồng không?

Mỗi đối tượng Presentation là độc lập. Việc tạo và sử dụng các thể hiện Presentation riêng biệt từ các luồng riêng là an toàn miễn là bạn không chia sẻ một đối tượng Presentation duy nhất giữa các luồng mà không có khóa bên ngoài.


Làm thế nào để nhúng một hình ảnh?

Đọc các byte hình ảnh và thêm chúng vào prs.images, sau đó tạo một PictureFrame:

with open("logo.png", "rb") as f:
    image_data = f.read()
image = prs.images.add_image(image_data)
slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 50, 50, 200, 150, image)

Xem thêm

 Tiếng Việt