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 imagemExtensãoLeia.Escrever .
PPTX.pptx- Sim , sim .
PPT.pptPlaneado
PPSX.ppsxPlaneado
PPTM.pptmPlaneado
PPSM.ppsmPlaneado
POTX.potxPlaneado
POTM.- Não .Planeado
POT.potPlaneado
PPS.ppsPlaneado
ODP.odpPlaneado
OTP.otpPlaneado
FODP.fodpPlaneado
PDF.pdfPlaneado
XPS.xpsPlaneado
HTML.html (em inglês)Planeado
HTML5.html (em inglês)Planeado
TIFF.- Não .Planeado
GIF. gifPlaneado
SWF.swfPlaneado
MD.mdPlaneado
XML.xmlPlaneado

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: