常见问题
常见问题
我如何为 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 未公开幻灯片背景颜色。BaseSlide 和 Slide 没有 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);