.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のレイアウトはノードの配置と接続方法を制御します。以下の例では、SmartArtLayoutType の BasicBlockList 値で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データモデル内でノードが非表示かどうかを示します。選択されたレイアウトがノードを可視的な図要素として表示しなくても、非表示ノードは構造内に存在することがあります。
以下の例では、SmartArtLayoutType の RadialCycle 値を使用する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 に応じて、子ノードを左側、右側、または両側から吊り下げるように設定できます。
以下の例では、組織図を作成し、最初のノードのレイアウトを OrganizationChartLayoutType の LeftHanging 値に設定します。
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オブジェクトを追加する際は、SmartArtLayoutType の PictureOrganizationChart 値を使用します。
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 であることを確認します。