はじめに

C++(aspose_slides_foss)用 Aspose.Slides FOSS は、プログラムから PowerPoint プレゼンテーションを作成・操作するための無料のオープンソース C++20 ライブラリです。CMake 3.20 以降を除く外部ランタイム依存性なしで完全にネイティブ C++ で構築されており、Microsoft Office やその他のプロプライエタリソフトウェアを必要とせずに PPTX ファイルをフルコントロールできます。

このライブラリは MIT ライセンスの下でリリースされており、商用プロジェクトでも非商用プロジェクトでも利用できます。公開されている API は Aspose::Slides::Foss 名前空間にあり、プレゼンテーション、スライド、図形、テーブル、テキストフレーム、ドキュメントプロパティ、コメント、PPTX エクスポートを網羅した豊富なオブジェクトモデルを提供します。

この記事では、コア API のインターフェースを解説します。プレゼンテーションの作成、書式設定、保存時に最も頻繁に使用するクラスとメソッドです。


含まれるもの

プレゼンテーションとスライドの管理

Presentation クラスはエントリーポイントです。新しいインスタンスを作成すると、デフォルトのスライドがすぐにコンテンツを配置できる状態になります。スライドは、slides() が返す SlideCollection を通じてアクセスします。この SlideCollection はインデックスアクセス、反復、削除、並べ替えをサポートします。

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

シェイプと AutoShapes

各スライドは、その shapes() アクセサを通じて ShapeCollection を公開します。このコレクションは、さまざまなシェイプタイプを追加するためのファクトリメソッドを提供します:標準的なジオメトリシェイプ(矩形、楕円、三角形)のための add_auto_shape、ラインコネクタのための add_connector、テーブルのための add_table、画像のための add_picture_frame。

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

ShapeCollection は、作成後のシェイプ管理のために size()、remove()、remove_at()、reorder()、index_of()、および clear() をサポートしています。

テキストと段落の書式設定

シェイプは TextFrame を通じてテキストを保持できます。テキストコンテンツを添付するには、AutoShape 上で add_text_frame() を使用するか、text_frame() を介して既存のフレームにアクセスします。テキストは段落に整理され、各段落は一つ以上の部分から構成されます。BasePortionFormat クラスは、太字、斜体、下線の種類、大小文字変換、取り消し線、フォントカラーなどのフォントスタイルプロパティを公開します。

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!"

塗りつぶし、グラデーション、ビジュアルエフェクト

各シェイプは、fill_format() でアクセスできる FillFormat を提供します。set_fill_type() メソッドを使用して、単色塗り、グラデーション塗り、またはパターン塗りを設定できます。グラデーション塗りは GradientFormat オブジェクトを介して構成され、線形角度、グラデーション形状、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);

EffectFormat クラス(effect_format() を介してアクセス)は、グロー、外側のシャドウ、ソフトエッジ効果を追加します。各効果は専用のメソッド(enable_glow_effect()、enable_outer_shadow_effect()、enable_soft_edge_effect())で有効化され、返されるオブジェクトを通じて構成されます。

テーブル

テーブルはシェイプコレクション上の add_table() で作成されます。列幅と行高さはベクトルとして指定します。返される Table オブジェクトは rows() と columns() コレクションを公開し、個々の Cell オブジェクトは 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

ドキュメントプロパティとコメント

DocumentProperties クラスを使用すると、タイトル、作者、サブジェクト、キーワード、カテゴリ、リビジョン番号、タイムスタンプなどのメタデータを設定できます。プレゼンテーションオブジェクトを介してアクセスします。

コメントは CommentAuthorCollection と CommentCollection を通じて管理されます。add_author() で作者を追加し、特定の座標の特定のスライドにコメントを添付します。

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

クイックスタート

ソースからビルド

このライブラリは CMake 3.20+ と C++20 対応のコンパイラが必要です。リポジトリをクローンしてビルドしてください:

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

最小例

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

サポートされているフォーマット

SaveFormat enum はすべてのエクスポート対象を定義します。以下のフォーマットがソースコードで確認されています:

形式拡張子読み取り書き込み
PPTX.pptx–はい
PPT.ppt–Planned
PPSX.ppsx–Planned
PPTM.pptm–Planned
PPSM.ppsm–Planned
POTX.potx–Planned
POTM.potm–Planned
POT.pot–Planned
PPS.pps–Planned
ODP.odp–Planned
OTP.otp–Planned
FODP.fodp–Planned
PDF.pdf–Planned
XPS.xps–Planned
HTML.html–Planned
HTML5.html–Planned
TIFF.tiff–Planned
GIF.gif–Planned
SWF.swf–Planned
MD.md–Planned
XML.xml–Planned

注: 現在、実装されているのは PPTX エクスポートのみです。その他のフォーマット値はこの SaveFormat enum は将来の互換性のために用意されていますが、まだ機能していません。その save() メソッドはフォーマットパラメータに関係なく常に PPTX 出力を生成します。


オープンソースとライセンス

Aspose.Slides FOSS for C++ は MIT ライセンスの下でリリースされています。個人プロジェクト、商用アプリケーション、再配布ライブラリで自由に使用できます。API キー、透かし、使用制限はありません。完全なソースコードは GitHub 上で、https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp にあります。


はじめに

C++ プロジェクトに Aspose.Slides FOSS を統合する準備はできましたか? 主なリソースは以下の通りです:

関連リソース