Kā ielādēt prezentācijas C++

Kā ielādēt prezentācijas C++

Aspose.Slides FOSS for C++ lets you open any .pptx fails, pārbaudiet tā saturu un vai nu saglabājiet to atpakaļ PPTX formātā, vai arī izvelciet no tā datus. Šis ceļvedis aptver faila atvēršanu, slaidu iterāciju, formas teksta nolasīšanu un saglabāšanas atgriešanu.

Solī pa solim rokasgrāmata

1. solis: Veidot un sasaistīt bibliotēku

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 .

2. solis: Atvērt esošu prezentāciju

Pārsūtiet faila ceļu uz Presentation konstruktora. Destruktors veic tīrīšanu.

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

Nezināmās XML daļas avota failā tiek saglabātas burtiski: bibliotēka nekad neizņem saturu, ko tā vēl nesaprot.


3. solis: Pārbaudīt slaidus

Iterējiet pār visiem slaidiem un izdrukājiet to formu skaitu:

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

4. solis: Nolasīt formas tekstu

Iterējiet pār formām un nolasiet tekstu no formām, kurām ir 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;
}

5. solis: Nolasīt dokumenta īpašības

Piekļūstiet galvenajām dokumenta īpašībām no 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;
}

6. solis: Apgrieztais saglabāšana

Pēc prezentācijas pārbaudes vai modificēšanas, saglabājiet to atpakaļ PPTX formātā:

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

Saglabāšana citā ceļā izveido jaunu failu. Saglabāšana tajā pašā ceļā pārraksta oriģinālu.


Biežāk sastopamās problēmas un to risinājumi

Fails nav atrasts vai to nevar atvērt

Pārbaudiet, ka ceļš uz .pptx fails ir pareizs attiecībā pret darba direktoriju. Izmantojiet std::filesystem::path robustai ceļa konstruēšanai:

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

Izņēmums: Faila formāts nav atbalstīts

Bibliotēka atbalsta .pptx (Office Open XML) tikai. Legacy .ppt (binārie PowerPoint 97-2003) faili netiek atbalstīti.

Forma nav text_frame

Dažām formām (Connectors, PictureFrames, GroupShapes) nav teksta rāmja. Aizsargājiet ar shape.has_text_frame() pirms piekļūt tekstam.


Biežāk uzdotie jautājumi

Vai ielāde saglabā visu sākotnējo saturu?

Jā. Nezināmās XML daļas tiek saglabātas precīzi apgrieztā saglabāšanas procesā. Bibliotēka serializē tikai tās dokumenta modeļa daļas, kuras saprot, un caurļauj jebkuru XML, ko neatpazīst.

Vai varu ielādēt ar paroli aizsargātu PPTX?

Paroli aizsargātas (šifrētas) prezentācijas šajā izdevumā netiek atbalstītas.

Vai varu izvilkt iegultus attēlus?

Piekļūstiet attēlu kolekcijai: prs.images() atgriež ImageCollection. Katram attēlam ir width(), height(), un binary_data() metodi, lai nolasītu neapstrādātos attēla datus.

Vai ielāde no atmiņas bufera tiek atbalstīta?

Ielāde no std::vector<uint8_t> vai std::istream nav pieejams pašreizējā API. Vispirms ierakstiet baitus pagaidu failā, pēc tam nododiet ceļu uz Presentation konstruktora.


Skatīt arī

 Latviešu