Aspose.Slides FOSS for C++ 是一个基于 MIT 许可证的库,用于处理 PowerPoint .pptx 文件。通过 CMake FetchContent 集成它,即可立即开始创建、读取和编辑演示文稿,无需安装 Microsoft Office 或任何专有运行时。
该库提供了围绕 Presentation、Slide、ShapeCollection、TextFrame、Paragraph 和 Portion 构建的 Presentation API,这些是 PowerPoint 本身使用的概念模型。可以添加和删除幻灯片,插入自动形状、表格和连接线,在字符层面格式化文本(加粗、斜体、字号和颜色),应用纯色或渐变填充,并添加视觉效果(阴影、发光、模糊、反射)。
RAII 语义确保可靠的资源清理:Presentation 析构函数会自动释放所有内部状态。加载时遇到的未知 XML 部分在保存时会原样保留,因此往返读取永不会破坏库尚未理解的内容。该库要求使用符合 C++17 标准的编译器。
Presentation() 或 Presentation(path) 创建新演示文稿或打开已有的 .pptx 文件。add_clone()、remove() 和 remove_at() 以编程方式管理 SlideCollection。add_auto_shape() 插入矩形、椭圆、直线以及其他 ShapeType 几何形状。add_connector() 添加结构化的表格形状和形状之间的连接线。NotesSlideManager 读取和写入每张幻灯片的演讲者备注。get_slide_comments() 访问幻灯片级别的评论线程。PortionFormat 对单个 Portion 对象应用粗体、斜体、字体大小和颜色。FillFormat 和 FillType 将形状填充设为纯色或多节点线性渐变。EffectFormat 为任意形状应用外部阴影、发光、模糊和反射。ParagraphFormat 和 set_alignment() 为每个段落设置左对齐、居中、右对齐或两端对齐。Aspose.Slides FOSS 通过 CMake FetchContent 集成,无需手动下载或系统范围的安装。该库会与您的项目一起从源码构建。
该 API 镜像了 PowerPoint 自身的对象模型(Presentation、Slide、ShapeCollection、TextFrame、Paragraph、Portion),因此熟悉 PowerPoint 对象模型的用户可以立即使用该库。它采用 MIT 许可证,在 GitHub 上开源,并且需要支持 C++17 的编译器。
RAII 确保 Presentation 析构函数在对象超出作用域时自动释放所有资源。add_auto_shape() 接受一个 ShapeType 枚举,然后是以点为单位的 x/y 位置和宽度/高度——形状的 text_frame 提供了设置文本内容的访问接口。
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)
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>
int main() {
Aspose::Slides::Foss::Presentation prs;
auto& slide = prs.slides()[0];
// 添加一个矩形 AutoShape
auto& shape = slide.shapes().add_auto_shape(
Aspose::Slides::Foss::ShapeType::RECTANGLE,
50, 50, 400, 150
);
shape.text_frame()->set_text("你好,Aspose.Slides!");
prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);
return 0;
}
文本格式化在 Portion 级别工作——它是字符序列中最小的单元。打开已保存的文件,定位到第一段的第一个 portion,并直接设置字体属性。形状填充是独立的:将填充类型设为实色并指定颜色。
#include <Aspose/Slides/Foss/presentation.h>
namespace asf = Aspose::Slides::Foss;
int main() {
asf::Presentation prs("output.pptx");
auto& shape = prs.slides()[0].shapes()[0];
auto& portion = shape.text_frame()
->paragraphs()[0].portions()[0];
// 粗体,18pt 文本
portion.portion_format().set_font_bold(asf::NullableBool::TRUE);
portion.portion_format().set_font_height(18);
// 形状的实色背景填充
shape.fill_format().set_fill_type(asf::FillType::SOLID);
prs.save("formatted.pptx", asf::SaveFormat::PPTX);
return 0;
}
它是一个免费、采用 MIT 许可证的 C++ 库,用于创建、读取和编辑 PowerPoint .pptx 演示文稿,无需 Microsoft Office。
PPTX 是受支持的读写格式。此版本不提供导出为 PDF、HTML、SVG 或图像的功能。
否。Aspose.Slides FOSS 是一个独立的 C++ 库,不依赖 Microsoft Office、COM 自动化或任何专有运行时。
使用 CMake FetchContent 将库直接从 GitHub 集成。该库需要符合 C++17 标准的编译器。
是的。该库通过 EffectFormat API 支持对任何形状对象的外部阴影、发光、模糊和反射效果。
是的。Presentation 析构函数会自动释放所有内部状态,无需显式清理。
否。在加载过程中遇到的未知 XML 部分会在保存时原样保留,因此库尚未理解的内容永远不会丢失。
该库采用 MIT 许可证,托管在 GitHub 上。欢迎提交 bug 报告和 pull request。