Jak uložit prezentace v C++

Jak uložit prezentace v C++

Aspose.Slides FOSS pro C++ ukládá prezentace výhradně do formátu .pptx pomocí ⌒prs.save(path, SaveFormat::PPTX)` . Tato příručka pokrývá správný vzor ukladaní, ukládaní na jinou cestu a běžné chyby související s uklazením.

Krok za krokem

Vypadá to jako…

Krok 1: Vytvořte a propojte knihovnu

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: Otevřít nebo vytvořit prezentaci

Použijte přidělení stacků, aby se destruktor automaticky vyčistil. Zavolejte save() dříve než objekt odejde z rozsahu.

#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žení po všech úpravách

Po dokončení všech změn, ale před tím než `Předložení ̋ vyjde z rozsahu působnosti, se použije volba ∂save () ̨.

#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žit jinou cestu

Pro vytvoření nového souboru bez úpravy originálu přejděte jinou výstupní cestu:

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

Soubor template.pptx není upraven; je vytvořen (nebo přepsán, pokud již existuje).


Krok 5: Ověřte výsledek

Po uložení zkontrolujte, zda soubor 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";
Vypadá to jako...

Podporovaný formát uložení

FormatEnum ValueSupported
PPTX (Office Open XML)SaveFormat::PPTXYes
PDFN/ANo
HTMLN/ANo
SVGN/ANo
PNG / JPEGN/ANo
ODP (OpenDocument)N/ANo

Podporuje se pouze PPTX. Pokoušení uložit v jakémkoli jiném formátu bude vyvolat výjimku.


Obvyklé problémy a řešení

Přípustka zamítnuta, chyba při psaní.

Výstupní soubor je otevřen v jiné aplikaci (např. PowerPoint má soubory otevřené). Před uložením uzavřete souboru v jiných aplikacích.

Soubor byl vytvořen, ale je prázdný nebo poškozený .

Zajištění, aby byl `prs.save()ヽ volán dříve než je objekt Presentation⌒ zničen. Po ničení se uvolní vnitřní stav a následné volání selžou nebo vyvolají neplatný výstup.

Výjimka při šetření

To se děje při pokusu o ukládání jiného formátu než PPTX nebo při používání nepodporované funkce (např. grafy nebo animace) během ukázky.


Časté otázky

Můžu si uložit ten samý soubor, co jsem otevřel?

Uložení stejné cesty přepíše originální soubor:

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

Můžu si ho uložit do paměťového bufera místo souboru?

Uložení přímo do std::vector<uint8_t> nebo ⌒std::ostream` není v současném API podporováno. Uložit do dočasného souboru a přečíst 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);

Zachovává uložení obsah, který jsem nezměnil?

Ano. Neznámé části XML z originálního souboru jsou doslova uchovávány. Knihovna sériově sestavuje pouze ty části dokumentu, které chápe a prochází všemi částmi XML, která nepozná.


Viz také:

  • Jak vytvořit prezentace v C++
  • Jak načítat prezentace v C++
  • Přehled funkcí
  • Odkaz na API
 Čeština