Kā ielādēt prezentācijas C++
Aspose.Slides FOSS for C++ ļauj atvērt jebkuru .pptx failu, pārbaudīt tā saturu un vai nu saglabāt to atpakaļ kā PPTX, vai izvilkt no tā datus. Šis ceļvedis aptver faila atvēršanu, slaidu iterēšanu, formu teksta nolasīšanu un saglabāšanas apgrieztu procesu.
Rokasgrāmata soli pa solim
Solis 1: Bibliotēkas būvēšana un saistīšana
git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .2. solis: Atvērt esošu prezentāciju
Pārsūtiet faila ceļu uz Presentation konstruktoru. Destruktors veic tīrīšanu.
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs("input.pptx");
std::cout << "Slide count: " << prs.slides().size() << "\n";
prs.save("output.pptx", asf::SaveFormat::PPTX);
return 0;
}Nezināmas XML daļas avota failā tiek saglabātas burtiski: bibliotēka nekad neizņem saturu, ko tā vēl nesaprot.
Solis 3: Pārbaudīt slaidus
Iterējiet visus slaidus un izdrukājiet to formu skaitu:
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs("deck.pptx");
for (size_t i = 0; i < prs.slides().size(); ++i) {
auto& slide = prs.slides()[i];
std::cout << "Slide " << i << ": "
<< slide.shapes().size() << " shapes\n";
}
return 0;
}4. solis: Nolasīt formas tekstu
Iterējiet pār formām un nolasiet tekstu no formām, kurām ir TextFrame:
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs("deck.pptx");
for (size_t i = 0; i < prs.slides().size(); ++i) {
auto& slide = prs.slides()[i];
for (size_t j = 0; j < slide.shapes().size(); ++j) {
auto& shape = slide.shapes()[j];
if (shape.has_text_frame()) {
auto text = shape.text_frame()->text();
if (!text.empty()) {
std::cout << " Shape text: " << text << "\n";
}
}
}
}
return 0;
}5. solis: Dokumenta īpašību nolasīšana
Piekļūt galvenajām dokumenta īpašībām no prs.document_properties():
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs("deck.pptx");
auto& props = prs.document_properties();
std::cout << "Title: " << props.title() << "\n";
std::cout << "Author: " << props.author() << "\n";
std::cout << "Subject: " << props.subject() << "\n";
return 0;
}6. solis: Apgrieztais saglabāšana
Pēc prezentācijas pārbaudes vai modificēšanas saglabājiet to atpakaļ kā PPTX:
prs.save("output.pptx", asf::SaveFormat::PPTX);Saglabājot citā ceļā, tiek izveidots jauns fails. Saglabājot tajā pašā ceļā, tiek pārrakstīts oriģināls.
Biežas problēmas un risinājumi
Fails nav atrasts vai to nevar atvērt
Pārbaudiet, vai ceļš uz .pptx failu ir pareizs attiecībā uz darba direktoriju. Izmantojiet std::filesystem::path, lai izveidotu stabilu ceļu:
#include <filesystem>
auto path = std::filesystem::path(__FILE__).parent_path() / "assets" / "deck.pptx";
asf::Presentation prs(path.string());Izņēmums: Faila formāts nav atbalstīts
Bibliotēka atbalsta tikai .pptx (Office Open XML). Vecākas .ppt (binārie PowerPoint 97‑2003) faili netiek atbalstīti.
Shape nav text_frame
Dažām formām (Connectors, PictureFrames, GroupShapes) nav teksta rāmja. Pirms piekļuves tekstam, pārbaudiet ar shape.has_text_frame().
Biežāk uzdotie jautājumi
Vai ielāde saglabā visu oriģinālo saturu?
Jā. Nezināmās XML daļas tiek saglabātas burtiski apgrieztā saglabāšanas procesā. Bibliotēka tikai serializē dokumenta modeļa daļas, kuras tā saprot, un caurplūst jebkuru XML, ko tā neatpazīst.
Vai es varu ielādēt ar paroli aizsargātu PPTX?
Paroles aizsargātas (šifrētas) prezentācijas šajā izdevumā netiek atbalstītas.
Vai es varu izvilkt iegultus attēlus?
Piekļūstiet attēlu kolekcijai: prs.images() atgriež ImageCollection. Katram attēlam ir width(), height() un binary_data() metode, lai nolasītu neapstrādātos attēla datus.
Vai ielāde no atmiņas bufera tiek atbalstīta?
Iekraušana no std::vector<uint8_t> vai std::istream nav pieejama pašreizējā API. Vispirms ierakstiet baitus pagaidu failā, pēc tam nododiet ceļu uz Presentation konstruktoru.