Kaip įkelti pristatymus C++

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.


Žr. taip pat

 Lietuvių