Cómo guardar presentaciones en C++

Cómo guardar presentaciones en C++

Aspose.Slides FOSS for C++ saves presentations exclusively to .pptx Formato de uso prs.save(path, SaveFormat::PPTX).Este guía cubre el patrón de ahorro correcto, ahorrar a un camino diferente y los errores comunes relacionados con ahorramiento.

Guía paso a paso

Paso 1: Construye y enlaza la biblioteca

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 .

Paso 2: Abrir o crear una presentación

Utilice la alocación de los estancos para que el destructor se limpie automáticamente. save() antes de que el objeto salga del alcance.

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

Paso 3: Salva después de todas las modificaciones

Pone el lugar save() que se aprueba después de que todas las modificaciones sean completas, pero antes de la Presentation Se sale de alcance.

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

Paso 4: Salva por un camino diferente

Pasar un camino de salida diferente para crear un nuevo archivo sin modificar el original:

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

El template.pptx El archivo no se modifica; customized.pptx Se creó (o se escribió sobre si ya existe).


Paso 5: Verifique la salida

Después de la recuperación, verifique el archivo existe:

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

Formato de salvamento compatible

FormatoEnum ValorApoyado
PPTX (Office Open XML) y el formato de Office OpenSaveFormat::PPTX
PDFN/ANo
HTMLN/ANo
SVGN/ANo
PNG / JPEGN/ANo
El documento abierto (Open Document)N/ANo

Solo PPTX se apoya. intentar salvar en cualquier otro formato será una excepción.


Problemas y soluciones comunes

Permiso negado error en escribir

El archivo de salida se abre en otra aplicación (por ejemplo, PowerPoint tiene el archivos abiertos).

El archivo se crea pero aparece vacío o corrupto.

Seguridad prs.save() Se llama antes de la Presentation Después de la destrucción, el estado interno se libera y las llamadas posteriores fallarán o producen una salida inadecuada.

Excepción cuando se ahorra

Esto ocurre cuando intenta un formato de almacenamiento diferente a PPTX, o cuando utiliza una función no soportada (como gráficos o animaciones) durante el tiempo de la almaceanza.


Preguntas frecuentes

¿Puedo guardar en el mismo archivo que abri?

Simplemente, el ahorro en la misma ruta supera el archivo original:

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

¿Puedo guardar en un buffer de memoria en lugar de un archivo?

Ahorro directamente a una std::vector<uint8_t> o std::ostream no está supportado en la API actual.Save a un archivo temporal y leer los bajos:

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

¿El almacenamiento conserva contenido que no he modificado?

Sí. partes XML desconocidas del archivo original se conservan verbatim. la biblioteca sólo serializan las partes del modelo de documento que entiende, y pasa a través de cualquier XML que no reconozca.


Ver también

 Español