소개

Aspose.Slides FOSS for C++ is now available: a free, MIT-licensed library for creating, reading, and editing PowerPoint .pptx 네이티브 C++로 작성된 파일이며, Microsoft Office나 어떤 독점 런타임에도 의존하지 않습니다.

이 라이브러리는 프레젠테이션 파일을 프로그래밍 방식으로 생성하거나 조작해야 하는 개발자를 위해 설계되었습니다: 데이터에서 슬라이드 덱을 자동화하고, 업로드된 PPTX 파일에서 텍스트와 메타데이터를 추출하며, 프레젠테이션 기반 보고 파이프라인을 구축하거나, 데스크톱 및 서버 애플리케이션에 프레젠테이션 생성을 삽입합니다. 왜냐하면 aspose_slides_foss CMake로 빌드되며, Windows, macOS, Linux에서 컴파일 및 배포됩니다.

주요 기능

  • 전체 라운드트립 PPTX 지원: 어떤 파일이든 열기 .pptx 파일을 열고, 내용을 수정한 뒤, 라이브러리가 아직 이해하지 못하는 알 수 없는 XML 부분을 잃지 않고 다시 저장합니다.
  • 슬라이드 관리: 슬라이드를 추가, 제거 및 순회 using prs.slides(); 프레젠테이션은 하나의 빈 슬라이드로 시작합니다, constructing a Presentation.
  • AutoShapes, 표, 및 연결선: 모양을 삽입 via slide.shapes().add_auto_shape(), 표 데이터를 via slide.shapes().add_table(), 그리고 모양 사이의 시각적 연결선을 via slide.shapes().add_connector().
  • 리치 텍스트 서식: 문자 수준에서 텍스트를 포맷팅 with PortionFormat: 글꼴 크기, 굵게, 기울임, 밑줄, 및 ARGB 색상 via FillType::SOLID 그리고 ColorFormat.
  • 채우기 유형: 적용 FillType::SOLID, Gradient, Pattern, 또는 Picture 어떤 형태든 채웁니다.
  • 시각 효과: 외부 그림자, 글로우, 부드러운 가장자리, 블러, 반사 및 내부 그림자 via shape.effect_format().
  • 3D formatting: 베벨, 카메라, 라이트 리그, 재질 및 압출 깊이 via shape.three_d_format().
  • 발표자 노트: 각 슬라이드에 노트 텍스트를 첨부 via notes_slide_manager().add_notes_slide().
  • 스레드형 댓글: 작성자 메타데이터와 슬라이드 위치가 포함된 댓글을 추가합니다.
  • 삽입된 이미지: 파일 경로, 메모리 버퍼 또는 스트림에서 삽입합니다.
  • 문서 속성: 핵심, 앱 및 사용자 정의 속성을 읽고 씁니다.

시작하기

CMake를 통해 라이브러리를 추가합니다. C++17 컴파일러가 필요합니다.

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)
target_link_libraries(your_target PRIVATE aspose_slides_foss)

도형이 포함된 첫 프레젠테이션을 만들고 저장합니다:

#include <Aspose/Slides/Foss/presentation.h>

int main() {
    using namespace Aspose::Slides::Foss;

    Presentation prs;
    auto& slide = prs.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(
        ShapeType::RECTANGLE, 50, 50, 400, 120
    );
    shape.text_frame()->set_text("Hello from Aspose.Slides FOSS!");
    prs.save("hello.pptx", SaveFormat::PPTX);
    return 0;
}

Presentation 소멸자는 범위를 벗어날 때 모든 내부 리소스를 자동으로 해제합니다.

텍스트 서식 예시

#include <Aspose/Slides/Foss/presentation.h>

using namespace Aspose::Slides::Foss;

Presentation prs;
auto& shape = prs.slides()[0].shapes().add_auto_shape(
    ShapeType::RECTANGLE, 50, 50, 500, 150
);
shape.text_frame()->set_text("Bold heading in corporate blue");
auto& fmt = shape.text_frame()->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_height(28);
fmt.set_font_bold(NullableBool::TRUE);
fmt.fill_format().set_fill_type(FillType::SOLID);
fmt.fill_format().solid_fill_color().set_color(Color::from_argb(255, 0, 70, 127));
prs.save("formatted.pptx", SaveFormat::PPTX);

현재 제한 사항

이번 릴리스에서는 다음 영역에서 예외가 발생합니다:

  • 차트, SmartArt 및 OLE 개체
  • 애니메이션 및 슬라이드 전환
  • PDF, HTML, SVG 또는 이미지 형식으로 내보내기
  • 하이퍼링크, 동작 설정, VBA 매크로 및 디지털 서명

로드 중에 발견된 알 수 없는 XML 파트는 저장 시 그대로 보존되므로, 다른 도구에서 만든 PPTX 파일도 안전하게 라운드 트립됩니다.

참고