1. 产品
  2.   Aspose.Slides
  3.   Aspose.Slides FOSS for C++

Aspose.Slides FOSS - Aspose.Slides C++ 的 FOSS

从 C++ 创建、读取和编辑 PowerPoint 演示文稿 — 免费且开源,无需 Office 依赖。

开源 C++ 库,用于 PowerPoint 演示文稿

Aspose.Slides FOSS for C++ 是一个 MIT 许可证的库,用于处理 PowerPoint .pptx 文件。通过 CMake FetchContent 集成它,即可立即开始创建、读取和编辑演示文稿,而无需安装 Microsoft Office 或任何专有运行时。

该库提供了围绕 PresentationSlideShapeCollectionTextFrameParagraphPortion 构建的 Presentation API,这是 PowerPoint 本身使用的概念模型。可以添加和删除幻灯片,插入 AutoShape、表格和连接线,在字符级别对文本进行加粗、斜体、字号和颜色等格式设置,应用纯色或渐变填充,并添加视觉效果(阴影、发光、模糊、反射)。

RAII 语义确保可靠的资源清理:Presentation 析构函数会自动释放所有内部状态。加载期间遇到的未知 XML 部分在保存时会原样保留,因此往返过程永不破坏库尚未理解的内容。该库需要符合 C++20 标准的编译器。有关其他功能,请参阅 Aspose.Slides for C++ enterprise edition

演示文稿和幻灯片 API

  • 创建和打开 PPTX: 创建新演示文稿或通过 Presentation()Presentation(path) 打开现有的 .pptx 文件。
  • 添加和删除幻灯片: 使用 add_empty_slide()remove()remove_at() 以编程方式管理 SlideCollection
  • AutoShapes: 通过 add_auto_shape() 插入矩形、椭圆、线条和其他 ShapeType 几何形状。
  • 表格和连接器: 添加结构化表格形状和形状之间的连接线,通过 add_connector()
  • 演讲者备注: 通过 NotesSlideManager 读取和写入每张幻灯片的演讲者备注。
  • Threaded comments: 通过迭代 pres.comment_authors() 访问评论线程及其关联的评论。

可以使用 Aspose.Slides FOSS 的地方

  • 报告生成: 从数据源构建品牌化的幻灯片演示文稿,无需 Office.
  • 模板自动化: 在 CI/CD 流水线中使用动态内容填充 PPTX 模板。
  • 内容迁移: 读取现有演示文稿并重新组织或重新设计幻灯片。
  • 嵌入式系统: 在性能关键或资源受限的环境中处理 PPTX 文件。
  • 批处理: 在大型幻灯片库中应用统一的格式更改。

文本格式化与视觉效果

  • 字符级格式化: 通过 PortionFormat 对单个 Portion 对象应用粗体、斜体、字体大小和颜色。
  • 实心和渐变填充: 使用 FillFormatFillType 将形状填充设置为实色或多点线性渐变。
  • 阴影和发光效果: 通过 EffectFormat 对任何形状应用外部阴影、发光、模糊和反射。
  • 段落对齐: 使用 ParagraphFormatset_alignment() 为每个段落设置左、居中、右或两端对齐。
  • Round-trip safe: 未知的 XML 部分在重新保存时会原样保留。

开发者体验

Aspose.Slides FOSS 通过 CMake FetchContent 集成,因此无需手动下载或系统范围的安装。库会与您的项目一起从源代码构建。

该 API 镜像 PowerPoint 自身的对象模型(PresentationSlideShapeCollectionTextFrameParagraphPortion),因此任何熟悉 PowerPoint 对象模型的人都可以立即使用该库。它采用 MIT 许可证,在 GitHub 上开源,并且需要符合 C++20 标准的编译器。

创建演示文稿并添加形状

RAII 确保 Presentation 析构函数在对象超出作用域时自动释放所有资源。add_auto_shape() 接受一个 ShapeType 枚举,然后是 x/y 位置和以点为单位的宽度/高度 — shape 的 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];

    // Add a rectangle AutoShape
    auto& shape = slide.shapes().add_auto_shape(
        Aspose::Slides::Foss::ShapeType::RECTANGLE,
        50, 50, 400, 150
    );
    shape.text_frame()->set_text("Hello, Aspose.Slides!");

    prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);
    return 0;
}
 ```cmake
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)
 

格式化文本并应用填充效果

文本格式化在 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];

    // Bold, 18pt text
    portion.portion_format().set_font_bold(asf::NullableBool::TRUE);
    portion.portion_format().set_font_height(18);

    // Solid background fill on the shape
    shape.fill_format().set_fill_type(asf::FillType::SOLID);

    prs.save("formatted.pptx", asf::SaveFormat::PPTX);
    return 0;
}
 ```cpp
#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];

    // Bold, 18pt text
    portion.portion_format().set_font_bold(asf::NullableBool::TRUE);
    portion.portion_format().set_font_height(18);

    // Solid background fill on the shape
    shape.fill_format().set_fill_type(asf::FillType::SOLID);

    prs.save("formatted.pptx", asf::SaveFormat::PPTX);
    return 0;
}
 

常见问题

Aspose.Slides FOSS - 什么是 Aspose.Slides 的 C++ 开源软件?

它是一个免费、MIT 许可证的 C++ 库,用于创建、读取和编辑 PowerPoint .pptx 演示文稿,无需 Microsoft Office。

支持哪些文件格式?

.pptx 是受支持的读写格式。此版本不提供导出为 PDF、HTML、SVG 或图像的功能。

它需要 Microsoft Office 或 PowerPoint 吗?

否。Aspose.Slides FOSS 是一个独立的 C++ 库,不依赖 Microsoft Office、COM 自动化或任何专有运行时。

我该如何安装它?

使用 CMake FetchContent 将库直接从 GitHub 集成。该库需要符合 C++20 标准的编译器。

我可以应用阴影和发光等视觉效果吗?

是的。该库通过 EffectFormat API 支持对任何形状对象的外部阴影、发光、模糊和反射效果。

该库是否使用 RAII 进行资源管理?

是的。Presentation 的析构函数会自动释放所有内部状态,因此无需显式清理。

往返转换 PPTX 会破坏未知内容吗?

否。在加载过程中遇到的未知 XML 部分会在保存时原样保留,因此库尚未理解的内容永不丢失。

我在哪里可以找到源代码?

该库采用 MIT 许可证,托管在 GitHub 上。欢迎提交错误报告和拉取请求。

  

支持和学习资源

 中文