Kaip įkelti pristatymus C++
Aspose.Slides FOSS for C++ lets you open any .pptx failą, patikrinkite jo turinį ir arba išsaugokite jį atgal į PPTX, arba išskirkite duomenis iš jo. Ši vadovas apima failo atidarymą, skaidrių peržiūrą, formų teksto skaitymą ir išsaugojimo grąžinimą.
Žingsnis po žingsnio vadovas
Step 1: Sukompiliuokite ir susiekite 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: Atverti esamą pristatymą
Perduokite failo kelią į Presentation konstruktorių. 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.
Žingsnis 3: 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 formų 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
Gaukite 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: Išsaugoti atgal
Po peržiūros arba modifikavimo, išsaugokite pristatymą atgal į PPTX:
prs.save("output.pptx", asf::SaveFormat::PPTX);Išsaugojimas į kitą kelią sukuria naują failą. Išsaugojimas į tą patį kelią perrašo originalą.
Dažnos problemos ir sprendimai
Failas nerastas arba nepavyko atverti
Patikrinkite, ar kelias iki .pptx failo yra teisingas, atsižvelgiant į darbinį katalogą. Naudokite std::filesystem::path patikimam 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 .pptx (Office Open XML) tik. Senesni .ppt (dvejetainiai PowerPoint 97-2003) failai nepalaikomi.
Shape neturi text_frame
Kai kurios formos (Connectors, PictureFrames, GroupShapes) neturi teksto rėmo. Apsaugokite su shape.has_text_frame() prieš pasiekiant tekstą.
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, o visas nepažįstamas XML tiesiog perduoda.
Ar galiu įkelti slaptažodžiu apsaugotą PPTX?
Slaptažodžiu apsaugoti (šifruoti) pristatymai šioje versijoje nepalaikomi.
Ar galiu išgauti įterptus vaizdus?
Gaukite vaizdų kolekciją: prs.images() grąžina ImageCollection. Kiekvienas vaizdas turi a width(), height(), ir binary_data() metodas skaityti neapdorotus vaizdo duomenis.
Ar įkėlimas iš atminties buferio palaikomas?
Įkeliama iš std::vector<uint8_t> arba std::istream nėra atskleista dabartinėje API. Pirmiausia įrašykite baitus į laikinąjį failą, tada perduokite kelią į Presentation konstruktorių.