כיצד ליצור מצגות ב‑C++
Aspose.Slides FOSS for C++ מאפשר לך ליצור מצגות PowerPoint לחלוטין ב‑C++ ללא תלות ב‑Microsoft Office. מדריך זה מציג כיצד ליצור מצגת חדשה, להוסיף שקופיות וצורות, לעצב טקסט ולשמור את התוצאה.
מדריך שלב אחר שלב
שלב 1: הוסף את הספרייה לפרויקט CMake שלך
השתמש ב‑CMake FetchContent כדי לשלב את הספרייה ישירות מ‑GitHub. נדרש C++20 או גרסה מאוחרת יותר.
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)אין צורך בחבילות מערכת נוספות.
שלב 2: כלול את הכותרות הנדרשות
#include <Aspose/Slides/Foss/presentation.h>כל הסוגים נמצאים במרחב השמות Aspose::Slides::Foss. לצורך קיצור, הדוגמאות למטה משתמשות בכינוי למרחב השמות:
namespace asf = Aspose::Slides::Foss;שלב 3: צור מצגת
בנה Presentation בערימה. מצגת חדשה מתחילה עם שקף ריק אחד.
#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;
}חשוב: השתמש בהקצאת מחסנית או std::unique_ptr כך שההורס ישחרר משאבים פנימיים באופן אוטומטי.
שלב 4: גישה לשקופית
השקף הראשון נמצא באינדקס 0. מצגת ריקה מכילה בדיוק שקף אחד.
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0]; // zero-based index
prs.save("output.pptx", asf::SaveFormat::PPTX);שלב 5: הוסף צורה
השתמש בslide.shapes().add_auto_shape() כדי להוסיף AutoShape. הפרמטרים הם (shape_type, x, y, width, height) כולם בנקודות (1 נקודה = 1/72 אינץ’; שקופית סטנדרטית היא 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: שמירת המצגת
הקרא prs.save(path, SaveFormat::PPTX) לפני שהPresentation יוצא מהטווח. PPTX הוא פורמט הפלט היחיד הנתמך.
prs.save("result.pptx", asf::SaveFormat::PPTX);הקובץ נכתב באופן אטומי; אם מתרחשת שגיאה לפני קריאה זו, לא נוצר קובץ פלט.
דוגמה עובדת מלאה
התוכנית הבאה יוצרת מצגת של שני שקפים עם צורת כותרת על השקף הראשון וטבלה על השקף השני.
#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;
}בעיות נפוצות ותיקונים
Segfault או double-free בזמן השמדת Presentation
אתה מאחסן הפנייה או מצביע לשקף או לצורה לאחר שה‑Presentation הושמד. כל ההפניות שמוחזרות על‑ידי slides(), shapes() וכו’ מתבטלות כאשר המפענח של Presentation פועל. שמור על Presentation בחיים לכל משך הזמן שבו אתה משתמש באובייקטים הצאצאים שלו.
SaveFormat::PPTX is not a function שגיאת מהדר
SaveFormat::PPTX הוא ערך enum, לא פונקציה. השתמש בו כprs.save("file.pptx", asf::SaveFormat::PPTX).
שגיאת מקשר: הפניה לא מוגדרת לAspose::Slides::Foss::Presentation
ודא שהCMakeLists.txt שלך מקשר נגד הספרייה עם target_link_libraries(my_app PRIVATE aspose_slides_foss).
שאלות נפוצות
מהו גודל השקופית המוגדר כברירת מחדל?
גרסה חדשה של Presentation() יוצרת שקופיות בגודל הסטנדרטי של 10 × 7.5 אינץ’ (720 × 540 נקודות). שינוי גודל השקופית עדיין אינו נתמך בגרסה זו.
האם אני יכול להוסיף יותר משקף אחד?
כן. קרא prs.slides().add_empty_slide(&prs.layout_slides()[0]) כדי לצרף שקף ריק ולגשת אליו לפי אינדקס:
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
auto& slide2 = prs.slides()[1];האם אני יכול לפתוח קובץ קיים ולהוסיף שקופיות?
כן:
asf::Presentation prs("existing.pptx");
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
prs.save("existing.pptx", asf::SaveFormat::PPTX);לאילו פורמטים אני יכול לשמור?
רק SaveFormat::PPTX נתמך. ייצוא ל‑PDF, HTML, SVG או תמונות אינו זמין בגרסה זו.