Kuinka ladata esityksiä C++:ssa

Kuinka ladata esityksiä C++:ssa

Aspose.Slides FOSS for C++ lets you open any .pptx tiedosto, tarkastele sen sisältöä ja joko tallenna se takaisin PPTX-muotoon tai pura siitä dataa. Tämä opas kattaa tiedoston avaamisen, diojen läpikäymisen, muotojen 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

Anna tiedostopolku Presentation konstruktori. Destruktori 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 tarkalleen sellaisina: kirjasto ei koskaan poista sisältöä, jota se ei vielä ymmärrä.


Vaihe 3: Tarkastele dioja

Käy läpi kaikki diat ja tulosta niiden muotojen mää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 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: Tallenna kierrätyksenä

Kun olet tarkastellut 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.


Yleisiä ongelmia ja korjauksia

Tiedostoa ei löydy tai sitä ei voida avata

Tarkista, että polku .pptx tiedostoon on oikea suhteessa työhakemistoon. Käytä std::filesystem::path luotettavaa polunrakennusta varten:

#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 .pptx (Office Open XML) vain. Perinteiset .ppt (binääri PowerPoint 97-2003) -tiedostoja ei tueta.

Kohteella ei ole text_framea

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


Usein kysytyt kysymykset

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

Kyllä. Tuntemattomat XML‑osat säilytetään tarkalleen sellaisina pyöräytysvaiheessa tallennettaessa. Kirjasto sarjoittaa vain ne osat asiakirjamallista, jotka se ymmärtää, ja läpäisee kaikki tunnistamattomat XML‑osat.

Voinko ladata salasanasuojatun PPTX‑tiedoston?

Salasanasuojattuja (salattuja) esityksiä ei tueta tässä versiossa.

Voinko poimia upotetut kuvat?

Pääse käsiksi kuvakokoelmaan: prs.images() palauttaa ImageCollection. Jokaisella kuvalla on width(), height(), ja binary_data() menetelmä lukea raaka kuvan dataa.

Onko lataus muistissa olevasta puskurista tuettu?

Lataus lähteestä std::vector<uint8_t> tai std::istream ei ole näkyvissä nykyisessä API:ssa. Kirjoita tavut ensin väliaikaistiedostoon, ja sitten anna polku Presentation konstruktorille.


Katso myös

 Suomi