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
| Formato | Enum Valor | Apoyado |
|---|---|---|
| PPTX (Office Open XML) y el formato de Office Open | SaveFormat::PPTX | Sí |
| N/A | No | |
| HTML | N/A | No |
| SVG | N/A | No |
| PNG / JPEG | N/A | No |
| El documento abierto (Open Document) | N/A | No |
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.