C++ में प्रस्तुतियाँ कैसे बनाएं
Aspose.Slides FOSS for C++ आपको पूरी तरह से C++ में PowerPoint प्रस्तुतियाँ बनाने की अनुमति देता है, बिना 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 × 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;
}सामान्य समस्याएँ और समाधान
सेगफॉल्ट या डबल‑फ्री 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, या छवियों में निर्यात उपलब्ध नहीं है।