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";Podporovaný formát uložení
| Format | Enum Value | Supported |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat::PPTX | Yes |
| N/A | No | |
| HTML | N/A | No |
| SVG | N/A | No |
| PNG / JPEG | N/A | No |
| ODP (OpenDocument) | N/A | No |
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