Introdução
Aspose.Slides FOSS for C++ (aspose_slides_foss) é uma biblioteca C++20 de código aberto gratuita para criar e manipular apresentações PowerPoint programaticamente. Construído inteiramente em C ++ nativo sem dependências externas do tempo de execução além da CMake 3.20+, ele dá aos desenvolvedores controle total sobre arquivos PPTX sem exigir o Microsoft Office ou qualquer software proprietário .
A biblioteca é lançada sob a licença MIT, tornando-a adequada para projetos comerciais e não comerciais. Aspose::Slides::Foss espaço de nomes e fornece um modelo rico objeto que abrange apresentações, slides, formas, tabelas, quadros de texto, propriedades do documento, comentários e exportação PPTX.
Este post percorre a superfície principal da API: as classes e métodos que você usará com mais frequência ao criar, formatar e salvar apresentações.
O que está incluído
Presentação e Gestão de Slides
A Comissão Presentation A criação de uma nova instância dá-lhe um slide padrão que está imediatamente pronto para o conteúdo. Você acessa os slides através do SlideCollection devolvido por: slides(), que suporta acesso indexado, iteração, remoção e reordenação.
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
Presentation pres;
auto& slide = pres.slides()[0]; // first slide
// Work with the slide...
pres.save("output.pptx", SaveFormat::PPTX);
Formas e AutoFormas
Cada diapositiva expõe um ShapeCollection através da sua shapes() A coleção fornece métodos de fábrica para adicionar diferentes tipos de formas: add_auto_shape para formas geométricas normais (retângulos, elipses, triângolos), add_connector para conectores de linha, add_table para mesas, e add_picture_frame para imagens.
auto& slide = pres.slides()[0];
// Add a rectangle
auto& rect = slide.shapes().add_auto_shape(
ShapeType::RECTANGLE, 50, 50, 300, 100);
// Add an ellipse
auto& ellipse = slide.shapes().add_auto_shape(
ShapeType::ELLIPSE, 400, 50, 150, 150);
// Add a connector between shapes
auto& conn = slide.shapes().add_connector(
ShapeType::BENT_CONNECTOR3, 0, 0, 1, 1);
A Comissão ShapeCollection também apoia size(), remove(), remove_at(), reorder(), index_of(), e clear() para gerir formas após a criação.
Formato de texto e parágrafo
As formas podem conter texto via: TextFrame.- Usar . add_text_frame() em um AutoShape para anexar conteúdo de texto, ou acessar o quadro existente através do text_frame().O texto é organizado em parágrafos, cada um dos quais contém uma ou mais partes. BasePortionFormat classe expõe propriedades de estilo da fonte, incluindo negrito, itálico, tipo sublinhado, capitalização, strikethrough e cor da letra.
auto& shape = pres.slides()[0].shapes().add_auto_shape(
ShapeType::RECTANGLE, 50, 50, 300, 100, false);
shape.add_text_frame("Hello, world!");
auto text = shape.text_frame()->text(); // "Hello, world!"
Efeitos visuais, gradientes e preenchimento
Cada forma fornece uma FillFormat acessível através de: fill_format().Pode definir preenchimentos sólidos, preensões de gradiente ou preespreendimentos padrão através do sistema. set_fill_type() O método de preenchimento da gradiente é configurado através do sistema de cálculo. GradientFormat objeto, que suporta ângulos lineares, forma de gradiente e pára-cor via GradientStopCollection.
auto& shape = slide.shapes().add_auto_shape(
ShapeType::RECTANGLE, 50, 50, 300, 150);
shape.fill_format().set_fill_type(FillType::GRADIENT);
auto& gf = shape.fill_format().gradient_format();
gf.set_gradient_shape(GradientShape::LINEAR);
gf.set_linear_gradient_angle(45);
gf.gradient_stops().add(0.0f, Color::blue);
gf.gradient_stops().add(1.0f, Color::red);
A Comissão EffectFormat classe (acessível via effect_format()) acrescenta efeitos de brilho, sombra exterior e borda macia. Cada efeito é habilitado por um método específico (enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()) e configurado através do seu objeto devolvido.
Tabelas de dados
As tabelas são criadas com: add_table() Você fornece largura de coluna e alturas de linha como vetores. O retorno é o seguinte: Table exposição de objetos rows() e a) columns() coleções, e individuais. Cell objetos suportam conteúdo de texto via TextFrame.
std::vector<double> col_widths = {100, 150, 200};
std::vector<double> row_heights = {40, 40, 40};
auto& table = slide.shapes().add_table(
50, 50, col_widths, row_heights);
// table.rows().size() == 3
// table.columns().size() == 3
Propriedades e comentários do documento
A Comissão DocumentProperties class permite que você defina metadados como título, autor, assunto, palavras-chave, categoria, número de revisão e carimbos de tempo. Acesse através do objeto de apresentação.
Os comentários são geridos através de: CommentAuthorCollection e a) CommentCollection.Adicionamos autores com: add_author(), em seguida, anexar comentários a slides específicos em coordenadas específicas.
Presentation pres;
auto& author = pres.comment_authors().add_author("Alice", "A");
auto& slide = pres.slides()[0];
auto& comment = author.comments().add_comment(
"Review note", slide, PointF(2.0f, 3.0f), now);
Começo rápido
Construir a partir da origem
A biblioteca requer CMake 3.20+ e um compilador compatível com C++20. Clone o repositório e construa:
git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Exemplo mínimo
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
// Add a shape with text
auto& shape = slide.shapes().add_auto_shape(
ShapeType::RECTANGLE, 50, 50, 300, 100, false);
shape.add_text_frame("Hello from Aspose.Slides FOSS!");
// Apply a solid fill
shape.fill_format().set_fill_type(FillType::SOLID);
shape.fill_format().solid_fill_color().set_color(Color::blue);
// Save
pres.save("hello.pptx", SaveFormat::PPTX);
return 0;
}
Formatos suportados
A Comissão SaveFormat Enum define todos os objectivos de exportação. Os seguintes formatos são confirmados no código-fonte:
| Formatos de imagem | Extensão | Leia. | Escrever . |
|---|---|---|---|
| PPTX | .pptx | – | - Sim , sim . |
| PPT | .ppt | – | Planeado |
| PPSX | .ppsx | – | Planeado |
| PPTM | .pptm | – | Planeado |
| PPSM | .ppsm | – | Planeado |
| POTX | .potx | – | Planeado |
| POTM | .- Não . | – | Planeado |
| POT | .pot | – | Planeado |
| PPS | .pps | – | Planeado |
| ODP | .odp | – | Planeado |
| OTP | .otp | – | Planeado |
| FODP | .fodp | – | Planeado |
| – | Planeado | ||
| XPS | .xps | – | Planeado |
| HTML | .html (em inglês) | – | Planeado |
| HTML5 | .html (em inglês) | – | Planeado |
| TIFF | .- Não . | – | Planeado |
| GIF | . gif | – | Planeado |
| SWF | .swf | – | Planeado |
| MD | .md | – | Planeado |
| XML | .xml | – | Planeado |
Nota: Atualmente, apenas a exportação PPTX é implementada. Existem outros valores de formato no sistema de formatos para o PC (PPT). SaveFormat A Comissão Europeia tem em conta a existência de um sistema de controlo da compatibilidade com os sistemas de comunicação. save() O método sempre produz a saída PPTX, independentemente do parâmetro de formato.
Open Source & Licenciamento
Aspose.Slides FOSS for C++ is released under the MIT license. You can use it freely in personal projects, commercial applications, and redistributed libraries. There are no API keys, watermarks, or usage limits. The full source code is available on GitHub at https://github.com/aspose-slides-foss/Aspose.Slides - FOSS-for-Cpp.
Começar a Fazer
Pronto para integrar Aspose.Slides FOSS em seu projeto C++? Aqui estão os recursos-chave:
- Documentação: https://docs.aspose.org/slides/cpp/ para guias de desenvolvedores, tutoriais e visões gerais conceituais.
- Base de conhecimento: https://kb.aspose.org/slides/cpp/ para FAQs e artigos de instruções sobre tarefas comuns.
- Referência API: https://reference.aspose.org/slides/cpp/ para a documentação de classe por classe da API pública completa.