Aspose.Slides FOSS for C++는 PowerPoint .pptx 파일을 다루기 위한 MIT 라이선스 라이브러리입니다. CMake FetchContent를 통해 통합하고 Microsoft Office나 어떤 독점 런타임도 설치하지 않고 즉시 프레젠테이션을 생성, 읽기 및 편집할 수 있습니다.
이 라이브러리는 PowerPoint 자체에서 사용하는 개념 모델인 Presentation, Slide, ShapeCollection, TextFrame, Paragraph, Portion을 중심으로 구성된 Presentation API를 제공합니다. 슬라이드를 추가·제거하고, AutoShape, Table, Connector를 삽입하며, 굵게, 기울임, 글꼴 크기 및 색상 등 문자 수준에서 텍스트를 서식 지정하고, 단색 또는 그라디언트 채우기를 적용하고, 시각 효과(그림자, 글로우, 블러, 반사)를 추가할 수 있습니다.
RAII 의미론은 신뢰할 수 있는 리소스 정리를 보장합니다: Presentation 소멸자가 모든 내부 상태를 자동으로 해제합니다. 로드 중에 발견된 알 수 없는 XML 파트는 저장 시 그대로 보존되므로, 라운드 트립 시 라이브러리가 아직 이해하지 못하는 콘텐츠가 파괴되지 않습니다. 이 라이브러리는 C++20 호환 컴파일러가 필요합니다.
.pptx files via Presentation() or Presentation(path).SlideCollection with add_empty_slide(), remove(), and remove_at().ShapeType geometries via add_auto_shape().add_connector().NotesSlideManager.pres.comment_authors() and their associated comments.Portion objects via PortionFormat.FillFormat and FillType.EffectFormat.ParagraphFormat and set_alignment().Aspose.Slides FOSS integrates via CMake FetchContent, so no manual download or system-wide installation is needed. The library builds from source alongside your project.
The API mirrors PowerPoint’s own object model (Presentation, Slide, ShapeCollection, TextFrame, Paragraph, Portion), so anyone familiar with the PowerPoint object model can use the library immediately. It is MIT-licensed, open-source on GitHub, and requires a C++20-compliant compiler.
RAII ensures the Presentation destructor releases all resources automatically when the object goes out of scope. add_auto_shape() takes a ShapeType enum, then x/y position and width/height in points — the shape’s text_frame provides access to set text content.
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;
}
Text formatting works at the Portion level — the smallest unit of a run of characters. Open the saved file, navigate to the first portion of the first paragraph, and set font properties directly. Shape fill is independent: set the fill type to solid and assign a color.
#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;
}
It is a free, MIT-licensed C++ library for creating, reading, and editing PowerPoint .pptx presentations without requiring Microsoft Office.
PPTX is the supported read/write format. Export to PDF, HTML, SVG, or images is not available in this edition.
No. Aspose.Slides FOSS is a standalone C++ library with no dependency on Microsoft Office, COM automation, or any proprietary runtime.
Use CMake FetchContent to integrate the library directly from GitHub. The library requires a C++20-compliant compiler.
Yes. The library supports outer shadow, glow, blur, and reflection effects on any shape object via the EffectFormat API.
Yes. The Presentation destructor releases all internal state automatically, so no explicit cleanup is needed.
No. Unknown XML parts encountered during load are preserved verbatim on save, so content the library does not yet understand is never lost.
The library is MIT-licensed and hosted on GitHub. Bug reports and pull requests are welcome.