常见问题

常见问题

我如何为 C++ 构建和链接 Aspose.Slides FOSS?

使用 CMake FetchContent 将库添加到您的项目中。需要 C++20 或更高版本。

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)

无需 Microsoft Office 或其他系统运行时。


为什么必须在 Presentation 中使用 RAII?

Presentation 类管理内部 XML 资源。当对象超出作用域时,其析构函数会释放这些资源。避免在没有智能指针的情况下使用 new 分配 Presentation;请使用栈分配或 std::unique_ptr 来确保清理。

始终遵循此模式:

#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;
}

我可以保存成哪些文件格式?

仅支持 PPTX

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

此版本不支持导出为 PDF、HTML、SVG 或图像格式(PNG、JPEG)。


我可以打开 .ppt(旧的 PowerPoint 97-2003)文件吗?

不。仅支持 .pptx(Office Open XML)文件。此库不处理传统的 .ppt 二进制格式。


我如何访问幻灯片?

幻灯片是一个从零开始的集合,可通过 prs.slides() 访问:

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

我该如何添加第二张幻灯片?

使用 prs.slides().add_empty_slide() 并指定布局:

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

我如何设置幻灯片的背景颜色?

当前 API 未公开幻灯片背景颜色。BaseSlideSlide 没有 background() 方法。此功能在此版本的库中不可用。


我该如何使用 NullableBool?

NullableBool 是用于格式化属性的三态枚举。使用 NullableBool::TRUE(而不是 C++ true)来表示粗体、斜体及类似属性:

#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);

为什么设置文本颜色没有效果?

在分配颜色之前,您还必须将 fill_type 设置为 SOLID

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

我可以使用图表或SmartArt吗?

不。图表、SmartArt、OLE 对象、动画、过渡、超链接、VBA 宏以及数字签名在此版本中未实现。


这个库是线程安全的吗?

每个 Presentation 对象都是独立的。只要不在没有外部锁定的情况下跨线程共享单个 Presentation 对象,从不同线程创建和使用独立的 Presentation 实例是安全的。


我该如何嵌入图像?

读取图像字节并将其添加到 prs.images(),然后创建一个 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);

另请参阅

 中文