Hvordan lagre presentasjoner i C++

Hvordan lagre presentasjoner i C++

Aspose.Slides FOSS for C++ saves presentations exclusively to .pptx format ved bruk av prs.save(path, SaveFormat::PPTX). Denne guiden dekker riktig lagringsmønster, lagring til en annen sti, og vanlige lagringsrelaterte feil.

Steg-for-steg guide

Steg 1: Bygg og lenk 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 .

Steg 2: Åpne eller opprett en presentasjon

Bruk stakkallokering slik at destruktøren rydder opp automatisk. Kall save() før objektet går ut av omfanget.

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

Steg 3: Lagre etter alle endringer

Plasser save() kallet etter at alle endringer er fullført, men før Presentation går ut av omfanget.

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

Steg 4: Lagre til en annen sti

Oppgi en annen utdata-sti for å opprette en ny fil uten å endre originalen:

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

Den template.pptx filen er ikke endret; customized.pptx opprettes (eller overskrives hvis den allerede finnes).


Steg 5: Verifiser resultatet

Etter lagringen, sjekk at filen finnes:

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

Støttet lagringsformat

FormatEnum-verdiStøttet
PPTX (Office Open XML)SaveFormat::PPTXJa
PDFN/ANei
HTMLN/ANei
SVGN/ANei
PNG / JPEGN/ANei
ODP (OpenDocument)N/ANei

Kun PPTX støttes. Forsøk på å lagre i et annet format vil kaste et unntak.


Vanlige problemer og løsninger

Tillatelse nektet-feil ved skriving

Utdatafilen er åpen i et annet program (f.eks. PowerPoint har filen åpen). Lukk filen i andre programmer før du lagrer.

Filen opprettes, men ser tom eller korrupt ut

Sikre prs.save() kalles før Presentation objektet blir ødelagt. Etter ødeleggelse blir den interne tilstanden frigitt, og påfølgende kall vil mislykkes eller gi ugyldig output.

Unntak ved lagring

Dette skjer når du prøver å lagre i et annet format enn PPTX, eller når du bruker en ikke‑støttet funksjon (for eksempel diagrammer eller animasjoner) under lagring.


Ofte stilte spørsmål

Kan jeg lagre til samme fil som jeg åpnet?

Ja. Lagring til samme sti overskriver den opprinnelige filen:

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

Kan jeg lagre til en minnebuffert i stedet for en fil?

Lagring direkte til en std::vector<uint8_t> eller std::ostream er ikke støttet i den nåværende API-en. Lagre til en midlertidig fil og les bytesene:

#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 innholdet jeg ikke har endret?

Ja. Ukjente XML‑deler fra den opprinnelige filen beholdes ordrett. Biblioteket serialiserer kun de delene av dokumentmodellen det forstår, og sender gjennom all XML det ikke gjenkjenner.


Se også

 Norsk