Ako uložiť prezentácie v C++

Ako uložiť prezentácie v C++

Aspose.Slides FOSS for C++ saves presentations exclusively to .pptx formát pomocou prs.save(path, SaveFormat::PPTX). Tento sprievodca pokrýva správny vzor ukladania, ukladanie do inej cesty a bežné chyby súvisiace s ukladaním.

Postupný návod

Krok 1: Zostavte a prepojte knižnicu

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 .

Krok 2: Otvorte alebo vytvorte prezentáciu

Použite alokáciu na zásobníku, aby sa deštruktor automaticky uvoľnil. Zavolajte save() predtým, ako objekt opustí rozsah.

#include <Aspose/Slides/Foss/presentation.h>

int main() {
    namespace asf = Aspose::Slides::Foss;

    // Create new
    {
        asf::Presentation prs;
        prs.save("new.pptx", asf::SaveFormat::PPTX);
    }

    // Open existing
    {
        asf::Presentation prs("input.pptx");
        prs.save("output.pptx", asf::SaveFormat::PPTX);
    }

    return 0;
}

Krok 3: Uložte po všetkých úpravách

Umiestnite save() volanie po dokončení všetkých úprav, ale pred Presentation opustí rozsah.

#include <Aspose/Slides/Foss/presentation.h>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs;
    auto& slide = prs.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(
        asf::ShapeType::RECTANGLE, 50, 50, 300, 100);
    shape.text_frame()->set_text("Hello, World!");
    prs.save("output.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Krok 4: Uložte na inú cestu

Zadajte inú výstupnú cestu, aby ste vytvorili nový súbor bez úpravy originálu:

asf::Presentation prs("template.pptx");
// modify ...
prs.save("customized.pptx", asf::SaveFormat::PPTX);

Súbor template.pptx súbor nie je upravený; customized.pptx je vytvorený (alebo prepísaný, ak už existuje).


Krok 5: Overte výstup

Po uložení skontrolujte, či súbor existuje:

#include <filesystem>
#include <iostream>

auto output = std::filesystem::path("output.pptx");
std::cout << "Saved: " << std::filesystem::exists(output)
          << ", size: " << std::filesystem::file_size(output) << " bytes\n";

Podporovaný formát ukladania

FormátEnum hodnotaPodporované
PPTX (Office Open XML)SaveFormat::PPTXÁno
PDFN/ANie
HTMLN/ANie
SVGN/ANie
PNG / JPEGN/ANie
ODP (OpenDocument)N/ANie

Podporovaný je iba PPTX. Pokus o uloženie v akomkoľvek inom formáte vyvolá výnimku.


Bežné problémy a riešenia

Chyba odmietnutia prístupu pri zápise

Výstupný súbor je otvorený v inej aplikácii (napr. PowerPoint má súbor otvorený). Zavrite súbor v ostatných aplikáciách pred uložením.

Súbor je vytvorený, ale vyzerá prázdny alebo poškodený

Zabezpečte prs.save() sa volá pred Presentation objekt je zničený. Po zničení sa uvoľní vnútorný stav a následné volania zlyhajú alebo vygenerujú neplatný výstup.

Výnimka pri ukladaní

K tomu dochádza pri pokuse uložiť do formátu iného ako PPTX alebo pri použití nepodporovanej funkcie (napríklad grafov alebo animácií) počas ukladania.


Často kladené otázky

Môžem uložiť do toho istého súboru, ktorý som otvoril?

Áno. Uloženie do rovnakej cesty prepíše pôvodný súbor:

asf::Presentation prs("deck.pptx");
// modify ...
prs.save("deck.pptx", asf::SaveFormat::PPTX); // overwrites original

Môžem uložiť do pamäťového bufferu namiesto súboru?

Ukladanie priamo do std::vector<uint8_t> alebo std::ostream nie je podporované v aktuálnom API. Uložte do dočasného súboru a prečítajte bajty:

#include <filesystem>
#include <fstream>
#include <vector>

auto tmp = std::filesystem::temp_directory_path() / "temp.pptx";
prs.save(tmp.string(), asf::SaveFormat::PPTX);

std::ifstream in(tmp, std::ios::binary);
std::vector<uint8_t> bytes((std::istreambuf_iterator<char>(in)),
                            std::istreambuf_iterator<char>());
std::filesystem::remove(tmp);

Ukladanie zachová obsah, ktorý som nezmenil?

Áno. Neznáme XML časti z pôvodného súboru sú zachované presne tak, ako sú. Knižnica serializuje iba časti modelu dokumentu, ktoré rozumie, a ostatné XML, ktoré nepozná, jednoducho prechádza.


Pozri tiež

 Slovenčina