Wie man Präsentationen in C++ erstellt
Aspose.Slides FOSS for C++ lets you create PowerPoint presentations entirely in C++ with no dependency on Microsoft Office. This guide shows how to create a new presentation, add slides and shapes, format text, and save the result.
Schritt für Schritte
Schritt 1: Fügen Sie die Bibliothek zu Ihrem CMake-Projekt hinzu
Verwenden Sie CMake FetchContent, um die Bibliothek direkt von GitHub zu integrieren. C++20 oder höher ist erforderlich.
cmake_minimum_required(VERSION 3.20)
project(my_slides_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)Es sind keine weiteren Systempakete erforderlich.
Schritt 2: Die erforderlichen Überschriften einfügen
#include <Aspose/Slides/Foss/presentation.h>Alle Arten leben in der Aspose::Slides::Foss Um es kurz zu halten, verwenden die folgenden Beispiele einen Namensraum-Alias:
namespace asf = Aspose::Slides::Foss;Schritt 3: Erstellen Sie eine Präsentation
Konstruktion einer Presentation Eine neue Präsentation beginnt mit einer leeren Folie.
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
std::cout << "Slides in new presentation: " << prs.slides().size() << "\n";
prs.save("output.pptx", asf::SaveFormat::PPTX);
return 0;
}Wichtig: Verwenden Sie Stack-Zuteilung oder std::unique_ptr Der Zerstörer setzt also automatisch interne Ressourcen frei.
Schritt 4: Auf eine Folie zugreifen
Die erste Folie ist bei Index 0. Eine leere Präsentation hat genau eine Folio.
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0]; // zero-based index
prs.save("output.pptx", asf::SaveFormat::PPTX);Schritt 5: Fügen Sie eine Form hinzu
Verwendung slide.shapes().add_auto_shape() Die Parameter sind: (shape_type, x, y, width, height) Alle in Punkten (1 Punkt = 1/72 Zoll; Standarddiagramm ist 720 x 540 pt).
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
// Rectangle at (50, 50) with 400 wide and 120 tall
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 400, 120);
// Set text on the shape's text frame
shape.text_frame()->set_text("Hello from Aspose.Slides FOSS!");
prs.save("with-shape.pptx", asf::SaveFormat::PPTX);
return 0;
}Schritt 6: Speichern Sie die Präsentation
Rufen Sie an . prs.save(path, SaveFormat::PPTX) vor dem Presentation PPTX ist das einzige unterstützte Ausgabeformat.
prs.save("result.pptx", asf::SaveFormat::PPTX);Die Datei wird atomar geschrieben; wenn vor diesem Aufruf ein Fehler auftritt, wird keine Ausgabedatei erstellt.
Vollständiges Arbeitsbeispiel
Das folgende Programm erstellt eine zweistufige Präsentation mit einer Titelform auf der ersten Folie und einem Tisch auf dem zweiten.
#include <Aspose/Slides/Foss/presentation.h>
#include <vector>
#include <string>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
// --- Slide 1: title shape ---
auto& slide1 = prs.slides()[0];
auto& title = slide1.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 40, 40, 640, 80);
title.text_frame()->set_text("Q1 Results: Executive Summary");
auto& fmt = title.text_frame()->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_height(32);
fmt.set_font_bold(asf::NullableBool::TRUE);
fmt.fill_format().set_fill_type(asf::FillType::SOLID);
fmt.fill_format().solid_fill_color().set_color(
asf::Drawing::Color::from_argb(255, 0, 70, 127));
// --- Slide 2: table ---
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
auto& slide2 = prs.slides()[1];
std::vector<double> col_w = {200.0, 120.0, 120.0};
std::vector<double> row_h = {40.0, 40.0, 40.0};
auto& table = slide2.shapes().add_table(40, 40, col_w, row_h);
std::vector<std::string> headers = {"Region", "Revenue", "Growth"};
std::vector<std::vector<std::string>> data = {
{"North", "$1.2M", "+8%"},
{"South", "$0.9M", "+4%"},
};
for (size_t col = 0; col < headers.size(); ++col) {
table.rows()[0][col].text_frame()->set_text(headers[col]);
}
for (size_t r = 0; r < data.size(); ++r) {
for (size_t c = 0; c < data[r].size(); ++c) {
table.rows()[r + 1][c].text_frame()->set_text(data[r][c]);
}
}
prs.save("q1-results.pptx", asf::SaveFormat::PPTX);
return 0;
}Häufige Probleme und Lösungen
Segfault oder doppelfrei eingeschaltet Presentation Zerstörung
Sie speichern eine Referenz oder einen Zeiger zu einer Folie oder Form, nachdem die Presentation Alle Referenzen, die von der Kommission zurückgegeben wurden, sind zerstört worden. slides(), shapes(), usw. werden ungültig, wenn die Presentation - Die Zerstörer laufen. Presentation lebt für die gesamte Dauer, während Sie seine Kinderobjekte verwenden.
SaveFormat::PPTX is not a function Kompilatorfehler
SaveFormat::PPTX ist ein Enum-Wert, keine Funktion. Verwenden Sie es als prs.save("file.pptx", asf::SaveFormat::PPTX).
Linker-Fehler: undefinierte Verweisung auf Aspose::Slides::Foss::Presentation
Stellen Sie sicher, dass Ihre CMakeLists.txt Verknüpfung mit der Bibliothek target_link_libraries(my_app PRIVATE aspose_slides_foss).
Häufig gestellte Fragen
Was ist die Standard-Slidegröße?
Eine neue Presentation() erstellt Diapositive in der Standardgröße 10 x 7,5 Zoll (720 x 540 Punkte). Die Änderung der Diapotheken ist noch nicht unterstützt.
Kann ich mehr als eine Folie hinzufügen?
Ja, rufen Sie an. prs.slides().add_empty_slide(&prs.layout_slides()[0]) Ein leerer Diagramm hinzuzufügen und nach Index zugänglich zu machen:
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
auto& slide2 = prs.slides()[1];Kann ich eine vorhandene Datei öffnen und Bilder hinzufügen?
- Ja , das ist er .:
asf::Presentation prs("existing.pptx");
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
prs.save("existing.pptx", asf::SaveFormat::PPTX);In welche Formate kann ich speichern?
Nur: SaveFormat::PPTX wird unterstützt. Export in PDF, HTML, SVG oder Bilder ist nicht verfügbar.