Kaip įkelti pristatymus C++
Aspose.Slides FOSS for C++ leidžia atverti bet kokį .pptx failą, peržiūrėti jo turinį ir arba išsaugoti jį atgal į PPTX, arba išgauti duomenis iš jo. Ši vadovas apima failo atidarymą, skaidrių peržiūrą, formų teksto skaitymą ir round‑tripping išsaugojimą.
Žingsnis po žingsnio vadovas
Žingsnis 1: sukurti ir susieti biblioteką
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 .Žingsnis 2: Atidaryti esamą pristatymą
Perduokite failo kelią Presentation konstruktoriui. Destruktorius tvarko išvalymą.
#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;
}Nežinomos XML dalys šaltinio faile išsaugomos nepakitusiomis: biblioteka niekada nepašalina turinio, kurio dar nesupranta.
3 žingsnis: Peržiūrėti skaidres
Iteruokite per visas skaidres ir išveskite jų formų skaičių:
#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;
}Žingsnis 4: Skaityti formos tekstą
Iteruokite per formas ir skaitykite tekstą iš formų, kurios turi 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;
}Žingsnis 5: Skaityti dokumento savybes
Pasiekite pagrindines dokumento savybes iš 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;
}Žingsnis 6: Apvalaus kelio išsaugojimas
Patikrinus arba modifikuojant prezentaciją, išsaugokite ją atgal į PPTX:
prs.save("output.pptx", asf::SaveFormat::PPTX);Išsaugant į kitą kelią sukuriamas naujas failas. Išsaugant į tą patį kelią originalas perrašomas.
Dažnos problemos ir sprendimai
Failas nerastas arba negalima atverti
Patikrinkite, ar kelias į .pptx failą yra teisingas, atsižvelgiant į darbinį katalogą. Naudokite std::filesystem::path patikimesniam kelio konstruavimui:
#include <filesystem>
auto path = std::filesystem::path(__FILE__).parent_path() / "assets" / "deck.pptx";
asf::Presentation prs(path.string());Išimtis: failo formatas nepalaikomas
Biblioteka palaiko tik .pptx (Office Open XML). Senesni .ppt (binary PowerPoint 97-2003) failai nepalaikomi.
Shape neturi text_frame
Kai kurie formos (Connectors, PictureFrames, GroupShapes) neturi teksto rėmo. Prieš prieigą prie teksto naudokite apsaugą shape.has_text_frame().
Dažnai užduodami klausimai
Ar įkėlimas išsaugo visą originalų turinį?
Taip. Nežinomos XML dalys išsaugomos nepakitusiomis atliekant dvigubą išsaugojimą. Biblioteka serializuoja tik tas dokumento modelio dalis, kurias supranta, ir praleidžia bet kokią XML, kurios nesupranta.
Ar galiu įkelti slaptažodžiu apsaugotą PPTX?
Slaptažodžiu apsaugoti (užšifruoti) pristatymai šioje versijoje nepalaikomi.
Ar galiu išgauti įterptus vaizdus?
Pasiekite vaizdų kolekciją: prs.images() grąžina ImageCollection. Kiekvienas vaizdas turi width(), height() ir binary_data() metodą, skirtą nuskaityti neapdorotus vaizdo duomenis.
Ar įkėlimas iš atminties buferio palaikomas?
Įkėlimas iš std::vector<uint8_t> arba std::istream nėra prieinamas dabartinėje API. Pirma įrašykite baitus į laikinąjį failą, tada perduokite kelią Presentation konstruktoriui.