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 để tôi xây dựng và liên kết Aspose.Slides FOSS cho C++?

Sử dụng CMake FetchContent để thêm thư viện vào dự án của bạn. Yêu cầu C++20 trở lên.

cmake_minimum_required(VERSION 3.20)
project(my_app LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(FetchContent)
FetchContent_Declare(
    aspose_slides_foss
    GIT_REPOSITORY https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
    GIT_TAG main
)
FetchContent_MakeAvailable(aspose_slides_foss)

add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE aspose_slides_foss)

Không cần Microsoft Office hoặc 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 RAII với Presentation?

Lớp Presentation quản lý các tài nguyên XML nội bộ. Khi đối tượng ra khỏi phạm vi, hàm hủy của nó sẽ giải phóng các tài nguyên đó. Tránh cấp phát một Presentation với new mà không có con trỏ thông minh; hãy sử dụng cấp phát ngăn xếp hoặc std::unique_ptr để đảm bảo việc dọn dẹp.

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

#include <Aspose/Slides/Foss/presentation.h>

int main() {
    Aspose::Slides::Foss::Presentation prs;
    // work here
    prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);
    return 0;
}

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

Chỉ hỗ trợ PPTX:

prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);

Xuất sang PDF, HTML, SVG hoặc các định dạng hình ảnh (PNG, JPEG) không khả dụng trong phiên bản này.


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

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


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

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

auto& slides = prs.slides();
auto& first_slide = slides[0];
auto count = slides.size();

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:

Aspose::Slides::Foss::Presentation prs;
auto& layout = prs.layout_slides()[0];
prs.slides().add_empty_slide(&layout);
auto& slide2 = prs.slides()[1];
prs.save("two-slides.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);

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

Màu nền của slide không được cung cấp trong API hiện tại. BaseSlideSlide không có phương thức background(). Tính năng này không có trong phiên bản này của thư viện.


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 C++ true) cho các thuộc tính in đậm, in nghiêng và các thuộc tính tương tự:

#include <Aspose/Slides/Foss/presentation.h>

fmt.set_font_bold(Aspose::Slides::Foss::NullableBool::TRUE);
fmt.set_font_italic(Aspose::Slides::Foss::NullableBool::FALSE);
// Note: set_font_underline() takes TextUnderlineType, not NullableBool:
// fmt.set_font_underline(Aspose::Slides::Foss::TextUnderlineType::NONE);

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 thành SOLID trước khi gán màu:

fmt.fill_format().set_fill_type(Aspose::Slides::Foss::FillType::SOLID);
fmt.fill_format().solid_fill_color().set_color(
    Aspose::Slides::Foss::Color::from_argb(255, 200, 0, 0));

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

Không. Biểu đồ, SmartArt, đối tượng OLE, hoạt ảnh, chuyển tiếp, siêu liên kết, macro VBA và chữ ký số không được triển khai trong phiên bản này.


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:

#include <Aspose/Slides/Foss/presentation.h>
#include <fstream>
#include <vector>

std::ifstream file("logo.png", std::ios::binary);
std::vector<uint8_t> data((std::istreambuf_iterator<char>(file)),
                           std::istreambuf_iterator<char>());
auto& image = prs.images().add_image(data);
slide.shapes().add_picture_frame(
    Aspose::Slides::Foss::ShapeType::RECTANGLE, 50, 50, 200, 150, image);

Xem thêm

 Tiếng Việt