Hvordan gemmer man præsentationer i C++

Hvordan gemmer man præsentationer i C++

Aspose.Slides FOSS for C++ saves presentations exclusively to .pptx format ved brug af prs.save(path, SaveFormat::PPTX). Denne vejledning dækker det korrekte gemmemønster, gemning til en anden sti og almindelige fejl relateret til gemning.

Trin-for-trin guide

Trin 1: Byg og link biblioteket

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 .

Trin 2: Åbn eller opret en præsentation

Brug stakallokering så destruktøren rydder op automatisk. Kald save() før objektet går ud af scope.

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

Trin 3: Gem efter alle ændringer

Placér save() kald efter at alle ændringer er fuldført, men før Presentation går ud af scope.

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

Trin 4: Gem til en anden sti

Angiv en anden outputsti for at oprette en ny fil uden at ændre den oprindelige:

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

Den template.pptx filen er ikke ændret; customized.pptx oprettes (eller overskrives, hvis den allerede findes).


Trin 5: Verificér outputtet

Efter gemningen, tjek at filen findes:

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

Understøttet gemmeformat

FormatEnum-værdiUnderstøttet
PPTX (Office Open XML)SaveFormat::PPTXJa
PDFN/ANej
HTMLN/ANej
SVGN/ANej
PNG / JPEGN/ANej
ODP (OpenDocument)N/ANej

Kun PPTX understøttes. Forsøg på at gemme i et andet format vil kaste en undtagelse.


Almindelige problemer og løsninger

Fejl: Tilladelse nægtet ved skrivning

Outputfilen er åben i en anden applikation (f.eks. har PowerPoint filen åben). Luk filen i andre programmer før du gemmer.

Filen oprettes, men fremstår som tom eller korrupt

Sørg for prs.save() kaldes før Presentation objektet er destrueret. Efter destruktion frigives den interne tilstand, og efterfølgende kald vil fejle eller producere ugyldigt output.

Undtagelse ved lagring

Dette sker, når der forsøges at gemme i et andet format end PPTX, eller når en ikke‑understøttet funktion (såsom diagrammer eller animationer) anvendes under lagring.


Ofte stillede spørgsmål

Kan jeg gemme til den samme fil, som jeg åbnede?

Ja. Gemning til den samme sti overskriver den oprindelige fil:

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

Kan jeg gemme til en hukommelsesbuffer i stedet for en fil?

Gemmer direkte til en std::vector<uint8_t> eller std::ostream understøttes ikke i den nuværende API. Gem til en midlertidig fil og læs bytes:

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

Bevarer lagring indhold, jeg ikke har ændret?

Ja. Ukendte XML‑dele fra den oprindelige fil bevares ordret. Biblioteket serialiserer kun de dele af dokumentmodellen, det forstår, og videregiver al XML, det ikke genkender.


Se også

 Dansk