Kuinka ladata esityksiä C++:ssa

Kuinka ladata esityksiä C++:ssa

Aspose.Slides FOSS for C++ antaa sinun avata minkä tahansa .pptx -tiedoston, tarkastella sen sisältöä ja joko tallentaa sen takaisin PPTX-muotoon tai poimia siitä tietoja. Tämä opas kattaa tiedoston avaamisen, diojen läpikäymisen, muodon tekstin lukemisen ja tallennuksen pyöräytyksen.

Vaiheittainen opas

Vaihe 1: Rakenna ja linkitä kirjasto

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 .

Vaihe 2: Avaa olemassa oleva esitys

Välitä tiedostopolku Presentation-konstruktorille. Purkaja hoitaa siivouksen.

#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;
}

Tuntemattomat XML-osat lähdetiedostossa säilytetään tarkasti sellaisenaan: kirjasto ei koskaan poista sisältöä, jota se ei vielä ymmärrä.


Vaihe 3: Tarkista diat

Iteroi kaikkien diojen läpi ja tulosta niiden muotojen lukumäärä:

#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;
}

Vaihe 4: Lue muodon teksti

Käy läpi muodot ja lue teksti muodoista, joilla on 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;
}

Vaihe 5: Lue asiakirjan ominaisuudet

Pääse käsiksi asiakirjan ydinasetuksiin kohteesta 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;
}

Vaihe 6: Kierroksen tallennus

Kun olet tarkastanut tai muokannut esitystä, tallenna se takaisin PPTX-muotoon:

prs.save("output.pptx", asf::SaveFormat::PPTX);

Tallentaminen eri polkuun luo uuden tiedoston. Tallentaminen samaan polkuun korvaa alkuperäisen.


Yleiset ongelmat ja korjaukset

Tiedostoa ei löydy tai sitä ei voida avata

Tarkista, että .pptx-tiedoston polku on oikea suhteessa työhakemistoon. Käytä std::filesystem::path-menetelmää luotettavan polun muodostamiseen:

#include <filesystem>
auto path = std::filesystem::path(__FILE__).parent_path() / "assets" / "deck.pptx";
asf::Presentation prs(path.string());

Poikkeus: Tiedostomuoto ei ole tuettu

Kirjasto tukee vain .pptx (Office Open XML). Vanhoja .ppt (binäärisiä PowerPoint 97‑2003) tiedostoja ei tueta.

Shape ei sisällä text_frame

Jotkut muodot (Connectors, PictureFrames, GroupShapes) eivät sisällä tekstikehystä. Suojaa shape.has_text_frame() ennen tekstin käyttämistä.


Usein kysytyt kysymykset

Säilyttääkö lataus kaiken alkuperäisen sisällön?

Kyllä. Tuntemattomat XML-osat säilytetään kirjaimellisesti pyöräytyssäästössä. Kirjasto sarjoittaa vain ne osat asiakirjamallista, jotka se ymmärtää, ja läpäisee kaikki XML:t, joita se ei tunnista.

Voinko ladata salasanasuojatun PPTX:n?

Salasanalla suojattuja (salattuja) esityksiä ei tueta tässä versiossa.

Voinko poimia upotetut kuvat?

Käytä kuvakokoelmaa: prs.images() palauttaa ImageCollection. Jokaisella kuvalla on width()-, height()- ja binary_data()-menetelmät raakan kuvatiedon lukemiseen.

Tukeeko muistissa olevan puskurin lataamista?

Lataaminen std::vector<uint8_t>:stä tai std::istream:stä ei ole käytettävissä nykyisessä API:ssa. Kirjoita tavut ensin väliaikaistiedostoon ja anna sitten polku Presentation-konstruktorille.


Katso myös

 Suomi