Kā izveidot prezentācijas C++ valodā
Aspose.Slides FOSS for C++ ļauj izveidot PowerPoint prezentācijas pilnīgi C++ valodā, neizmantojot Microsoft Office. Šis ceļvedis parāda, kā izveidot jaunu prezentāciju, pievienot slaidus un formas, formatēt tekstu un saglabāt rezultātu.
Rokasgrāmata soli pa solim
1. solis: Pievienojiet bibliotēku savam CMake projektam
Izmantojiet CMake FetchContent, lai integrētu bibliotēku tieši no GitHub. Nepieciešams C++20 vai jaunāks.
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)Nav vajadzīgas citas sistēmas pakotnes.
2. solis: Iekļaut nepieciešamās galvenes
#include <Aspose/Slides/Foss/presentation.h>Visi tipi atrodas Aspose::Slides::Foss vārdtelpā. Īsāk, zemāk esošajos piemēros tiek izmantots vārdtelpas alias:
namespace asf = Aspose::Slides::Foss;3. solis: Izveidot prezentāciju
Izveidojiet Presentation stekā. Jauna prezentācija sākas ar vienu tukšu slaidu.
#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;
}Svarīgi: Izmantojiet steka piešķiršanu vai std::unique_ptr, lai destruktors automātiski atbrīvotu iekšējos resursus.
4. solis: Piekļūt slaidam
Pirmais slaids ir indeksā 0. Tukšā prezentācija satur tieši vienu slaidu.
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0]; // zero-based index
prs.save("output.pptx", asf::SaveFormat::PPTX);5. solis: Pievienot formu
Izmantojiet slide.shapes().add_auto_shape(), lai pievienotu AutoShape. Parametri ir (shape_type, x, y, width, height), visi ir punktos (1 punkts = 1/72 collas; standarta slaids ir 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;
}6. solis: saglabāt prezentāciju
Izsauciet prs.save(path, SaveFormat::PPTX) pirms Presentation iziet no tvēruma. PPTX ir vienīgais atbalstītais izvades formāts.
prs.save("result.pptx", asf::SaveFormat::PPTX);Fails tiek rakstīts atomiski; ja kļūda notiek pirms šī izsaukuma, netiek izveidots neviens izvades fails.
Pilns darbos piemērs
Šī programma izveido divu slaidu prezentāciju, kurā pirmajā slaidā ir virsraksta forma, bet otrajā – tabula.
#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;
}Vispārējās problēmas un risinājumi
Segfault vai double-free pie Presentation iznīcināšanas
Jūs glabājat atsauci vai rādītāju uz slaidu vai formu pēc tam, kad Presentation ir iznīcināts. Visas atsauces, ko atgriež slides(), shapes() utt., tiek anulētas, kad tiek izpildīts Presentation destruktors. Turiet Presentation dzīvu visu laiku, kamēr izmantojat tā bērnu objektus.
SaveFormat::PPTX is not a function kompilatora kļūda
SaveFormat::PPTX ir enum vērtība, nevis funkcija. Izmantojiet to kā prs.save("file.pptx", asf::SaveFormat::PPTX).
Saistītāja kļūda: nenoteikta atsauce uz Aspose::Slides::Foss::Presentation
Pārliecinieties, ka jūsu CMakeLists.txt ir saistīti ar bibliotēku, izmantojot target_link_libraries(my_app PRIVATE aspose_slides_foss).
Biežāk uzdotie jautājumi
Kāda ir noklusējuma slaida izmērs?
Jauns Presentation() izveido slaidus standarta 10 x 7,5 collas (720 x 540 punktu) izmērā. Slaidu izmēra mainīšana šajā izdevumā vēl nav atbalstīta.
Vai es varu pievienot vairāk nekā vienu slaidu?
Jā. Izsauciet prs.slides().add_empty_slide(&prs.layout_slides()[0]), lai pievienotu tukšu slaidu un piekļūtu tam pēc indeksa:
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
auto& slide2 = prs.slides()[1];Vai varu atvērt esošu failu un pievienot slaidus?
Jā:
asf::Presentation prs("existing.pptx");
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
prs.save("existing.pptx", asf::SaveFormat::PPTX);Kādus formātus varu saglabāt?
Tikai SaveFormat::PPTX ir atbalstīts. Eksportēšana uz PDF, HTML, SVG vai attēliem nav pieejama šajā izdevumā.