Kako kreirati prezentacije u C++
Aspose.Slides FOSS for C++ omogućuje vam stvaranje PowerPoint prezentacija u potpunosti u C++ bez ovisnosti o Microsoft Officeu. Ovaj vodič pokazuje kako stvoriti novu prezentaciju, dodati slajdove i oblike, formatirati tekst i spremiti rezultat.
Vodič korak po korak
Korak 1: Dodajte biblioteku u svoj CMake projekt
Koristite CMake FetchContent za izravno integriranje biblioteke s GitHub‑a. Potreban je C++20 ili noviji.
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)Nisu potrebni drugi sustavni paketi.
Korak 2: Uključite potrebne zaglavlja
#include <Aspose/Slides/Foss/presentation.h>Svi tipovi nalaze se u prostoru imena Aspose::Slides::Foss. Radi sažetosti, primjeri u nastavku koriste alias prostora imena:
namespace asf = Aspose::Slides::Foss;Korak 3: Stvori prezentaciju
Izradite Presentation na steku. Nova prezentacija započinje s jednim praznim slajdom.
#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;
}Važno: Koristite alokaciju na stogu ili std::unique_ptr tako da destruktor automatski oslobodi interne resurse.
Korak 4: Pristup slajdu
Prvi slajd je na indeksu 0. Prazna prezentacija ima točno jedan slajd.
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0]; // zero-based index
prs.save("output.pptx", asf::SaveFormat::PPTX);Korak 5: Dodaj oblik
Koristite slide.shapes().add_auto_shape() za dodavanje AutoShape‑a. Parametri su (shape_type, x, y, width, height), svi u točkama (1 točka = 1/72 inča; standardni slajd je 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;
}Korak 6: Spremi prezentaciju
Pozovite prs.save(path, SaveFormat::PPTX) prije nego što Presentation izađe iz opsega. PPTX je jedini podržani izlazni format.
prs.save("result.pptx", asf::SaveFormat::PPTX);Datoteka se zapisuje atomarno; ako dođe do pogreške prije ovog poziva, ne stvara se izlazna datoteka.
Potpuni radni primjer
Sljedeći program stvara prezentaciju od dva slajda s naslovnim oblikom na prvom slajdu i tablicom na drugom.
#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;
}Uobičajeni problemi i rješenja
Segfault ili double-free pri uništavanju Presentation
Pohranjujete referencu ili pokazivač na slajd ili oblik nakon što je Presentation uništen. Sve reference koje vraća slides(), shapes(), itd. poništavaju se kada se izvrši destruktor Presentation. Držite Presentation aktivnim tijekom cijelog trajanja dok koristite njegove podobjekte.
SaveFormat::PPTX is not a function greška kompajlera
SaveFormat::PPTX je vrijednost enumeracije, a ne funkcija. Koristite ga kao prs.save("file.pptx", asf::SaveFormat::PPTX).
Greška povezivača: nedefinirana referenca na Aspose::Slides::Foss::Presentation
Osigurajte da vaš CMakeLists.txt poveže s bibliotekom pomoću target_link_libraries(my_app PRIVATE aspose_slides_foss).
Često postavljana pitanja
Koja je zadana veličina slajda?
Novi Presentation() stvara slajdove u standardnoj veličini od 10 × 7,5 inča (720 × 540 točaka). Promjena veličine slajda još nije podržana u ovom izdanju.
Mogu li dodati više od jednog slajda?
Da. Pozovite prs.slides().add_empty_slide(&prs.layout_slides()[0]) da biste dodali prazan slajd i pristupili mu po indeksu:
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
auto& slide2 = prs.slides()[1];Mogu li otvoriti postojeću datoteku i dodati slajdove?
Da:
asf::Presentation prs("existing.pptx");
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
prs.save("existing.pptx", asf::SaveFormat::PPTX);U koje formate mogu spremiti?
Podržan je samo SaveFormat::PPTX. Izvoz u PDF, HTML, SVG ili slike nije dostupan u ovom izdanju.