.NETでPowerPointプレゼンテーションのSmartArtを管理する

概要

SmartArtは、ノード、ノードシェイプ、およびレイアウトで構成されたPowerPointの図です。Aspose.Slides for .NETを使用すると、SmartArtの作成、ノードからテキストの読み取り、レイアウトの変更、非表示ノードの検査、組織図レイアウトの構成、画像組織図の作成が可能です。

SmartArtオブジェクトからテキストを取得する

SmartArtノードは1つ以上のシェイプを含めることができます。表示テキストを取得するには、ISmartArt.AllNodesを反復処理し、続いてISmartArtShape.TextFrameが返すITextFrameを読み取ります。

using (Presentation presentation = new Presentation("sample.pptx"))
{
    ISlide slide = presentation.Slides[0];

    if (slide.Shapes[0] is ISmartArt smartArt)
    {
        foreach (ISmartArtNode node in smartArt.AllNodes)
        {
            foreach (ISmartArtShape nodeShape in node.Shapes)
            {
                if (nodeShape.TextFrame != null)
                {
                    Console.WriteLine(nodeShape.TextFrame.Text);
                }
            }
        }
    }
}

SmartArtオブジェクトのレイアウトタイプを変更する

SmartArtのレイアウトはノードの配置と接続方法を制御します。以下の例では、SmartArtLayoutTypeBasicBlockList 値でSmartArtオブジェクトを作成し、BasicProcess 値に変更してプレゼンテーションを保存します。

using (Presentation presentation = new Presentation())
{
    ISmartArt smartArt = presentation.Slides[0].Shapes.AddSmartArt(
        10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);

    smartArt.Layout = SmartArtLayoutType.BasicProcess;

    presentation.Save("ChangeSmartArtLayout_out.pptx", SaveFormat.Pptx);
}

SmartArtノードが非表示かどうかを確認する

ISmartArtNode.IsHidden は、SmartArtデータモデル内でノードが非表示かどうかを示します。選択されたレイアウトがノードを可視的な図要素として表示しなくても、非表示ノードは構造内に存在することがあります。

以下の例では、SmartArtLayoutTypeRadialCycle 値を使用するSmartArtオブジェクトにノードを追加し、ノードの非表示状態を確認します。

using (Presentation presentation = new Presentation())
{
    ISmartArt smartArt = presentation.Slides[0].Shapes.AddSmartArt(
        10, 10, 400, 300, SmartArtLayoutType.RadialCycle);

    ISmartArtNode node = smartArt.AllNodes.AddNode();
    bool isHidden = node.IsHidden;

    if (isHidden)
    {
        Console.WriteLine("The node is hidden in the SmartArt data model.");
    }

    presentation.Save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat.Pptx);
}

組織図レイアウトの取得または設定

組織図レイアウトを使用するSmartArt図の場合、ISmartArtNode.OrganizationChartLayout は親ノードの下に子ノードが配置される方法を定義します。たとえば、選択されたOrganizationChartLayoutType に応じて、子ノードを左側、右側、または両側から吊り下げるように設定できます。

以下の例では、組織図を作成し、最初のノードのレイアウトを OrganizationChartLayoutTypeLeftHanging 値に設定します。

using (Presentation presentation = new Presentation())
{
    ISmartArt smartArt = presentation.Slides[0].Shapes.AddSmartArt(
        10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);

    ISmartArtNode rootNode = smartArt.Nodes[0];
    rootNode.OrganizationChartLayout = OrganizationChartLayoutType.LeftHanging;

    presentation.Save("OrganizationChartLayout_out.pptx", SaveFormat.Pptx);
}

画像組織図の作成

画像組織図は、画像プレースホルダーを含む階層図用に設計されたSmartArtレイアウトです。スライドにSmartArtオブジェクトを追加する際は、SmartArtLayoutTypePictureOrganizationChart 値を使用します。

using (Presentation presentation = new Presentation())
{
    ISmartArt smartArt = presentation.Slides[0].Shapes.AddSmartArt(
        0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart);

    presentation.Save("PictureOrganizationChart_out.pptx", SaveFormat.Pptx);
}

FAQ

SmartArtはRTL言語のミラーリングや反転をサポートしていますか?

はい。選択されたSmartArtレイアウトが反転をサポートしている場合、IsReversed プロパティは図の方向を左から右へから右から左へ、またはその逆に切り替えます。

SmartArtを同じスライドや別のプレゼンテーションにコピーし、書式設定を保持するにはどうすればよいですか?

SmartArtシェイプShapeCollection.AddClone でクローンするか、SmartArtを含むスライド全体を スライド全体をクローン でクローンできます。どちらの方法もサイズ、位置、書式設定を保持します。

SmartArtをプレビューやウェブエクスポート用にラスタ画像にレンダリングするにはどうすればよいですか?

スライドをレンダリング またはプレゼンテーション全体を PNG または JPEG に変換します。SmartArtはスライドの一部としてレンダリングされます。

スライドに複数のSmartArtオブジェクトがある場合、特定のSmartArtオブジェクトを見つけるにはどうすればよいですか?

SmartArtシェイプに固有の AlternativeText または Name 値を設定し、Slide.Shapes でその値を検索し、対象のシェイプが ISmartArt であることを確認します。