Kaip įkelti pristatymus C++

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ų.


Žr. taip pat

 Lietuvių