Como salvar apresentações em C++
Aspose.Slides FOSS para C++ salva apresentações exclusivamente no formato .pptx usando o formato (s) ̋prs.save(path, SaveFormat::PPTX)⌒’ . Este guia abrange o padrão de guarda correto, a conservação em um caminho diferente e erros comuns relacionados à armazenagem.
Guia passo a passo
- Não, não.
Passo 1: Criar e ligar a 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 .Passo 2: Abra ou crie uma apresentação
Use a alocação de pilha para que o destruidor limpe automaticamente. Chame save() antes que os objetos saibam do escopo.
#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;
}Passo 3: Salvar depois de todas as modificações
Colocar a chamada save() depois de todas as modificações terem sido completadas, mas antes da expiração do âmbito de aplicação da apresentação.
#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;
}Passo 4: Salve para um caminho diferente
Passe um caminho de saída diferente para criar um novo arquivo sem modificar o original:
asf::Presentation prs("template.pptx");
// modify ...
prs.save("customized.pptx", asf::SaveFormat::PPTX);O ficheiro template.pptx não é modificado; o ficheirão ̋customized.PPtx⌒ é criado (ou substituído se já existir).
Passo 5: Verificar a saída
Após a salva, verifique se o ficheiro 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";- Não, não.
Formatos de salva suportados
| 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 |
Apenas PPTX é suportado. Tentando salvar em qualquer outro formato irá lançar uma exceção.
Problemas comuns e soluções
Permissão negada erro de escrita
O arquivo de saída está aberto noutra aplicação (por exemplo, o PowerPoint tem o arquivos abertos). Feche o ficheiro noutras aplicações antes de guardar.
O ficheiro foi criado mas parece vazio ou corrompido .
Assegure prs.save()ヽ é chamado antes que o objeto ⌒Presentation seja destruído. Após a destruição, o estado interno é liberado e as chamadas subsequentes falharão ou produzirão saída inválida.
Excepção no caso de poupança
Isso ocorre quando se tenta salvar um formato diferente do PPTX, ou ao usar uma funcionalidade não suportada (como gráficos ou animações) durante a salvação.
Perguntas Frequentes
Posso salvar no mesmo ficheiro que abri?
Salvar para o mesmo caminho sobrepõe o arquivo original:
asf::Presentation prs("deck.pptx");
// modify ...
prs.save("deck.pptx", asf::SaveFormat::PPTX); // overwrites original
Posso salvar para um buffer de memória em vez de um arquivo?
Salvar diretamente para um std::vector<uint8_t> ou ⌒std::ostream` não é suportado na API atual. Salve para uma ficha temporária e leia os 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);A salvação preserva conteúdo que eu não modifiquei?
Sim. Partes XML desconhecidas do arquivo original são preservadas literalmente. A biblioteca só serializa as partes do modelo de documento que entende e passa por qualquer XML que não reconhece.
Ver também:
- Como criar apresentações em C++
- Como carregar apresentações em C++
- Características de um conjunto geral
- Referência API
- Aspose.Slides para C++ Base de Conhecimentos Empresariais