Hvordan lage presentasjoner i C++
Aspose.Slides FOSS for C++ lar deg lage PowerPoint‑presentasjoner helt i C++ uten avhengighet av Microsoft Office. Denne guiden viser hvordan du oppretter en ny presentasjon, legger til lysbilder og former, formaterer tekst og lagrer resultatet.
Trinnvis veiledning
Steg 1: Legg til biblioteket i CMake-prosjektet ditt
Bruk CMake FetchContent for å integrere biblioteket direkte fra GitHub. C++20 eller nyere kreves.
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)Ingen andre systempakker er påkrevd.
Trinn 2: Inkluder de nødvendige header‑filene
#include <Aspose/Slides/Foss/presentation.h>Alle typer finnes i Aspose::Slides::Foss-navnerommet. For korthet bruker eksemplene nedenfor et navneromsalias:
namespace asf = Aspose::Slides::Foss;Trinn 3: Opprett en presentasjon
Konstruer en Presentation på stabelen. En ny presentasjon starter med ett tomt lysbilde.
#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;
}Viktig: Bruk stakkallokering eller std::unique_ptr slik at destruktøren frigjør interne ressurser automatisk.
Trinn 4: Åpne et lysbilde
Den første lysbildet er på indeks 0. En tom presentasjon har nøyaktig ett lysbilde.
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0]; // zero-based index
prs.save("output.pptx", asf::SaveFormat::PPTX);Trinn 5: Legg til en form
Bruk slide.shapes().add_auto_shape() for å legge til en AutoShape. Parameterne er (shape_type, x, y, width, height) alle i punkter (1 punkt = 1/72 tomme; standard lysbilde er 720 × 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;
}Steg 6: Lagre presentasjonen
Kall prs.save(path, SaveFormat::PPTX) før Presentation går ut av omfang. PPTX er det eneste støttede utdataformatet.
prs.save("result.pptx", asf::SaveFormat::PPTX);Filen skrives atomisk; hvis en feil oppstår før dette kallet, opprettes ingen utdatafil.
Fullstendig fungerende eksempel
Følgende program oppretter en presentasjon med to lysbilder med en tittelform på det første lysbildet og en tabell på det andre.
#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::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;
}Vanlige problemer og løsninger
Segfault eller double-free ved ødeleggelse av Presentation
Du lagrer en referanse eller peker til et lysbilde eller en form etter at Presentation er blitt ødelagt. Alle referanser som returneres av slides(), shapes() osv. blir ugyldige når Presentation‑destruktøren kjøres. Hold Presentation i live i hele perioden du bruker dens underobjekter.
SaveFormat::PPTX is not a function kompilatorfeil
SaveFormat::PPTX er en enum‑verdi, ikke en funksjon. Bruk den som prs.save("file.pptx", asf::SaveFormat::PPTX).
Linker-feil: udefinert referanse til Aspose::Slides::Foss::Presentation
Sørg for at CMakeLists.txt lenker mot biblioteket med target_link_libraries(my_app PRIVATE aspose_slides_foss).
Ofte stilte spørsmål
Hva er standard lysbildestørrelse?
En ny Presentation() lager lysbilder i standardstørrelsen 10 × 7,5 tommer (720 × 540 punkt). Å endre lysbildestørrelsen støttes ikke ennå i denne utgaven.
Kan jeg legge til mer enn ett lysbilde?
Ja. Kall prs.slides().add_empty_slide(&prs.layout_slides()[0]) for å legge til et tomt lysbilde og få tilgang til det ved indeks:
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
auto& slide2 = prs.slides()[1];Kan jeg åpne en eksisterende fil og legge til lysbilder?
Ja:
asf::Presentation prs("existing.pptx");
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
prs.save("existing.pptx", asf::SaveFormat::PPTX);Hvilke formater kan jeg lagre til?
Kun SaveFormat::PPTX støttes. Eksport til PDF, HTML, SVG eller bilder er ikke tilgjengelig i denne utgaven.